Exopc currently boots much like a diskless workstation. Because we do not have crash recovery for local storage, we must "start from scratch" each time the system starts. This means that there is no local root partition. Once the kernel loads, an NFS directory is mounted as the root of the exopc system. Later, a local filesystem may be created and mounted.
The kernel is typically loaded using OpenBSD's boot blocks which means the kernel itself has to be stored in an OpenBSD filesystem. Further, since the kernel itself is fairly minimal it has no concept of filesystems. Thus the kernel cannot load the first program. Instead, the first program is encoded into the kernel. On booting, the kernel loads this first program from the kernel's data segment into a new process and starts the process running. This first process is then responsible for mounting the root partition via NFS and loading any subsequent programs.
This first process needs to know certain information before it may mount the root such as its ip address, the NFS root path and server address, the netmask, which ethernet interface to use, and possibly a gateway address. This information can be provided in three different ways:
When building the kernel you must select which of these three options you wish to use. See the section below on building for more information.
Once the first program has been started and local configuration information gathered, /etc/rc.local is run. This is typically a shell script that starts various system daemons as well as typically building and mounting a local filesystem. The default rc.local should not need to be changed.