You can modify the startup process to improve startup times and
customize the launch order of services and applications that are started before SLM takes over.
The buildfile
When a QNX Neutrino system is built, it uses a
buildfile to generate an IFS. This buildfile specifies:
- the files and commands to include in the IFS
- the startup order for the executables
- the loading options for the files and executables
- the command-line arguments and environment variables for the executables
Overview of the initial startup process
The following illustration shows an overview of the IFS startup process:
Figure 1. The startup sequence for a QNX Neutrino system
Note: The QNX Apps and Media buildfiles include many smaller
.build files
that the
gen-ifs.py utility script combines into an output IFS file. For more
information, see
"IFS files."
After the hardware has initialized, startup
proceeds as follows:
- The processor begins executing at the reset vector. The reset
vector is the address at which the processor begins executing instructions after
the processor's reset line has been activated. On the x86, for example, this is
the address 0xFFFFFFF0.
These instructions can be a BIOS, a
ROM monitor, or an IPL. If they are a BIOS, then the code will find and jump
to a BIOS extension (for example, a network boot ROM or disk controller
ROM), which will load and jump to the next step. If it's a ROM monitor,
typically U-Boot, then the ROM monitor jumps to the IPL code.
- The IPL minimally configures the hardware to create an environment that allows
the startup program microkernel to run, then locates the IFS and
transfers control to the startup program in the image.
The IFS is a file with
a directory structure; it contains the OS, your executables, and any data
files related to your programs.
- The startup program configures the system and transfers control to the
procnto module, which is a combined microkernel and process
manager.
- The procnto module sets up the kernel and runs a boot script
that contains drivers and other processes (which may include those you specify),
and any additional commands for running anything else. The files included will
be those specified by the mkifs buildfile.
When this process is complete, control is handed to the SLM service.