diff options
Diffstat (limited to 'Improve-btrfs-handling-on-os-probing-for-grub2.patch')
-rw-r--r-- | Improve-btrfs-handling-on-os-probing-for-grub2.patch | 94 |
1 files changed, 0 insertions, 94 deletions
diff --git a/Improve-btrfs-handling-on-os-probing-for-grub2.patch b/Improve-btrfs-handling-on-os-probing-for-grub2.patch deleted file mode 100644 index 4e79674f9662..000000000000 --- a/Improve-btrfs-handling-on-os-probing-for-grub2.patch +++ /dev/null @@ -1,94 +0,0 @@ -From: Egbert Eich <eich@suse.de> -Date: Fri May 29 08:55:21 2015 +0200 -Subject: Improve btrfs handling on os-probing for grub2 -Patch-mainline: never - -References: bsc#892364 -Signed-off-by: Egbert Eich <eich@suse.com> - -Currently probing of a grub2 config file is broken if -the root/boot fs is btrfs. This is due to a patch picked -from Fedora which attempts to determine the location of -the kernel and probe for it. -This code has meanwhile changed on Fedora, however the -new version works no better than the old one. -It is possible that this code works under very special -circumstances of the Fedora system, however it is by no -means valid. -Our goal is to -a. determine the location of the kernel in the mounted fs - regardless whether the grub2 config specifies an absolute - or relative path to the kernel file. -b. Prepend the correct prefix if grub2_btrfs expects an - absolute path (either because the current grub2 fs isn't - btrfs or absolute path addressing is explicitely requested). -c. Attempt to handle the location of the kernel file correctly - if this lives on a separate btrfs subvolume. - (Currently this only works if the path to this subvolume is - identical to the fs path). - -Signed-off-by: Egbert Eich <eich@suse.de> - -v2: -a. Fix missing linux16/initrd16 parsing in entry result -b. Fix kernelfile path if separate boot partition on btrfs - -Signed-off-by: Michael Chang <mchang@suse.com> ---- - linux-boot-probes/mounted/common/40grub2 | 16 +++++++++++++--- - 1 file changed, 13 insertions(+), 3 deletions(-) - -Index: os-prober-1.61/linux-boot-probes/mounted/common/40grub2 -=================================================================== ---- os-prober-1.61.orig/linux-boot-probes/mounted/common/40grub2 -+++ os-prober-1.61/linux-boot-probes/mounted/common/40grub2 -@@ -14,9 +14,19 @@ bootsv="$6" - found_item=0 - - entry_result () { -- if [ "x$type" = "xbtrfs" -a "$rootsv" = "$bootsv" ]; then -- # trim off the leading subvol -- kernelfile=$(echo "$kernel" | cut -d '/' -f 2- | cut -d '/' -f 2-) -+ if [ "x$type" = "xbtrfs" ]; then -+ bsv=${bootsv:+/}${bootsv} -+ # if path is not relative to subvolume make it relative -+ kernel=${kernel#${bsv}} -+ kernelfile=$kernel -+ initrd=${initrd#${bsv}} -+ if [ "x$GRUB_FS" != "xbtrfs" -o "x${SUSE_BTRFS_SNAPSHOT_BOOTING}" != "xtrue" ]; then -+ # absolute path needed: prepend subvolume if $kernel isn't empty -+ kernel=${kernel:+${bsv}}${kernel} -+ initrd=${initrd:+${bsv}}${initrd} -+ fi -+ # assumed: rootsv != bootsv if rootsv isn't ancestor of bootsv -+ [ "$partition" != "$bootpart" -o "$rootsv" != "$bootsv" ] && kernelfile="/boot${kernelfile}" - else - kernelfile=$kernel - fi -@@ -81,7 +91,7 @@ parse_grub_menu () { - ignore_item=1 - fi - ;; -- linux|linuxefi) -+ linux|linuxefi|linux16) - # Hack alert: sed off any (hdn,n) but - # assume the kernel is on the same - # partition. -@@ -90,14 +100,14 @@ parse_grub_menu () { - parameters="$@" - # Systems with a separate /boot will not have - # the path to the kernel in grub.cfg. -- if [ "$partition" != "$bootpart" ]; then -+ if [ "$partition" != "$bootpart" -a "$type" != "btrfs" ]; then - kernel="/boot$kernel" - fi - ;; -- initrd|initrdefi) -+ initrd|initrdefi|initrd16) - initrd="$(echo "$2" | sed 's/(.*)//')" - # Initrd same. -- if [ "$partition" != "$bootpart" ]; then -+ if [ "$partition" != "$bootpart" -a "$type" != "btrfs" ]; then - initrd="/boot$initrd" - fi - ;; |