X-Git-Url: https://git.tld-linux.org/?p=packages%2Fgrub2.git;a=blobdiff_plain;f=grub-lvmdevice.patch;h=0f9d87fa8f915f7efbdc1793d1ac4048cb7b0065;hp=8f04e80f4d0794d93c790654ca5a8cd074ed6fc0;hb=3a8be31c695692a1764fe639ae96595d0effa6b0;hpb=71dd2aed5bb2b72c2d2d58235936d03ceec35757 diff --git a/grub-lvmdevice.patch b/grub-lvmdevice.patch index 8f04e80..0f9d87f 100644 --- a/grub-lvmdevice.patch +++ b/grub-lvmdevice.patch @@ -1,6 +1,6 @@ ---- grub-1.97.1/util/grub-mkconfig.in~ 2009-11-17 17:02:16.626243372 +0200 -+++ grub-1.97.1/util/grub-mkconfig.in 2009-11-17 17:02:08.346050859 +0200 -@@ -120,6 +120,27 @@ +--- grub-2.02~beta2/util/grub-mkconfig.in~ 2014-01-13 16:12:41.020705075 +0200 ++++ grub-2.02~beta2/util/grub-mkconfig.in 2014-01-13 16:10:42.000000000 +0200 +@@ -131,6 +131,21 @@ # Device containing our userland. Typically used for root= parameter. GRUB_DEVICE="`${grub_probe} --target=device /`" @@ -11,17 +11,11 @@ +# /dev/mapper/vg--meaw-root -> /dev/vg-meaw/root +case "$GRUB_DEVICE" in + /dev/mapper/*-*) -+ DM_REAL_DEVICE="$(readlink -f "$GRUB_DEVICE")" -+ DM_UUID="$(cat /sys/block/${DM_REAL_DEVICE#/dev/}/dm/uuid)" -+ case "$DM_UUID" in -+ LVM-*) -+ # change "--" to / (as "/" is impossible in LV name) -+ local dev=$(awk -vdev="${GRUB_DEVICE#/dev/mapper/}" 'BEGIN{gsub(/--/, "/", dev); print dev}') -+ local VG=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[1]); print v[1]}') -+ local LV=$(awk -vdev="$dev" 'BEGIN{split(dev, v, "-"); gsub("/", "-", v[2]); print v[2]}') -+ GRUB_DEVICE=/dev/$VG/$LV -+ ;; -+ esac ++ LVM2_LV_NAME='' LVM2_VG_NAME='' ++ eval $(lvs --noheadings --nameprefixes "$GRUB_DEVICE" 2>/dev/null) ++ if [ -n "$LVM2_VG_NAME$LVM2_LV_NAME" ]; then ++ GRUB_DEVICE=/dev/$LVM2_VG_NAME/$LVM2_LV_NAME ++ fi + ;; +esac +