On Mon, Feb 13, 2017 at 1:51 PM, Remy Blank <remy.bl...@pobox.com> wrote: > Daniel Frey wrote on 2017-02-13 17:34: >> On 02/13/2017 03:34 AM, Rich Freeman wrote: >>> Anytime you see something like root=UUID=* that is being handled by an >>> initramfs. And of course a UUID is more reliable than a device name, >>> since the latter can change if you add/remove a device, or maybe even >>> if your firmware is having a bad day. Identifying devices by UUID >>> ensures the right one gets found, assuming it is available. If you're >>> using something like mdadm/lvm there are alternatives to UUID, but the >>> point is the same, you're using a logical identifier that is based on >>> what is stored on the disks and not just what port it is connected to. >>> >> >> Are you sure? When I set up my EFI stub kernel on my Surface tablet, I >> did not use an initramfs and I use PARTUUID= in the kernel built in init >> line and it boots. > > Note that Rich wrote "UUID=", but you used "PARTUUID=". The former > requires an initramfs, the latter doesn't. The details why escape me: if > the filesystem code is built into the kernel (as opposed to a module), I > see no practical reason why the FS UUID couldn't be determined by the > kernel directly.
Determining the FS UUID would require scanning all partitions of all attached disks, and invoking filesystem-specific code to parse out the UUID. Determining the PARTUUID only requires scanning the partition table of each drive, and is only supported for GPT and MBR partition tables. It's a much simpler task.