Difference between revisions of "Bering-uClibc 4.x - User Guide - Appendices - Overview of the Startup Sequence"

From bering-uClibc
Jump to: navigation, search
(Populated the /init Section)
(Expanded structure)
Line 8: Line 8:
 
----
 
----
  
 +
==Step 1: BIOS and Boot Device==
 +
The BIOS is typically configured with an ordered list of devices which are checked in turn until a valid boot device is found.
 +
These devices can be:
 +
* A floppy disk drive.
 +
* A hard disk drive (or a flash drive pretending to be a hard drive).
 +
* An optical disk drive.
 +
* A network interface card containing a network boot ROM.
 +
Any of these can be used to boot [[Bering-uClibc 4.x]].
  
TODO Expand this skeleton. Mention:
+
==Step 2: Boot Loader==
* [SYS|ISO|PXE]LINUX and the relevant configuration file
+
[[Bering-uClibc 4.x]] uses one of [http://syslinux.zytor.com/wiki/index.php/SYSLINUX SYSLINUX], [http://syslinux.zytor.com/wiki/index.php/ISOLINUX ISOLINUX] or [http://syslinux.zytor.com/wiki/index.php/PXELINUX PXELINUX] as the boot loader, depending on the type of boot device being used.
* Linux kernel, kernel arguments and initrd
+
* Bering-uClibc LINUXRC (/init), LEAFCFG, PKGPATH
+
* inittab (especially for serial consoles)
+
* /etc/rc?.d/*
+
  
 +
For the most part these tools behave in the same way - there is a configuration file which defines what to load next:
 +
* <code class="filename">syslinux/syslinux.cfg</code>
 +
* <code class="filename">isolinux/isolinux.cfg</code>
 +
* The equivalent for PXELINUX.
  
==<code class="filename">/init</code>==
+
Each of these file contains lines like the following:
 +
TODO
 +
 
 +
==Step 3: Linux kernel and initrd==
 +
TODO
 +
 
 +
==Step 4: <code class="filename">/init</code>==
 
Shell script <code class="filename">/init</code> (actually a symbolic link to <code class="filename">/var/lib/lrpkg/root.linuxrc</code>) is a critical file with a huge influence on the startup of a [[Bering-uClibc 4.x]] machine.
 
Shell script <code class="filename">/init</code> (actually a symbolic link to <code class="filename">/var/lib/lrpkg/root.linuxrc</code>) is a critical file with a huge influence on the startup of a [[Bering-uClibc 4.x]] machine.
  
Line 47: Line 61:
 
# Uses the "switch_root" utility to start using the "future" root directory in place of the original (initrd) one.
 
# Uses the "switch_root" utility to start using the "future" root directory in place of the original (initrd) one.
  
 +
==Step 5: <code class="filename">inittab</code>==
 +
TODO - mention serial consoles
 +
 +
==Step 6: <code class="filename">/etc/rc?.d/*</code>==
 +
TODO
  
 
----
 
----

Revision as of 18:02, 25 February 2011

Appendices - Overview of the Startup Sequence
Prev Bering-uClibc 4.x - User Guide Next

Step 1: BIOS and Boot Device

The BIOS is typically configured with an ordered list of devices which are checked in turn until a valid boot device is found. These devices can be:

  • A floppy disk drive.
  • A hard disk drive (or a flash drive pretending to be a hard drive).
  • An optical disk drive.
  • A network interface card containing a network boot ROM.

Any of these can be used to boot Bering-uClibc 4.x.

Step 2: Boot Loader

Bering-uClibc 4.x uses one of SYSLINUX, ISOLINUX or PXELINUX as the boot loader, depending on the type of boot device being used.

For the most part these tools behave in the same way - there is a configuration file which defines what to load next:

  • syslinux/syslinux.cfg
  • isolinux/isolinux.cfg
  • The equivalent for PXELINUX.

Each of these file contains lines like the following:

TODO

Step 3: Linux kernel and initrd

TODO

Step 4: /init

Shell script /init (actually a symbolic link to /var/lib/lrpkg/root.linuxrc) is a critical file with a huge influence on the startup of a Bering-uClibc 4.x machine.

In summary, this script:

  1. Creates the /proc/ directory and mounts the "proc" filesystem at that location.
  2. Creates the /sys/ directory and mounts the "sysfs" filesystem at that location.
  3. Creates the symbolic links for all of the commands provided by the "busybox" executable.
  4. Loads all of the kernel Modules listed in file /boot/etc/modules/
    • Currently just isofs and vfat.
    • The modules are loaded using "modprobe" so any pre-requisite modules are loaded too, provided they are present in directory /boot/lib/modules/.
  5. Loads any modules specified in a comma-separated list against kernel command-line argument "MODULES".
    • For example, if the kernel command line includes "MODULES=e100,natsemi" then modules mii and e100 will be loaded, provided they are present in directory /boot/lib/modules/.
    • Again, the kernel Modules are loaded using "modprobe" so any pre-requisite modules are loaded too.
  6. Loads any kernel Modules which are available in directory /boot/lib/modules/ and which implement device drivers for installed hardware.
    • This is done by looking for files called modalias within the directory structure under /sys/devices/, examining the contents of those files and checking for a match in file /lib/modules/`uname -r`/modules.alias. Any kernel Modules which match are loaded.
    • File /lib/modules/`uname -r`/modules.alias is generated by the "depmod" command.
  7. Mounts the disk device specified by kernel command-line argument "LEAFCFG".
  8. "Sources" file leaf.cfg in the current shell, to set variables required by later processing.
  9. Creates a standard set of empty directories
    • For example /mnt/, /var/run/.
  10. Mounts the disk device specified by variable "PKGPATH".
    • This variable is specified in leaf.cfg.
  11. Loads all of the Packages listed against variable "LRP", provided the corresponding .lrp file can be located in "PKGPATH".
    • This variable is specified in leaf.cfg.
  12. Unmounts the devices for "LEAFCFG" and "PKGPATH".
  13. Mounts the "future" root filesystem (type "tmpfs") in a dummy directory.
  14. Mounts separate "tmpfs" file systems under directories /tmp/ and /var/log/.
  15. Recursively copies the files and directories created earlier (e.g. by loading the Packages) across to the "future" root directory.
  16. Uses the "switch_root" utility to start using the "future" root directory in place of the original (initrd) one.

Step 5: inittab

TODO - mention serial consoles

Step 6: /etc/rc?.d/*

TODO


Prev Up Next