summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrandon Philips <brandon@ifup.co>2013-07-22 18:17:02 -0700
committerHarald Hoyer <harald@redhat.com>2013-07-24 10:23:09 +0200
commitf17c5fa573206a5de452cb521d0495a5191d123a (patch)
treef9aea1408c7070c47005f9604eba324fd90a4daa
parent99369bea1ce68263b7c454316e022095210486ae (diff)
downloaddracut-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-xmodules.d/95rootfs-block/module-setup.sh1
-rwxr-xr-xmodules.d/95rootfs-block/parse-block.sh6
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:}"