[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#606806: initramfs-tools: Handling of numeric root= arguments is not udev-friendly

On Sat, 11 Dec 2010 16:34:56 -0500 (EST), Ben Hutchings wrote:
> On Sat, 2010-12-11 at 13:14 -0800, Evan Broder wrote:
>> If you pass a root= argument with a numeric device number
>> (i.e. root=0806), that's currently resolved by running mknod to create
>> a /dev/root device with an appropriate major/minor number and setting
>> ROOT=/dev/root (the parse_numeric function in scripts/functions).
> Maybe this feature should simply be deprecated.  What do you use it for?

Pardon me for butting in here, gentlemen, but I think I know the answer
to Ben's question.  This is done by a number of boot loaders.  I know
lilo does it, and I think zipl (part of s390-tools) does it also.

If, for example, in /etc/lilo.conf one identifies the root device as


then lilo's map installer converts this specification into a four-digit
hexadecimal number, where the first two hex digits are the
major number of the device and the last two hex digits are the minor
number of the device.  Thus, /dev/sda6 becomes 0806, meaning the device
with major number 8 and minor number 6.  At boot time, lilo passes a
kernel command line to the kernel that says

   ... root=806 ...

(the leading zero is suppressed).  Chances are, the user is not directly
specifying the root device as a hexadecimal number anywhere.  The boot
loader makes this substitution.  lilo has done this forever, and zipl
was patterned after lilo.

  .''`.     Stephen Powell    
 : :'  :
 `. `'`

Reply to: