Proposed change: Add drivers to initram for USB storage boot

Post there if you plan to contribute to this SystemCd
Post Reply
Posts: 9
Joined: 09 Apr 2008, 22:55

Proposed change: Add drivers to initram for USB storage boot

Post by argonavis » 19 Sep 2010, 19:49

Issue Type: Proposed enhancement

Version: sysresccd-1.6.0

To complete the boot process, the block device which holds the SquashFS loopdata container sysrcd.dat must be located. This is accomplished by enumerating all eligible devices from /dev, which is populated by udevd and which, in turn, depends on all necessary chipset drivers (kernel modules) to be available. In the case of the Cypress chipset, for example, the appropriate chipset module ums-cypress.ko is not present in either the embedded initram, nor in the external initram.igz. This prevents any boot from an optical drive using this chipset from completing. It seems logical to assume that other USB chipsets are affected, as well.

Include all essential device driver modules into the initram[.igz]. Since these modules are kernel-specific, to keep with the new policy of minimizing the size of the initram.igz, they are probably best placed in the embedded initram.

Tests Performed:
As I obviously have one of the affected USB optical drives, I observed that a standard systemrescuecd-x86-1.6.0.iso image would not successfully boot from my CD drive. When this same distro was booted by PXE, however, the USB drive was properly enumerated. This suggested that while the proper driver was ultimately present, it was not available to the early boot environment. To test a fix, I rolled a customized version of the ISO which included a number of additional kernel modules in the external initram.igz. The modules themselves were copied from the SquashFS filesystem in sysrcd.dat. The external initram.igzwas chosen merely for the sake of simplicity to avoid a complete kernel generation. It should be noted that the embedded initram and the external initram.igz are merged by the kernel in a manner similar to a UnionFS.

This is a list of the additional kernel modules included in the initram.igz of my customized ISO:

Code: Select all

Although not strictly necessary for this test, I included the above modules for each of the following kernels:

Code: Select all

Note that any directories missing in the initram.igz were created as needed. Once this test ISO was regenerated and burned to CD, it was able to find the USB optical drive, mount the SquashFS sysrcd.dat loopback container, and boot normally.

Additional References:
Forum thread: ... =14&t=3154
(Thanks nodeone!)


Site Admin
Posts: 2715
Joined: 17 Jul 2003, 09:44

Re: Proposed change: Add drivers to initram for USB storage

Post by admin » 21 Sep 2010, 06:46

Many thanks for having found which modules were missing from the initramfs.
These modules have been added to the initramfs (for all kernels) in sysresccd-1.6.1-beta004 (online soon).

Post Reply