mkinitrd unification across distributions
 help / color / mirror / Atom feed
* [PATCH] 95rootfs-block: fix PARTUUID parsing
@ 2013-07-23  1:17 Brandon Philips
       [not found] ` <CAEm7KtxJhmN-p0b9UVq162d5=OEV35tVpJ7hLgpiLaOU90So2Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
  0 siblings, 1 reply; 2+ messages in thread
From: Brandon Philips @ 2013-07-23  1:17 UTC (permalink / raw)
  To: initramfs-u79uwXL29TY76Z2rM5mHXA

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.

---
 modules.d/95rootfs-block/module-setup.sh | 1 +
 modules.d/95rootfs-block/parse-block.sh  | 6 +++++-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/modules.d/95rootfs-block/module-setup.sh
b/modules.d/95rootfs-block/module-setup.sh
index 0c7701d..6167beb 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 0a23ac7..1d88ceb 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:}"
--
1.7.12.4

^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2013-07-31 14:20 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-07-23  1:17 [PATCH] 95rootfs-block: fix PARTUUID parsing Brandon Philips
     [not found] ` <CAEm7KtxJhmN-p0b9UVq162d5=OEV35tVpJ7hLgpiLaOU90So2Q-JsoAwUIsXosN+BqQ9rBEUg@public.gmane.org>
2013-07-31 14:20   ` Harald Hoyer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox