Package: grub-installer Version: 1.55 Severity: wishlist Tags: patch This patch adds ZFS support to grub-installer.
Note: findfs change is required because mount output only gives zpool name, not the device associated with it. The other changes should be obvious. -- System Information: Debian Release: squeeze/sid APT prefers testing APT policy: (500, 'testing') Architecture: amd64 (x86_64) Kernel: Linux 2.6.32-5-amd64 (SMP w/2 CPU cores) Locale: LANG=ca_AD.UTF-8, LC_CTYPE=ca_AD.UTF-8 (charmap=UTF-8) Shell: /bin/sh linked to /bin/bash
diff -ur grub-installer-1.55.old/grub-installer grub-installer-1.55/grub-installer --- grub-installer-1.55.old/grub-installer 2010-08-18 16:38:02.000000000 +0200 +++ grub-installer-1.55/grub-installer 2010-09-01 13:47:23.554370178 +0200 @@ -75,10 +75,15 @@ serial="$(get_serial_console)" +grub_probe () { + apt-install grub-common + $chroot $ROOT grub-probe $@ +} + # Usage: convert os_device # Convert an OS device to the corresponding GRUB drive convert () { - tmp_drive="$($chroot $ROOT grub-probe -d -t drive "$1")" || exit $? + tmp_drive="$(grub_probe -d -t drive "$1")" || exit $? if [ "$partition_offset" != 0 ]; then tmp_part="$(echo "$tmp_drive" | sed 's%.*,\([0-9]*\)).*%\1%')" if [ "$tmp_part" ] && [ "$tmp_part" != "$tmp_drive" ]; then @@ -118,7 +123,7 @@ } findfs () { - mount | grep "on $ROOT${1%/} " | tail -n1 | cut -d' ' -f1 + grub_probe -t device $1 } findfstype () { @@ -314,6 +319,10 @@ # Booting from UFS requires grub2 grub_package="grub-pc" ;; + *:zfs:*:*) + # Booting from ZFS requires grub2 + grub_package="grub-pc" + ;; *:ext2fs:*:grub-pc | *:xfs:*:grub-pc) # Booting ext2fs or xfs using grub2 works ;; @@ -658,6 +667,11 @@ db_progress STEP 1 db_progress INFO grub-installer/progress/step_config_loader +if [ "$bootfstype" = "zfs" ]; then + # Required by update-grub on ZFS + cp /boot/zfs/zpool.cache $ROOT/boot/zfs/ +fi + # Delete for idempotency rm -f $ROOT/boot/grub/$menu_file update_grub