Messages in this thread | | | From | skitching@apache ... | Subject | Re: boot device order troubleshooting without an initrd | Date | Mon, 19 Apr 2010 22:20:23 +1200 |
| |
As it happens, I've been looking into this issue recently. [Warning: kernel newbie speaking!]
Without an initrd, the options for the root= kernel parameters are only those supported in init/do_mount.c: 1. root=MAJOR:MINOR 2. root=integer where integer is MAJOR<<n + minor 3 root=/dev/xxx (well, apart fron "mtd" and "ubi" options).
Unfortunately, all of these options are sensitive to hardware changes, ie device enumeration order. So I think that right now the answer to your question is: no, you can't get what you want without an initrd.
And I doubt that changes to the linux device-enumeration code "to be consistent with the BIOS" would be accepted.
Perhaps one thing that could be reasonably easily supported is: root=gptguid where gptguid is the id of a partition on a GPT-formatted disk. With msdos partition tables, partitions do not have unique identifiers; Windows does puts a 32-bit "windows nt disk signature" field in the MBR, which could possibly be used but it isn't really standard. However the GPT format (part of the EFI standard) mandates a unique GUID be assigned to every partition which sounds like an excellent way to specify the location of the root fs.
I *think* that it would be a matter of enhancing the "struct hd_struct" held by "struct gendisk" to store this info when scanning a GPT partition table, then enhancing do_mount.c to check the root param against these values.
See: http://en.wikipedia.org/wiki/GUID_Partition_Table
Thoughts?
If this sounds sane to people, I would be keen to have a go at implementing this. Are there any specific people or lists that should be cc'd when discussing this?
Regards, Simon
| |