In Red Hat 5.1, rc.sysinit implicitly assumes that the system was booted using LILO. It does not fully support LOADLIN. LILO passes the "label" of the booted partition to the kernel in the BOOT_IMAGE= parameter, and /etc/rc.d/rc.sysinit passes this to "/sbin/lilo -I" to determine the name of the booted kernel file. By convention, the file name includes the kernel version number, which matches the subdirectory name in /lib/modules. For example, on my system the kernel is /boot/vmlinuz-2.0.34-0.6 and the modules are in /lib/modules/2.0.34-0.6. In contrast, LOADLIN sets BOOT_IMAGE= to the name of the DOS file containing the kernel image, and in general this name will not mean anything to "/sbin/lilo -I". This keeps rc.sysinint from finding the proper module directory, so needed modules don't get loaded. It is possible to work around this by ensuring that the DOS kernel file name matches the "label" in /etc/lilo.conf whose "image" correctly names the kernel, but I'd prefer to see rc.sysinit be a bit smarter when the result of "/sbin/lilo -I" is null. The following is a description of the symptoms, written before I understood the problem, in case the additional information may be useful. As a concrete example of the above-described workaround, I have gotten things to work properly on the system described below by naming the DOS file containing the kernal "redhat5.1" instead of "vmlinu~1.6". * * * * * I have a Red Hat 5.1 system (2.0.34 kernel) which normally boots using LILO, and works properly. Lately I've tried to get it to boot using loadlin, and cannot get that approach to work properly. I copied the kernel and the initrd image to DOS, along with loadlin.exe, and used loadlin vmlinu~1.6 root=/dev/hdb5 vga=1 initrd=initrd~1.img These are the same kernel and initrd images as LILO is using, they've just been copied to a DOS filesystem. It's also the same root filesystem, so all the configuration files and modules are the same. The significant part of lilo.conf is boot=/dev/hdb5 map=/boot/map install=/boot/boot.b prompt timeout=50 image=/boot/vmlinuz-2.0.34-0.6 label=RedHat5.1 root=/dev/hdb5 initrd=/boot/initrd-2.0.34-0.6.img read-only When I use loadlin, /var/log/messages reports loading 14 symbols from 1 module. When I use LILO it's 29 symbols from 7 modules. Also, when I use loadlin, the networking doesn't start up. In case it matters, the initrd contains the aic7xxx.o (Adaptec 2940) driver, which is only needed to access some vfat partitions. That driver does load, and correctly enumerate the SCSI bus, when booting with either LILO or loadlin.
I have verified this to happen when using the initscripts package that originally shipped with 5.1. But I could not get it to happen after upgrading the initscipts to the newest update from our 5.1 errata section available at http://www.redhat.com/support/docs/rhl/rh51-errata-general.html#initscripts. Try installing this update and see if the problem persists.