Sample Buildfile

The following buildfile shows you how to add the adaptive partitioning module to procnto. It also includes commands that create partitions, start a program in the partition, and set the security level.

Note: In a real buildfile, you can't use a backslash (\) to break a long line into shorter pieces, but we've done that here, just to make the buildfile easier to read.
[compress=3]
[virtual=x86,bios] .bootstrap = {
    startup-bios

    # PATH is the *safe* path for executables (confstr(_CS_PATH...))
    # LD_LIBRARY_PATH is the *safe* path for libraries
    # (confstr(_CS_LIBPATH)). That is, it's the path searched for libs
    # in setuid/setgid executables.

    # The module=aps enables the adaptive partitioning scheduler.

    [module=aps] PATH=/proc/boot:/bin:/usr/bin:/sbin:/usr/sbin \
        LD_LIBRARY_PATH=/proc/boot:/lib:/lib/dll:/usr/lib \
        procnto-smp-instr 
}

# Start-up script

[+script] .script = {
    # Programs require the runtime linker (ldqnx.so) to be at a fixed
    # location. To save memory, make everyone use the libc in the boot
    # image. For speed (fewer symbolic lookups), we point to libc.so.3
    # instead of libc.so.
    procmgr_symlink ../../proc/boot/libc.so.3 /usr/lib/ldqnx.so.2

    # Create some adaptive partitions during system startup:
    #   - IOPKT with a 20% budget
    #   - QCONN with a 20% budget
    # NOTE: To specify a critical budget, use the "aps modify" command
    #       when the filesystem on the disk is available.
    sched_aps IOPKT 20
    sched_aps QCONN 20

    # Start the system logger.
    slogger &
    slogger2 &
    dumper -d /var/dumps

    # Start the PCI server.
    seedres
    pci-bios &
    waitfor /dev/pci

    display_msg .
    display_msg Welcome to QNX Neutrino 6.6.0 on an PC-compatible
    display_msg BIOS system with APS enabled

    # Get the disk up and running.
    devb-eide blk automount=hd0t179:/ &

    waitfor /bin

    # Further commands can now be run from disk.

    # USB services
    display_msg "Start USB services..."
    io-usb -dehci &
    waitfor /dev/io-usb/io-usb 4
    waitfor /dev/io-usb/devu-ehci.so 4

    display_msg "Starting Input services..."
    io-hid -d ps2ser kbd:kbddev:ps2mouse:mousedev \
       -d usb /dev/io-usb/io-usb &
    waitfor /dev/io-hid/io-hid 10

    # Start up some consoles.
    display_msg Starting consoles
    devc-pty &
    devc-con-hid -n4 &
    reopen /dev/con1

    display_msg Starting serial port driver
    devc-ser8250 -b115200 &

    # Start the networking manager in the IOPKT partition. Don't
    # forget devnp.shim.so for compatibility with io-net drivers.
    on -X aps=IOPKT io-pkt-v4-hc -d /lib/dll/devn-pcnet.so &

    # Start some services.
    pipe &
    random -t &

    waitfor /dev/io-net/en0
    dhcp.client -i en0 -m -u -t1 -A 0

    #waitfor /dev/dbgmem

    # Create an additional parition with services:
    aps create -b10 INETD
    on -X aps=INETD inetd &
    on -X aps=QCONN qconn &

    # Specify a critical budget for a partition created during startup:
    aps modify -B 10 IOPKT

    # Use the "recommended" security level for the partitions:
    aps modify -s recommended

    # These env variables are inherited by all the programs that follow:
    SYSNAME=nto
    TERM=qansi

    # Start some extra shells on other consoles:
    reopen /dev/con2
    [+session] sh &
    reopen /dev/con3
    [+session] sh &
    reopen /dev/con4
    [+session] sh &

    # Start the main shell
    reopen /dev/con1
    [+session] sh &
}

[perms=0777] 
# Include the current "libc.so". It will be created as a real file
# using its internal "SONAME", with "libc.so" being a symlink to it.
# The symlink will point to the last "libc.so.*" so if an earlier
# libc is needed (e.g. libc.so.3) add it before the this line.
libc.so
libelfcore.so.1
libslog2.so


#######################################################################
## uncomment for USB driver
#######################################################################
#libusbdi.so
devu-ehci.so

fs-qnx6.so
fs-qnx4.so
cam-disk.so
io-blk.so
libcam.so

#devn-pcnet.so
#devnp-shim.so
#libsocket.so

[data=copy] 

devc-con
pci-bios
seedres
devc-ser8250
dumper
devb-eide
mount
slogger
slogger2
sh
cat
ls
pidin
less
on
qconn