Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

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 <behlendorf1@llnl.gov>
Issue #847
  • Loading branch information...
commit 7eebaff409d969394dccb9b12e30aef466cc04b2 1 parent c171ea7
@Rudd-O Rudd-O authored committed
Showing with 31 additions and 0 deletions.
  1. +31 −0 patches/grub-mkconfig-zfs-support.diff
View
31 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`"
Please sign in to comment.
Something went wrong with that request. Please try again.