Introduction ============ Traditionally, Cobalt servers have had a unique feature - the second stage kernel load. This has been both a curse and a curiosity. The Server would boot from a ROM kernel, perform a "Leap Of Faith" and load a second stage kernel. Unfortunately this setup meant that the server could only boot and operate proprietry software (unless you emulated this process). This made it very difficult to install alternative operating systems on a Cobalt X86 server. Modern installers (Anaconda for example) often require a modern /proc /sys and /dev setup. About cobalt-2.6.1-ext3-1M.rom ============================== The cobalt ROM was originally a 2.2 kernel. The widely adopted 2.10.3-ext3 kernel opened up some possibilities for the old servers. This kernel (2.4.25) made it possible to Leap to a 2.6 kernel (Strongbolt). This however, still had some limitations. About sbinit ============ When starting up, the server boots from the rom. The ROM starts up the 2.6 kernel in the ROM. The 2.6 kernel launches and boot up depending in the following settings: Boot Type: NET/DISK/ROM Root Device: eg: hda1/hda2/hda3/hdc1/hdc2/sda1/sda1 etc. Boot Device: eg: hda1/hda2/hda3/hdc1/hdc2/sda1/sda1 etc. The Strongbolt Boot uses these parameters to pass to the second stage init. The boot device parameter will define where the first stage kernel will look for the sbinit. The root device parameter is passed to the sbinit to instruct the second stage kernel to use that as a root fs. ---------------------------------------------------------------------------------------- Please see the following examples: 1) An example disk boot boot-type=disk boot-device=hda1 root-device=hda2 The RaQ will boot from the ROM kernel and look for sbinit on the first partition of hda. sbinit will start and load the second stage kernel from hda1. The second stage kernel will load and mount the rootfs on the second partition of hda. 2) An example ROM boot boot-type=rom boot-device=hda1 root-device= (is ignored) The RaQ will boot from the ROM kernel and will stay as a single stage kernel loader. The system will boot and mount hda1 as a root file system. 3) A USB Boot boot-type=disk boot-device=sda1 root-device=sda1 The RaQ will boot from the ROM kernel and look for sbinit on the first partition of sda. The kernel is instructed to wait whilst USB bus is initialising devices. The first stage kernel will load the second stage kernel from sda1. The second stage kernel will mount sda1 as the root file system. ------------------------------------------------------------------------------------------- Why do we want to do a 2 stage kernel boot anyway? 1. The ROM kernel is minimal and does not include support for many features. 2. The ROM kernel has no support for additional modules. 3. A second stage kernel can now be a patched "Enterprise" kernel. Why would we want an Enterprise kernel? 1. This offers us the security and features of upstream providers. 2. This offers the same 'ease of management' provided by whitebox machines. 3. This offers more commonality. A more in depth look at sbinit ============================== sbinit is a combination of the following factors: 1. A modified kernel init path 2. A very small linux rootfs (similar to an initrd) 3. The kexec binary.