Bug 836 - rc.sysinit can't find modules when booted using loadlin
Summary: rc.sysinit can't find modules when booted using loadlin
Keywords:
Status: CLOSED CURRENTRELEASE
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: SysVinit
Version: 5.1
Hardware: i386
OS: Linux
low
low
Target Milestone: ---
Assignee: David Lawrence
QA Contact:
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 1999-01-15 00:54 UTC by perry_hutchison
Modified: 2008-05-01 15:37 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 1999-01-18 21:01:01 UTC
Embargoed:


Attachments (Terms of Use)

Description perry_hutchison 1999-01-15 00:54:24 UTC
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.

Comment 1 David Lawrence 1999-01-18 21:01:59 UTC
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.


Note You need to log in before you can comment on or make changes to this bug.