diff options
author | Brandon Philips <brandon@ifup.co> | 2013-07-22 18:17:02 -0700 |
---|---|---|
committer | Harald Hoyer <harald@redhat.com> | 2013-07-24 10:23:09 +0200 |
commit | f17c5fa573206a5de452cb521d0495a5191d123a (patch) | |
tree | f9aea1408c7070c47005f9604eba324fd90a4daa | |
parent | 99369bea1ce68263b7c454316e022095210486ae (diff) | |
download | dracut-f17c5fa573206a5de452cb521d0495a5191d123a.tar.gz dracut-f17c5fa573206a5de452cb521d0495a5191d123a.tar.bz2 dracut-f17c5fa573206a5de452cb521d0495a5191d123a.zip |
95rootfs-block: fix PARTUUID parsing
In the kernel comments PARTUUID is shown using uppercase A-F:
http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/init/do_mounts.c?id=HEAD#n183
However, dracut tries to use the value of PARTUUID directly in
/dev/disks/by-partuuid/ which expects the hex to be lowercase. This will
cause root to never be found, oops!
Fix dracut so it can, like the Kernel, accept either casing.
Untested but I added a hack on my local system that was similar.
-rwxr-xr-x | modules.d/95rootfs-block/module-setup.sh | 1 | ||||
-rwxr-xr-x | modules.d/95rootfs-block/parse-block.sh | 6 |
2 files changed, 6 insertions, 1 deletions
diff --git a/modules.d/95rootfs-block/module-setup.sh b/modules.d/95rootfs-block/module-setup.sh index 0c7701dc..6167beb1 100755 --- a/modules.d/95rootfs-block/module-setup.sh +++ b/modules.d/95rootfs-block/module-setup.sh @@ -31,6 +31,7 @@ depends() { install() { dracut_install umount + dracut_install tr if ! dracut_module_included "systemd"; then inst_hook cmdline 95 "$moddir/parse-block.sh" inst_hook pre-udev 30 "$moddir/block-genrules.sh" diff --git a/modules.d/95rootfs-block/parse-block.sh b/modules.d/95rootfs-block/parse-block.sh index 0a23ac74..1d88ceba 100755 --- a/modules.d/95rootfs-block/parse-block.sh +++ b/modules.d/95rootfs-block/parse-block.sh @@ -10,11 +10,15 @@ case "$root" in rootok=1 ;; block:UUID=*|UUID=*) root="${root#block:}" + root="${root#UUID=}" + root="$(echo $root | tr "[:upper:]" "[:lower:]")" root="block:/dev/disk/by-uuid/${root#UUID=}" rootok=1 ;; block:PARTUUID=*|PARTUUID=*) root="${root#block:}" - root="block:/dev/disk/by-partuuid/${root#PARTUUID=}" + root="${root#PARTUUID=}" + root="$(echo $root | tr "[:upper:]" "[:lower:]")" + root="block:/dev/disk/by-partuuid/${root}" rootok=1 ;; block:PARTLABEL=*|PARTLABEL=*) root="${root#block:}" |