From 7eebaff409d969394dccb9b12e30aef466cc04b2 Mon Sep 17 00:00:00 2001 From: "Manuel Amador (Rudd-O)" Date: Mon, 23 Jul 2012 12:26:17 -0700 Subject: [PATCH] Adding grub2 mkconfig support patch Added simply for convenience until this, or an equivilant, change is merged in the upstream grub2 source. Signed-off-by: Brian Behlendorf Issue #847 --- patches/grub-mkconfig-zfs-support.diff | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 patches/grub-mkconfig-zfs-support.diff diff --git a/patches/grub-mkconfig-zfs-support.diff b/patches/grub-mkconfig-zfs-support.diff new file mode 100644 index 0000000..ab5362c --- /dev/null +++ b/patches/grub-mkconfig-zfs-support.diff @@ -0,0 +1,31 @@ +diff -up ./util/grub-mkconfig.in.original ./util/grub-mkconfig.in +--- ./util/grub-mkconfig.in.original 2012-03-27 13:03:49.475388000 -0700 ++++ ./util/grub-mkconfig.in 2012-03-27 13:06:38.948080000 -0700 +@@ -140,9 +140,24 @@ if test -e ${GRUB_PREFIX}/device.map ; t + ${grub_mkdevicemap} + fi + +-# Device containing our userland. Typically used for root= parameter. +-GRUB_DEVICE="`${grub_probe} --target=device /`" +-GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true ++# Attempt to detect if the root file system is in ZFS first ++unset GRUB_DEVICE ++unset GRUB_DEVICE_BOOT ++getzfsgrubdevice() { ++ mount | while read dev dummy mntpnt dummy2 fstype rest ; do ++ if [ -n "$GRUB_DEVICE" ] ; then break ; fi ++ if [ "$fstype" != "zfs" ] ; then continue ; fi ++ if [ "$mntpnt" != "/" ] ; then continue ; fi ++ GRUB_DEVICE=`fstab-decode echo "$dev"` ++ GRUB_DEVICE="ZFS=$GRUB_DEVICE" ; echo "$GRUB_DEVICE" ; break ++ done ++} ++GRUB_DEVICE=`getzfsgrubdevice` ++if [ -z "$GRUB_DEVICE" ] ; then ++ # Device containing our userland. Typically used for root= parameter. ++ GRUB_DEVICE="`${grub_probe} --target=device /`" ++ GRUB_DEVICE_UUID="`${grub_probe} --device ${GRUB_DEVICE} --target=fs_uuid 2> /dev/null`" || true ++fi + + # Device containing our /boot partition. Usually the same as GRUB_DEVICE. + GRUB_DEVICE_BOOT="`${grub_probe} --target=device /boot`" -- 1.8.3.1