SHA256
1
0
forked from pool/os-prober

Accepting request 309524 from Base:System

1

OBS-URL: https://build.opensuse.org/request/show/309524
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/os-prober?expand=0&rev=31
This commit is contained in:
Dominique Leuenberger 2015-06-03 06:20:03 +00:00 committed by Git OBS Bridge
commit 168cc1b1ad
4 changed files with 76 additions and 15 deletions

View File

@ -0,0 +1,61 @@
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>
---
linux-boot-probes/mounted/common/40grub2 | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/linux-boot-probes/mounted/common/40grub2 b/linux-boot-probes/mounted/common/40grub2
index b548585..ccdbebb 100755
--- a/linux-boot-probes/mounted/common/40grub2
+++ b/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

View File

@ -1,13 +0,0 @@
Index: os-prober/linux-boot-probes/mounted/common/40grub2
===================================================================
--- os-prober.orig/linux-boot-probes/mounted/common/40grub2
+++ os-prober/linux-boot-probes/mounted/common/40grub2
@@ -16,7 +16,7 @@ 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-)
+ kernelfile=$(echo "$kernel" | sed -e "s!^/${rootsv}/!!")
else
kernelfile=$kernel
fi

View File

@ -1,3 +1,16 @@
-------------------------------------------------------------------
Mon Jun 1 07:16:32 UTC 2015 - mchang@suse.com
- Deleted os-prober-btrfsfix-trim-leading-subvol.patch: supersceded
by Improve-btrfs-handling-on-os-probing-for-grub2.patch
-------------------------------------------------------------------
Fri May 29 07:14:40 UTC 2015 - eich@suse.com
- Improve-btrfs-handling-on-os-probing-for-grub2.patch
* Improve btrfs handling on os-probing for grub2 (bsc#892364)
- Replaces: os-prober-btrfsfix-trim-leading-subvol.patch
-------------------------------------------------------------------
Wed May 13 15:45:30 UTC 2015 - mchang@suse.com

View File

@ -1,7 +1,7 @@
#
# spec file for package os-prober
#
# Copyright (c) 2015 SUSE LINUX Products GmbH, Nuernberg, Germany.
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
@ -57,7 +57,7 @@ Patch15: os-prober-call-dmraid-once.patch
# PATCH-FIX-OPENSUSE: fix os-prober misinterprets Windows 8 to be Vista (bsc#910654)
Patch16: os-prober-grep-for-windows-bcd-file.patch
# PATCH-FIX-SLE: fix os-prober fails to detect other SLES12 installation (bsc#892364)
Patch17: os-prober-btrfsfix-trim-leading-subvol.patch
Patch17: Improve-btrfs-handling-on-os-probing-for-grub2.patch
Requires: /bin/grep
Requires: /bin/sed
Requires: /sbin/modprobe