On Jan 19,  6:48am, p...@whooppee.com (Paul Goyette) wrote:
-- Subject: Re: Fixed modular kernel path and different kernels
| 
| Well, yes, that's what I said above regarding modules "pushed from the
| boot loader."   :-)
| 
| It seems to me that we have a similar restriction on where the boot
| loader locates the /boot.cfg file.  It currently comes from boot
| device, regardless of what device will eventually become your root
| device.  (Indeed, if I am not mistaken, the /boot.cfg file is located
| on the _initial_ boot device that was selected by the BIOS, and not
| the device specified in any 'boot xxx' command.)
| 
| Prompting for a module location at boot-loader time means you need to
| specify the path using BIOS devices (hd0, hd1, etc.), and then after
| autoconfigure is done you need to translate BIOS specification into a
| real path, which may or may not be possible (BIOS device might not be
| mounted yet, and might not even be listed in /etc/fstab).
| 
| 
| So, consider the following scenario:
| 
| 1. boot from BIOS device cd0 with 'boot -a'
| 2. when asked, tell it to load modules from hd1a:/my_modules/ since
|     that is where your test modules lie
| 3. the cd9660 file system module is pushed from file
|     hd1a:/my_modules/cd9660/cd9660.kmod
| 4. the kernel continues with autoconfig()
| 5. now it prompts for a root device, and you answer "wd0"
| 
| I assume that you would want subsequent module loads to come from the
| test modules on wd1a:/my_modules/  Unfortunately, we don't know where
| (or even if) wd1a will be mounted, so we cannnot translate the "hd1a:"
| device specification to a file system path.  Even if we did know where
| "wda1" would be mounted, we might attempt to load modules before the
| mount occurs.
| 
| As I see it, we can either
| 
| a) Implement the proposed patch which tells the kernel where to find
|     module which are loaded after the kernel is running, and accept
|     the restriction that any modules "pushed" from the boot loader come
|     from the default location, in /stand/$ARCH/$VERSION/modules/
| 
|    or
| 
| b) Provide a prompt, within the boot-loader itself, on where to find
|     modules being "pushed", in addition to the prompt I proposed which
|     tells the kernel where to find modules loaded after the kernel is
|     running
| 
|    or
| 
| c) Leave things as they are, and not provide any option to specify
|     the module path during boot.  (Note also that the sysctl variable
|     kern.module.path is Read-Only, so you cannot even change the
|     location manually;  changing the sysctl variable to Read-Write
|     could be a security concern...)
| 
| 
| My preference is (a), as it addresses _most_ situations.
| 
| 
| FWIW, the restriction also applies to MD disk images (such as the
| miniroot module);  these are pushed as modules...

I just think it is enough to override one component in the path via
a boot command; like VERSION=x.y.z.new and then both the boot loader
and the kernel can just do what they normally do. It is less general,
but gives enough flexibility for testing.

christos

Reply via email to