[Patch] Fix PXE booting for livecd-iso-to-pxeboot created images

haro at kgt.co.jp haro at kgt.co.jp
Thu Dec 17 02:55:39 UTC 2009


Hello list,

This is my first post here, and if this mail is not correct for this list,
please redirect it where appropriate.

So here goes my problem and a fix....
I've been using /usr/bin/livecd-creator and /usr/bin/livecd-iso-to-pxeboot
to setup my PXE booting environment on Fedora10, with success.

Recently I moved to Fedora12, and PXE booting fails with following error:

  dracut: root was live:/LiveCD.iso. liveroot is now /LiveCD.iso
  dracut: FATAL: Don't know how to handle 'root=live:/LiveCD.iso'
  dracut: Refusing to continue

I've looked into the issue and found that "root=live:/LiveCD.iso" setting
is not correctly handled in /cmdline/30parse-dmsquash-live.sh for the
initrd0.img, or the /boot/initramfs-2.6.31.6-162.fc12.i686.img file.
Also udev handling changes in /init script does not seem to handle the
ISO image settings.

So, I hacked up a patch to fix the issue.
The patch adds new "liveiso:" directive for the root image, and adds
udev rule file accordingly.

Please review and let the fix get into the Fedora repo?

Thanks in advance,
  Haro

diff -ruN initrd0.old/cmdline/30parse-dmsquash-live.sh initrd0/cmdline/30parse-dmsquash-live.sh
--- initrd0.old/cmdline/30parse-dmsquash-live.sh	2009-12-17 10:17:17.249609539 +0900
+++ initrd0/cmdline/30parse-dmsquash-live.sh	2009-12-17 10:17:19.605473872 +0900
@@ -29,6 +29,10 @@
 	root="${root#live:}"
 	root="live:/dev/disk/by-uuid/${root#UUID=}"
         rootok=1 ;;
+    live:/*.[Ii][Ss][Oo]|/*.[Ii][Ss][Oo])
+	root="${root#live:}"
+	root="liveiso:${root}"
+        rootok=1 ;;
     /dev/*)
 	root="live:${root}"
         rootok=1 ;;
diff -ruN initrd0.old/pre-udev/30dmsquash-liveiso-genrules.sh initrd0/pre-udev/30dmsquash-liveiso-genrules.sh
--- initrd0.old/pre-udev/30dmsquash-liveiso-genrules.sh	1970-01-01 09:00:00.000000000 +0900
+++ initrd0/pre-udev/30dmsquash-liveiso-genrules.sh	2009-12-17 10:17:19.612128090 +0900
@@ -0,0 +1,7 @@
+if [ "${root%%:*}" = "liveiso" ]; then
+    (
+     printf 'KERNEL=="loop0", RUN+="/sbin/initqueue --settled --onetime --unique /sbin/dmsquash-live-root `/sbin/losetup -f --show %s`"\n' \
+	  ${root#liveiso:}
+    ) >> /etc/udev/rules.d/99-liveiso-mount.rules
+    echo '[ -e /dev/root ]' > /initqueue-finished/dmsquash.sh
+fi


Thank you,
  Haro
=-----------------------------------------------------------------------
           _ _    Munehiro (haro) Matsuda
 -|- /_\  |_|_|   KGT Inc.
 /|\ |_|  |_|_|




More information about the fedora-list mailing list