So far, the netbsd kernel supported several methods to determine a root disk.
1. A literal device denoted by major/minor number in the kernel configuration. 2. A literal device name in the kernel configuration. The kernel accepts either a driver+unit string (e.g. "sd0") or the string "wedge:name-of-wedge" to look up a wedge by name (*). 3. Interactively query the device name on the console. The kernel accepts the same strings as in 2. 4. Use the boot device and partition number, MD code interprets information from the boot loader to determine a device (driver/unit) and partition number. 5. Use the boot device and an offset/size pair, MD code interprets information from the boot loader to determine a disk device and partition or a wedge that matches the offset/size. I have added another option. The bootloader may pass a string that is interpreted as in 2. or 3. Like the other options, the data is passed in a global variable from MD to MI code. Previously defined variables are: boothowto - boot flags booted_device - the boot disk and unit booted_partition - the boot partition booted_startblk - the offset of the boot partition booted_nblks - the sizee of the boot partition Now there is also: bootspec - the name of the boot device This allows f.e. the evbarm bootloader to specify a root device by (wedge-)name. The x86 multiboot code could also be modified to pass a string to specify the root device by name. Currently it interprets the string as a device name and unit only. (*) The config program currently does not parse wedge names.
