6. Using Bookboot - the Linux OS.img

"Bookboot" can be used to construct OS.img files for the netBook so that linux can be booted directly, avoiding Arlo and EPOC altogether. This approach seems to work fine, and it is the preferred way to boot linux these days. Bookboot works so well, that no additional development seems to be required. Book boot can be downloaded from here: bookboot. There is no web page specifically describing bookboot yet (perhaps it is the one you are reading now), but you can certainly download it. Test OS.img's are now available for downloading; they can boot to an initrd, and even start up the compactflash drive. Bookboot has now been tested on both malaybook and netbook with various memory configurations, and seems to perform quite well in all cases.

There may be a display issue when booting through bookboot: only linux-2.4.26-vrs1-kvd2 and later set the proper registers for the LCD to work.

One advantage of bookboot is that the vfat partition size required for its OS.img file can be rather small at about 2-3 MB (perhaps larger depending on the size of the initrd system within the OS.img file). This means that more of your compactflash disk can be devoted to the linux system disk and the system boots up faster. The OS.img approach does not suffer the same 4 MB limit that Arlo does.

6.1. Making your own OS.img

Bookboot requires as input a working linux kernel (zImage) and (optionally) an initrd.gz. If you want bookboot to boot to a compactflash drive, an initrd.gz with the cardmgr utility and ide-cs module is essential at the moment. Bookboot is used by first editing a file "cfg.pl" to set your own parameters, putting the kernel image to "zImage" and the initrd to "initrd.gz", and then running "make". This runs the perl script "bookglue.pl" that puts all the pieces together and creates the OS.img file.

You need to set the memory parameters. The preferred method is to just use "$memdetect = "auto";", which should autodetect the available memory and send that information to the kernel (see more below). For this to work, your kernel must have been compiled with the default memory option (16MB). You can also set the memory manually by

$memsize = 32; # memory size in MB  (possible values: 32, 48 and 64)

Another configuration is:

$cmdline = "console=ttySA0 video=sa1100 root=/dev/ram0 init=/linuxrc rw"
where the init=/linuxrc will start the linuxrc script on the initrd root filesystem which will transfer the root system over to the compactflash root system. The "console=ttySA0" will make the serial port be the system console - this is optional, and perhaps not desirable for an operational system.

You can also add the option "ramdisk_size=16384" to change the default ramdisk size to 16MB (or what ever size you desire).

The netBook's firmware loads the os.img data into the second 16MB bank, which is probably why 32MB is the smallest amount of memory for any netbook. The os.img file should always be less than 16MB because of the 16MB bank size. Bookboot relies on this behavior by the firmware.

6.2. Memory Configuration

The bookbook + kernel memory configuraton uses the standard taglist kernel interface: it appends ATAG_MEMs to to the existing list. So you shouldn't need a patch, but the kernel needs to be willing to accept the memory info from the taglist. For this, the memory config should _not_ be hardwired into the kernel. When compling a new kernel, the 'default' memory configuration (giving you 16MB unless additional information is supplied) should be selected. The '32MB' and '64MB' kernels have their memory configuration hardwired, and so any bookboot options regarding memory will be ignored.