From c25fcec2d1f3970339d11ae64d11220c8aed3d2f Mon Sep 17 00:00:00 2001 From: Colin Watson Date: Thu, 8 Mar 2012 15:39:05 +0000 Subject: [PATCH] mkconfig_loopback.patch: Use different GRUB loop devices for different OS loop devices (thanks, bcbc; LP: #888281). --- debian/changelog | 2 ++ debian/patches/mkconfig_loopback.patch | 9 +++++---- debian/patches/mkconfig_skip_readme.patch | 2 +- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 7f3891697..7c9d5fdf1 100644 --- a/debian/changelog +++ b/debian/changelog @@ -2,6 +2,8 @@ grub2 (1.99-18) UNRELEASED; urgency=low * Ensure that /sbin and /usr/sbin are in $PATH when running tests (closes: #662916). + * mkconfig_loopback.patch: Use different GRUB loop devices for different + OS loop devices (thanks, bcbc; LP: #888281). -- Colin Watson Wed, 07 Mar 2012 10:06:22 +0000 diff --git a/debian/patches/mkconfig_loopback.patch b/debian/patches/mkconfig_loopback.patch index 0349a2418..1c04063ba 100644 --- a/debian/patches/mkconfig_loopback.patch +++ b/debian/patches/mkconfig_loopback.patch @@ -13,13 +13,14 @@ Index: b/util/grub-mkconfig_lib.in =================================================================== --- a/util/grub-mkconfig_lib.in +++ b/util/grub-mkconfig_lib.in -@@ -105,6 +105,20 @@ +@@ -105,6 +105,21 @@ { device="$1" + loop_file= + case ${device} in + /dev/loop/*|/dev/loop[0-9]) ++ grub_loop_device="${device#/dev/}" + loop_file=`losetup "${device}" | sed -e "s/^[^(]*(\([^)]\+\)).*/\1/"` + case $loop_file in + /dev/*) ;; @@ -34,7 +35,7 @@ Index: b/util/grub-mkconfig_lib.in if dmsetup status $device 2>/dev/null | grep -q 'crypt[[:space:]]$'; then grub_warn \ "$device is a crypto device, which GRUB cannot read directly. Some" \ -@@ -141,6 +155,14 @@ +@@ -141,6 +156,14 @@ if fs_uuid="`"${grub_probe}" --device "${device}" --target=fs_uuid 2> /dev/null`" ; then echo "search --no-floppy --fs-uuid --set=root ${fs_uuid}" fi @@ -42,8 +43,8 @@ Index: b/util/grub-mkconfig_lib.in + if [ "x${loop_file}" != x ]; then + loop_mountpoint="$(awk '"'${loop_file}'" ~ "^"$2 && $2 != "/" { print $2 }' /proc/mounts | tail -n1)" + if [ "x${loop_mountpoint}" != x ]; then -+ echo "loopback loop0 ${loop_file#$loop_mountpoint}" -+ echo "set root=(loop0)" ++ echo "loopback ${grub_loop_device} ${loop_file#$loop_mountpoint}" ++ echo "set root=(${grub_loop_device})" + fi + fi } diff --git a/debian/patches/mkconfig_skip_readme.patch b/debian/patches/mkconfig_skip_readme.patch index c4040d466..e354c2c21 100644 --- a/debian/patches/mkconfig_skip_readme.patch +++ b/debian/patches/mkconfig_skip_readme.patch @@ -9,7 +9,7 @@ Index: b/util/grub-mkconfig_lib.in =================================================================== --- a/util/grub-mkconfig_lib.in +++ b/util/grub-mkconfig_lib.in -@@ -170,7 +170,7 @@ +@@ -171,7 +171,7 @@ if test -f "$1" ; then case "$1" in *.dpkg-*) return 1 ;; # debian dpkg