Accepting request 179592 from home:arvidjaar:grub2-next

Companion to new grub2. Probably should not be accepted standalone,
as it has at least one small patch that depends on new code in grub2.

OBS-URL: https://build.opensuse.org/request/show/179592
OBS-URL: https://build.opensuse.org/package/show/Base:System/os-prober?expand=0&rev=27
This commit is contained in:
Michael Chang 2013-06-19 02:22:25 +00:00 committed by Git OBS Bridge
parent fdc43a782b
commit f4287cc9b1
16 changed files with 605 additions and 376 deletions

71
05efi
View File

@ -1,71 +0,0 @@
#!/bin/sh
# Detects all UEFI bootloaders on EFI System Partition
. /usr/share/os-prober/common.sh
partition="$1"
mpoint="$2"
type="$3"
# This file is for UEFI platform only
if [ ! -d /sys/firmware/efi ]; then
debug "Not on UEFI platform"
exit 1
fi
# Weed out stuff that doesn't apply to us
case "$type" in
vfat) debug "$1 is a FAT32 partition" ;;
msdos) debug "$1 is a FAT16 partition" ;;
fuse|fuseblk) debug "$1 is a FUSE partition" ;; # might be GRUB
*) debug "$1 is $type partition: exiting"; exit 1 ;;
esac
if type udevadm > /dev/null 2>&1; then
udevinfo () {
udevadm info "$@"
}
fi
if type udevinfo > /dev/null 2>&1; then
# Skip virtual devices
if udevinfo -q path -n $partition | grep -q /virtual/; then
debug "$1 is virtual device: exiting"
exit 1
fi
eval "$(udevinfo -q property -n "$partition" | grep -E '^ID_PART_ENTRY_(TYPE|SCHEME)=')"
debug "$partition partition scheme is $ID_PART_ENTRY_SCHEME"
debug "$partition partition type is $ID_PART_ENTRY_TYPE"
if [ -z "$ID_PART_ENTRY_TYPE" -o -z "$ID_PART_ENTRY_SCHEME" -o \
\( "$ID_PART_ENTRY_SCHEME" != gpt -a "$ID_PART_ENTRY_SCHEME" != msdos \) -o \
\( "$ID_PART_ENTRY_SCHEME" = gpt -a "$ID_PART_ENTRY_TYPE" != c12a7328-f81f-11d2-ba4b-00a0c93ec93b \) -o \
\( "$ID_PART_ENTRY_SCHEME" = msdos -a "$ID_PART_ENTRY_TYPE" != 0xef \) ]; then
debug "$partition is not a ESP partition: exiting"
exit 1
fi
else
debug "udevinfo and udevadm missing - cannot check partition type"
fi
efi=$(item_in_dir efi "$mpoint")
if [ -z "$efi" ]; then
debug "$mpoint does not have /EFI directory: exiting"
exit 1
fi
ret=1
for test in /usr/lib/os-probes/mounted/efi/*; do
debug "running subtest $test"
if [ -f "$test" ] && [ -x "$test" ]; then
entry=$("$test" "$mpoint/$efi")
if [ -n "$entry" ]; then
debug "bootloader $entry found by subtest $test"
ret=0
result "${partition}@/$efi/${entry}:efi"
fi
fi
done
exit $ret

View File

@ -1,25 +0,0 @@
#!/bin/sh
# Detects ELILO bootloader on a EFI System Partition
. /usr/share/os-prober/common.sh
efi="$1"
found=
elilo=`find $1 -name "elilo.efi"`
if [ -n "$elilo" ]; then
bdir=`dirname $elilo`
bdir=`basename $bdir`
vendor=$(echo $bdir | sed 's|SuSE|SUSE|')
long="${vendor} ELILO Boot Manager"
short="ELILO"
path=${bdir}/elilo.efi
found=true
fi
if [ -n "$found" ]; then
label="$(count_next_label "$short")"
result "${path}:${long}:${label}"
fi
exit 0

View File

@ -1,28 +0,0 @@
#!/bin/sh
# Detects Microsoft bootloader on a EFI System Partition
. /usr/share/os-prober/common.sh
efi="$1"
found=
for microsoft in $(item_in_dir microsoft "$efi"); do
for boot in $(item_in_dir boot "$efi/$microsoft"); do
bcd=$(item_in_dir bcd "$efi/$microsoft/$boot")
bootmgfw=$(item_in_dir bootmgfw.efi "$efi/$microsoft/$boot")
if [ -n "$bcd" -a -n "$bootmgfw" ]; then
long="Windows Boot Manager"
short=Windows
path="$microsoft/$boot/$bootmgfw"
found=true
break
fi
done
done
if [ -n "$found" ]; then
label="$(count_next_label "$short")"
result "${path}:${long}:${label}"
fi
exit 0

View File

@ -5,123 +5,51 @@ References: bnc#796919
Fix several problems in parsing of grub.cfg by Fix several problems in parsing of grub.cfg by
linux-boot-probes/mounted/40grub2 linux-boot-probes/mounted/40grub2
1. It looked for /boot/grub/grub.cfg only. Make it check for 1. Look for /boot/grub2-efi/grub.cfg as well (openSUSE 12.2)
/boot/grub2-efi/grub.cfg, /boot/grub2/grub.cfg, /boot/grub/grub.cfg in
that order
2. Parsing of menuentry was completely broken. It is (near to) impossible 2. It checked for literal "(on /dev/.*)" to filter out menu entries
to parse full fledged shell quoted strings with a couple of sed expressions.
Replace it with ``eval "set -- $line"'', which should handle quoting
automatically. It still may fail for manually created grub.cfg though.
3. It checked for literal "(on /dev/.*)" to filter out menu entries
added by another os-prober on target system. But grub.cfg now includes added by another os-prober on target system. But grub.cfg now includes
TRANSLATED strings, so this check will fail if grub.cfg was created in TRANSLATED strings, so this check will fail if grub.cfg was created in
non-English locale. Relax check and make it '(.* /dev/.*)'. It should non-English locale. Use menu entry ID to check whether entry was added
work as long as grub.cfg was created by grub-mkconfig. by os-prober (it always starts with osprober-). Suggested by Vladimir
Index: os-prober/linux-boot-probes/mounted/common/40grub2 Serbienko.
Index: os-prober-1.61/linux-boot-probes/mounted/common/40grub2
=================================================================== ===================================================================
--- os-prober.orig/linux-boot-probes/mounted/common/40grub2 --- os-prober-1.61.orig/linux-boot-probes/mounted/common/40grub2
+++ os-prober/linux-boot-probes/mounted/common/40grub2 +++ os-prober-1.61/linux-boot-probes/mounted/common/40grub2
@@ -34,33 +34,43 @@ parse_grub_menu () { @@ -43,6 +43,13 @@ parse_grub_menu () {
title="" menuentry)
ignore_item=0
- while read line; do
+ # grub.cfg is written in shell like language that can contain
+ # arbitrary quoting. We need to extract second word according to
+ # normal quoting rules. Unfortunately, sticking ``eval $line'' for
+ # every line will try to interpret it according to shell
+ # grammar and error out for something as simple as "xxx; then".
+ # So the following is using it only on known cases.
+ # FIXME: it will fail if ``menuentry'' is not the first word on line.
+ # case patterns below include SPACE and TAB.
+ while read -r line; do
debug "parsing: $line"
- set -f
- set -- $line
- set +f
- case "$1" in
- menuentry)
+ line="$(printf "%s" "$line" | sed -e 's/^[[:space:]]*//')"
+ case "$line" in
+ menuentry[" "]*)
entry_result entry_result
- shift 1 shift 1
- # The double-quoted string is the title.
- title="$(echo "$@" | sed -n 's/[^"]*"\(.*\)".*/\1/p' | sed 's/://g')"
- if [ -z "$title" ]; then
- # ... or single-quoted? The
- # unescaping here is odd because the
- # 'set' above has already eaten
- # backslash-escapes.
- title="$(echo "$@" | sed -n "s/[^']*'\(.*\)'.*/\1/p" | sed "s/'''/'/; s/://g")"
- fi
+ set -f
+ eval "set -- $line"
+ set +f
+ title="$2"
if [ -z "$title" ]; then
ignore_item=1
- elif echo "$title" | grep -q '(on /dev/[^)]*)$'; then
+ # Currently GRUB2 puts translated strings + # Currently GRUB2 puts translated strings
+ # in grub.cfg, so checking for verbatim + # in grub.cfg, so checking for verbatim
+ # (on /dev/.*) will fail if target grub.cfg + # (on /dev/.*) will fail if target grub.cfg
+ # was created in non-English locale + # was created in non-English locale. Extract
+ elif echo "$title" | grep -q '(.* /dev/[^)]*)$'; then + # menu entry ID and check if it starts with
+ # "osprober-"
+ id="$(echo "$line" | sed -n 's/^.*[[:space:]]\+\(\$menuentry_id_option\|--id\)[[:space:]]\+\([^[:space:]]\+\).*$/\2/p')"
# The double-quoted string is the title.
# Make sure to look at the text of the line
# before 'set' mangled it.
@@ -58,9 +65,9 @@ parse_grub_menu () {
fi
if [ -z "$title" ]; then
ignore_item=1
- elif echo "$title" | grep -q '(on /dev/[^)]*)$'; then
+ elif echo "$title" | grep -q '(on /dev/[^)]*)$' || echo "$id" | grep -q "^\([\"']\|\)osprober-"; then
log "Skipping entry '$title':" log "Skipping entry '$title':"
log "appears to be an automatic reference taken from another menu.lst" - log "appears to be an automatic reference taken from another menu.lst"
+ log "appears to be an automatic reference taken from another grub.cfg"
ignore_item=1 ignore_item=1
fi fi
;; ;;
- linux) @@ -98,6 +105,9 @@ if [ -e "$mpoint/boot/grub/grub.cfg" ] &
+ linux[" "]*) [ "$mpoint/boot/grub/grub.cfg" -nt "$mpoint/boot/grub/menu.lst" ]); then
+ # And here we do NOT want to strip off debug "parsing grub.cfg"
+ # existing quting, which will be transferred parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub/grub.cfg"
+ # verbatim in new grub.cfg +elif [ -e "$mpoint/boot/grub2-efi/grub.cfg" ]; then
+ set -f + debug "parsing grub.cfg"
+ set -- $line + parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub2-efi/grub.cfg"
+ set +f elif [ -e "$mpoint/boot/grub2/grub.cfg" ]; then
# Hack alert: sed off any (hdn,n) but debug "parsing grub.cfg"
# assume the kernel is on the same parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub2/grub.cfg"
# partition.
@@ -73,7 +83,13 @@ parse_grub_menu () {
kernel="/boot$kernel"
fi
;;
- initrd)
+ initrd[" "]*)
+ # And here we do NOT want to strip off
+ # existing quting, which will be transferred
+ # verbatim in new grub.cfg
+ set -f
+ set -- $line
+ set +f
initrd="$(echo "$2" | sed 's/(.*)//')"
# Initrd same.
if [ "$partition" != "$bootpart" ]; then
@@ -89,11 +105,20 @@ parse_grub_menu () {
entry_result
}
-if [ -e "$mpoint/boot/grub/grub.cfg" ] && \
+grubcfg=
+if [ -e "$mpoint/boot/grub2-efi/grub.cfg" ]; then
+ grubcfg="$mpoint/boot/grub2-efi/grub.cfg"
+elif [ -e "$mpoint/boot/grub2/grub.cfg" ]; then
+ grubcfg="$mpoint/boot/grub2/grub.cfg"
+elif [ -e "$mpoint/boot/grub/grub.cfg" ]; then
+ grubcfg="$mpoint/boot/grub/grub.cfg"
+fi
+
+if [ -n "$grubcfg" ] && \
([ ! -e "$mpoint/boot/grub/menu.lst" ] || \
- [ "$mpoint/boot/grub/grub.cfg" -nt "$mpoint/boot/grub/menu.lst" ]); then
- debug "parsing grub.cfg"
- parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$mpoint/boot/grub/grub.cfg"
+ [ "$grubcfg" -nt "$mpoint/boot/grub/menu.lst" ]); then
+ debug "parsing $grubcfg"
+ parse_grub_menu "$mpoint" "$partition" "$bootpart" < "$grubcfg"
fi
if [ "$found_item" = 0 ]; then

View File

@ -11,55 +11,10 @@ but cannot be performed.
This may likely fix bnc#767272 This may likely fix bnc#767272
Index: os-prober/common.sh Index: os-prober-1.57/os-probes/init/common/10filesystems
=================================================================== ===================================================================
--- os-prober.orig/common.sh --- os-prober-1.57.orig/os-probes/init/common/10filesystems
+++ os-prober/common.sh +++ os-prober-1.57/os-probes/init/common/10filesystems
@@ -259,8 +259,8 @@ linux_mount_boot () {
debug "found boot partition $1 for linux system on $partition, but cannot map to existing device"
else
debug "found boot partition $bootpart for linux system on $partition"
- if which grub-mount >/dev/null 2>&1 && \
- grub-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
+ if which grub2-mount >/dev/null 2>&1 && \
+ grub2-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
mounted=1
else
ro_partition "$boottomnt"
Index: os-prober/linux-boot-probes/common/50mounted-tests
===================================================================
--- os-prober.orig/linux-boot-probes/common/50mounted-tests
+++ os-prober/linux-boot-probes/common/50mounted-tests
@@ -34,8 +34,8 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
-if which grub-mount >/dev/null 2>&1 && \
- grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+if which grub2-mount >/dev/null 2>&1 && \
+ grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
mounted=1
type=fuseblk
else
Index: os-prober/os-probes/common/50mounted-tests
===================================================================
--- os-prober.orig/os-probes/common/50mounted-tests
+++ os-prober/os-probes/common/50mounted-tests
@@ -49,8 +49,8 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
-if which grub-mount >/dev/null 2>&1 && \
- grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+if which grub2-mount >/dev/null 2>&1 && \
+ grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
debug "mounted using GRUB"
mounted=1
type=fuseblk
Index: os-prober/os-probes/init/common/10filesystems
===================================================================
--- os-prober.orig/os-probes/init/common/10filesystems
+++ os-prober/os-probes/init/common/10filesystems
@@ -3,7 +3,7 @@ @@ -3,7 +3,7 @@
set +e # ignore errors from modprobe set +e # ignore errors from modprobe
@ -69,3 +24,58 @@ Index: os-prober/os-probes/init/common/10filesystems
FILESYSTEMS="$FILESYSTEMS fuse" FILESYSTEMS="$FILESYSTEMS fuse"
# The Ubuntu kernel udebs put a number of filesystem modules in # The Ubuntu kernel udebs put a number of filesystem modules in
# fs-{core,secondary}-modules. It's fairly cheap to check for these too. # fs-{core,secondary}-modules. It's fairly cheap to check for these too.
Index: os-prober-1.57/common.sh
===================================================================
--- os-prober-1.57.orig/common.sh
+++ os-prober-1.57/common.sh
@@ -259,8 +259,8 @@ linux_mount_boot () {
debug "found boot partition $1 for linux system on $partition, but cannot map to existing device"
else
debug "found boot partition $bootpart for linux system on $partition"
- if type grub-mount >/dev/null 2>&1 && \
- grub-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
+ if type grub2-mount >/dev/null 2>&1 && \
+ grub2-mount "$boottomnt" "$tmpmnt/boot" 2>/dev/null; then
mounted=1
else
ro_partition "$boottomnt"
Index: os-prober-1.57/linux-boot-probes/common/50mounted-tests
===================================================================
--- os-prober-1.57.orig/linux-boot-probes/common/50mounted-tests
+++ os-prober-1.57/linux-boot-probes/common/50mounted-tests
@@ -34,11 +34,11 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
-if type grub-mount >/dev/null 2>&1 && \
- type grub-probe >/dev/null 2>&1 && \
- grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+if type grub2-mount >/dev/null 2>&1 && \
+ type grub2-probe >/dev/null 2>&1 && \
+ grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
mounted=1
- type="$(grub-probe -d "$partition" -t fs)"
+ type="$(grub2-probe -d "$partition" -t fs)"
[ "$type" ] || type=fuseblk
else
ro_partition "$partition"
Index: os-prober-1.57/os-probes/common/50mounted-tests
===================================================================
--- os-prober-1.57.orig/os-probes/common/50mounted-tests
+++ os-prober-1.57/os-probes/common/50mounted-tests
@@ -49,11 +49,11 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
-if type grub-mount >/dev/null 2>&1 && \
- type grub-probe >/dev/null 2>&1 && \
- grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
+if type grub2-mount >/dev/null 2>&1 && \
+ type grub2-probe >/dev/null 2>&1 && \
+ grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
mounted=1
- type="$(grub-probe -d "$partition" -t fs)" || true
+ type="$(grub2-probe -d "$partition" -t fs)" || true
if [ "$type" ]; then
debug "mounted using GRUB $type filesystem driver"
else

View File

@ -0,0 +1,34 @@
From: Andrey Borzenkov <arvidjaar@gmail.com>
Subject: keep UEFI scripts the same as they were in openSUSE
Small cosmetic changes to ensure UEFI scripts keep content
after upstream merged (slightly outdated) version of them.
- retain ELILO vendor prefix in case someone is really using it
- comment in 05efi is obviously wrong
Index: os-prober-1.61/os-probes/mounted/x86/efi/10elilo
===================================================================
--- os-prober-1.61.orig/os-probes/mounted/x86/efi/10elilo
+++ os-prober-1.61/os-probes/mounted/x86/efi/10elilo
@@ -11,7 +11,8 @@ elilo=`find $1 -name "elilo.efi"`
if [ -n "$elilo" ]; then
bdir=`dirname $elilo`
bdir=`basename $bdir`
- long="ELILO Boot Manager"
+ vendor=$(echo $bdir | sed 's|SuSE|SUSE|')
+ long="${vendor} ELILO Boot Manager"
short="ELILO"
path=${bdir}/elilo.efi
found=true
Index: os-prober-1.61/os-probes/mounted/x86/05efi
===================================================================
--- os-prober-1.61.orig/os-probes/mounted/x86/05efi
+++ os-prober-1.61/os-probes/mounted/x86/05efi
@@ -1,5 +1,5 @@
#!/bin/sh
-# Detects all Microsoft OSes on a collection of partitions.
+# Detects all UEFI bootloaders on EFI System Partition
. /usr/share/os-prober/common.sh

View File

@ -1,8 +1,8 @@
Index: os-prober/os-probes/mounted/common/90linux-distro Index: os-prober-1.57/os-probes/mounted/common/90linux-distro
=================================================================== ===================================================================
--- os-prober.orig/os-probes/mounted/common/90linux-distro --- os-prober-1.57.orig/os-probes/mounted/common/90linux-distro
+++ os-prober/os-probes/mounted/common/90linux-distro +++ os-prober-1.57/os-probes/mounted/common/90linux-distro
@@ -80,7 +80,7 @@ if ls "$dir"/lib*/ld*.so* >/dev/null 2>/ @@ -84,7 +84,7 @@ if (ls "$dir"/lib*/ld*.so* || ls "$dir"/
short="RedHat" short="RedHat"
long="$(cat "$dir/etc/redhat-release")" long="$(cat "$dir/etc/redhat-release")"
elif [ -e "$dir/etc/SuSE-release" ]; then elif [ -e "$dir/etc/SuSE-release" ]; then

418
os-prober-btrfsfix.patch Normal file
View File

@ -0,0 +1,418 @@
Index: os-prober-1.57/common.sh
===================================================================
--- os-prober-1.57.orig/common.sh
+++ os-prober-1.57/common.sh
@@ -125,6 +125,7 @@ parse_proc_mounts () {
done
}
+# add forth parameter to pickup btrfs subvol info
parsefstab () {
while read -r line; do
case "$line" in
@@ -135,12 +136,22 @@ parsefstab () {
set -f
set -- $line
set +f
- printf '%s %s %s\n' "$1" "$2" "$3"
+ printf '%s %s %s %s\n' "$1" "$2" "$3" "$4"
;;
esac
done
}
+#check_btrfs_mounted $bootsv $bootuuid)
+check_btrfs_mounted () {
+ bootsv="$1"
+ bootuuid="$2"
+ bootdev=$(blkid | grep "$bootuuid" | cut -d ':' -f 1)
+ bindfrom=$(grep " btrfs " /proc/self/mountinfo |
+ grep " $bootdev " | grep " /$bootsv " | cut -d ' ' -f 5)
+ printf "%s" "$bindfrom"
+}
+
unescape_mount () {
printf %s "$1" | \
sed 's/\\011/ /g; s/\\012/\n/g; s/\\040/ /g; s/\\134/\\/g'
Index: os-prober-1.57/linux-boot-prober
===================================================================
--- os-prober-1.57.orig/linux-boot-prober
+++ os-prober-1.57/linux-boot-prober
@@ -5,16 +5,143 @@ set -e
newns "$@"
require_tmpdir
+ERR="n"
+
+tmpmnt=/var/lib/os-prober/mount
+if [ ! -d "$tmpmnt" ]; then
+ mkdir "$tmpmnt"
+fi
+
+mounted=
+bootmnt=
+bootsv=
+bootuuid=
grep "^/dev/" /proc/mounts | parse_proc_mounts >"$OS_PROBER_TMP/mounted-map" || true
-partition="$1"
+if [ -z "$1" ]; then
+ ERR=y
+elif [ "$1" = btrfs -a -z "$2" ]; then
+ ERR=y
+elif [ "$1" = btrfs -a -z "$3" ]; then
+ ERR=y
+elif [ "$1" = btrfs ]; then
+ type=btrfs
+ echo "$2" | grep -q "^UUID=" || ERR=y
+ echo "$3" | grep -q "^subvol=" || ERR=y
+ export "$2"
+ export "$3"
+ partition=$(blkid | grep "$UUID" | cut -d ':' -f 1 | tr '\n' ' ' | cut -d ' ' -f 1)
+ debug "btrfs: partition=$partition, UUID=$UUID, subvol=$subvol"
+else
+ partition="$1"
+ type=other
+fi
-if [ -z "$partition" ]; then
+if [ "x$ERR" != xn ]; then
echo "usage: linux-boot-prober partition" >&2
+ echo " linux-boot-prober partition | btrfs UUID=<> subvol=<>" >&2
exit 1
fi
+if [ "$type" = btrfs ]; then
+ # handle all of the btrfs stuff here
+ if [ ! -e "/proc/self/mountinfo" ]; then
+ warn "/proc/self/mountinfo does not exist, exiting"
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ mpoint=$(grep "btrfs" /proc/self/mountinfo | grep " /$subvol " | grep " $partition " | cut -d ' ' -f 5)
+ if [ "$mpoint" = "/" ]; then
+ warn "specifying active root not valid, exiting"
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ if [ "$mpoint" = "$tmpmnt" ]; then
+ warn "btrfs subvol=$subvool, UUID=$UUID, already mounted on $tmpmnt **ERROR**"
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ if [ -z "$mpoint" ]; then
+ # mount the btrfs root
+ if ! mount -o subvol=$subvol -t btrfs -U $UUID "$tmpmnt" 2>/dev/null; then
+ warn "error mounting btrfs subvol=$subvol UUID=$UUID"
+ umount "$tmpmnt/boot" 2>/dev/null
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ else
+ # bind-mount
+ if ! mount -o bind "$mpoint" "$tmpmnt" 2>/dev/null; then
+ warn "error mounting btrfs bindfrom=$mpoint subvol=$subvol UUID=$UUID"
+ umount "$tmpmnt/boot" 2>/dev/null
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ fi
+ debug "mounted btrfs $partition, subvol=$subvol on $tmpmnt"
+ if [ ! -e "$tmpmnt/etc/fstab" ]; then
+ warn "btrfs subvol=$subvol not root"
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ bootmnt=$(parsefstab < "$tmpmnt/etc/fstab" | grep " /boot ") || true
+ if [ -z "$bootmnt" ]; then
+ # /boot is part of the root
+ bootpart="$partition"
+ bootsv="$subvol"
+ elif echo "$bootmnt" | cut -d ' ' -f 3 | grep -q "btrfs"; then
+ # separate btrfs /boot subvolume
+ bootsv=$(echo "$bootmnt" | cut -d ' ' -f 4 | grep "^subvol=" | sed "s/subvol=//" )
+ bootuuid=$(echo "$bootmnt" | cut -d ' ' -f 1 | grep "^UUID=" | sed "s/UUID=//" )
+ debug "mounting btrfs $tmpmnt/boot UUID=$bootuuid subvol=$bootsv"
+ bindfrom=$(check_btrfs_mounted $bootsv $bootuuid)
+ if [ -n "$bindfrom" ]; then
+ # already mounted some place
+ if ! mount -o bind $bindfrom "$tmpmnt/boot" 2>/dev/null; then
+ warn "error bind mounting btrfs boot subvol=$bootsv, from=$bindfrom"
+ umount "$tmpmnt/boot" 2>/dev/null
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ elif ! mount -o subvol=$bootsv -t btrfs -U $bootuuid "$tmpmnt/boot" 2>/dev/null; then
+ warn "error mounting btrfs boot partition subvol=$bootsv, UUID=$bootuuid"
+ umount "$tmpmnt/boot" 2>/dev/null
+ umount "$tmpmnt" 2>/dev/null
+ rmdir "$tmpmnt" 2>/dev/null
+ exit 1
+ fi
+ bootpart=$(grep " btrfs " /proc/self/mountinfo | grep " /$bootsv " | cut -d ' ' -f 10)
+ else
+ # non-btrfs partition or logical volume
+ linux_mount_boot $partition $tmpmnt
+ bootpart="${mountboot%% *}"
+ bootsv=
+ fi
+
+ test="/usr/lib/linux-boot-probes/mounted/40grub2"
+ if [ -f $test ] && [ -x $test ]; then
+ debug "running $test $partition $bootpart $tmpmnt $type $subvol $bootsv"
+ if $test "$partition" "$bootpart" "$tmpmnt" "$type" "$subvol" "$bootsv"; then
+ debug "$test succeeded"
+ fi
+ fi
+ umount "$tmpmnt/boot" 2>/dev/null || true
+ if ! umount "$tmpmnt" 2>/dev/null; then
+ warn "problem umount $tmpmnt"
+ fi
+ rmdir "$tmpmnt" 2>/dev/null || true
+
+ exit 0
+fi
+
if ! mapped="$(mapdevfs "$partition")"; then
log "Device '$partition' does not exist; skipping"
continue
Index: os-prober-1.57/linux-boot-probes/mounted/common/40grub2
===================================================================
--- os-prober-1.57.orig/linux-boot-probes/mounted/common/40grub2
+++ os-prober-1.57/linux-boot-probes/mounted/common/40grub2
@@ -2,17 +2,27 @@
. /usr/share/os-prober/common.sh
set -e
+# add support for btrfs with no separate /boot
+# that is, rootsv = bootsv
partition="$1"
bootpart="$2"
mpoint="$3"
type="$4"
+rootsv="$5"
+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-)
+ else
+ kernelfile=$kernel
+ fi
if [ "$ignore_item" = 0 ] && \
[ -n "$kernel" ] && \
- [ -e "$mpoint/$kernel" ]; then
+ [ -e "$mpoint/$kernelfile" ]; then
result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
found_item=1
fi
Index: os-prober-1.57/os-prober
===================================================================
--- os-prober-1.57.orig/os-prober
+++ os-prober-1.57/os-prober
@@ -67,6 +67,9 @@ partitions () {
echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name |
sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
fi
+
+ # now lets make sure we got all of the btrfs partitions and disks
+ blkid | grep btrfs | cut -d ':' -f 1
}
parse_proc_swaps () {
@@ -125,6 +128,8 @@ if [ -f /proc/mdstat ] ; then
grep "^md" /proc/mdstat | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
fi
+: >"$OS_PROBER_TMP/btrfs-vols"
+
for partition in $(partitions); do
if ! mapped="$(mapdevfs "$partition")"; then
log "Device '$partition' does not exist; skipping"
@@ -143,7 +148,26 @@ for partition in $(partitions); do
continue
fi
- if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map" ; then
+ # do btrfs processing here; both mounted and unmounted will
+ # be handled by 50mounted-tests so we can do a subvol only once.
+ type=$(blkid -o value -s TYPE $mapped || true)
+ if [ "$type" = btrfs ]; then
+ uuid=$(blkid -o value -s UUID $mapped)
+ if grep -q "^$uuid" "$OS_PROBER_TMP/btrfs-vols" ; then
+ continue
+ fi
+ debug "btrfs volume uuid=$uuid partition=$partition"
+ echo "$uuid" >>"$OS_PROBER_TMP/btrfs-vols"
+ test="/usr/lib/os-probes/50mounted-tests"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on btrfs $partition"
+ if "$test" btrfs "$uuid" "$partition"; then
+ debug "os detected by $test"
+ continue
+ fi
+ fi
+
+ elif ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map" ; then
for test in /usr/lib/os-probes/*; do
if [ -f "$test" ] && [ -x "$test" ]; then
debug "running $test on $partition"
Index: os-prober-1.57/os-probes/common/50mounted-tests
===================================================================
--- os-prober-1.57.orig/os-probes/common/50mounted-tests
+++ os-prober-1.57/os-probes/common/50mounted-tests
@@ -5,7 +5,19 @@ partition="$1"
. /usr/share/os-prober/common.sh
-types="$(fs_type "$partition")" || types=NOT-DETECTED
+if [ "x$1" = xbtrfs ]; then
+ types=btrfs
+ if [ -z "$2" -o -z "$3" ]; then
+ debug "missing btrfs parameters, exiting"
+ exit 1
+ fi
+ UUID="$2"
+ BTRFSDEV="$3"
+else
+ partition="$1"
+ types="$(fs_type "$partition")" || types=NOT-DETECTED
+fi
+
if [ "$types" = NOT-DETECTED ]; then
debug "$1 type not recognised; skipping"
exit 0
@@ -49,6 +61,76 @@ if [ ! -d "$tmpmnt" ]; then
fi
mounted=
+
+# all btrfs processing here. Handle both unmounted and
+# mounted subvolumes.
+if [ "$types" = btrfs ]; then
+ partition="$BTRFSDEV"
+ debug "begin btrfs processing for $UUID"
+ # note that the btrfs volume must not be mounted ro
+ if mount -t btrfs -U "$UUID" "$tmpmnt" 2>/dev/null; then
+ debug "btrfs volume $UUID mounted"
+ else
+ warn "cannot mount btrfs volume $UUID, exiting"
+ rmdir "$tmpmnt" || true
+ exit 1
+ fi
+ # besides regular subvols, get ro and snapshot so thet can be excluded
+ subvols=$(btrfs subvolume list "$tmpmnt" | cut -d ' ' -f 9)
+ rosubvols=$(btrfs subvolume list -r "$tmpmnt" | cut -d ' ' -f 9)
+ sssubvols=$(btrfs subvolume list -s "$tmpmnt" | cut -d ' ' -f 9)
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount btrfs volume on $tmpmnt"
+ rmdir "$tmpmnt" || true
+ exit 1
+ fi
+ if [ -z "$subvols" ]; then
+ debug "no subvols found on btrfs volume $UUID"
+ exit 1
+ fi
+ found=
+ for subvol in $subvols; do
+ debug "begin btrfs processing for $UUID subvol=$subvol"
+ if echo "$rosubvols" | grep -q -x "$subvol"; then
+ continue
+ fi
+ if echo "$sssubvols" | grep -q -x "$subvol"; then
+ continue
+ fi
+ mounted=
+ mpoint="$(grep btrfs /proc/self/mountinfo | grep "$partition " | grep "/$subvol " | cut -d ' ' -f 5)"
+ if [ -n "$mpoint" ]; then
+ if [ "x$mpoint" = "x/" ]; then
+ continue # this is the root for the running system
+ fi
+ mounted=1
+ else
+ # again, do not mount btrfs ro
+ mount -t btrfs -o subvol="$subvol" -U "$UUID" "$tmpmnt"
+ mpoint="$tmpmnt"
+ fi
+ test="/usr/lib/os-probes/mounted/90linux-distro"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running subtest $test"
+ if "$test" "$partition" "$mpoint" btrfs "UUID=$UUID" "subvol=$subvol"; then
+ debug "os found by subtest $test on subvol $subvol"
+ found=1
+ fi
+ fi
+ if [ -z "$mounted" ]; then
+ if ! umount "$tmpmnt"; then
+ warn "failed to umount $tmpmnt"
+ fi
+ fi
+ done
+ rmdir "$tmpmnt" || true
+ if [ "$found" ]; then
+ exit 0
+ else
+ exit 1
+ fi
+fi
+
if type grub2-mount >/dev/null 2>&1 && \
type grub2-probe >/dev/null 2>&1 && \
grub2-mount "$partition" "$tmpmnt" 2>/dev/null; then
Index: os-prober-1.57/os-probes/mounted/common/90linux-distro
===================================================================
--- os-prober-1.57.orig/os-probes/mounted/common/90linux-distro
+++ os-prober-1.57/os-probes/mounted/common/90linux-distro
@@ -7,6 +7,8 @@ set -e
partition="$1"
dir="$2"
type="$3"
+uuid="$4"
+subvol="$5"
# This test is inaccurate, but given separate / and /boot partitions and the
# fact that only some architectures have ld-linux.so, I can't see anything
@@ -131,7 +133,11 @@ if (ls "$dir"/lib*/ld*.so* || ls "$dir"/
fi
label="$(count_next_label "$short")"
- result "$partition:$long:$label:linux"
+ if [ "x$type" = "xbtrfs" -a "x$uuid" != "x" -a "x$subvol" != "x" ]; then
+ result "$partition:$long:$label:linux:$type:$uuid:$subvol"
+ else
+ result "$partition:$long:$label:linux"
+ fi
exit 0
else
exit 1
Index: os-prober-1.57/README.btrfs
===================================================================
--- /dev/null
+++ os-prober-1.57/README.btrfs
@@ -0,0 +1,15 @@
+BTRFS is a new filesystem which combines the filesystem with logical volume
+management (subvolumes). For further information, see:
+ https://btrfs.wiki.kernel.org/index.php/Main_Page
+ https://btrfs.wiki.kernel.org/index.php/FAQ
+
+In order to support BTRFS, a number of changes were necessary to os-prober,
+os-probes/common/50mounted-tests, os-probes/mounted/common/90linux-distro,
+linux-boot-prober, and linux-boot-probes/common/50mounted-tests.
+
+The biggest impact will be to grub2 where there is additional information
+output by os-prober and where, if a BTRFS subvolume is being used for root,
+the parameters for linux-boot-prober have changed.
+
+Sun 30 Dec 2012 11:49:52 AM EST Gene Czarcinski <gene@czarc.net>
+

View File

@ -5,25 +5,25 @@ Reference: bnc#810912
Recognize initrdefi and linuxefi too. Whether linux/initrd or Recognize initrdefi and linuxefi too. Whether linux/initrd or
linuxefi/initrdefi will be emitted is controlled by SECURE_BOOT linuxefi/initrdefi will be emitted is controlled by SECURE_BOOT
setting in /etc/sysconfig/bootloader. setting in /etc/sysconfig/bootloader.
Index: os-prober/linux-boot-probes/mounted/common/40grub2 Index: os-prober-1.61/linux-boot-probes/mounted/common/40grub2
=================================================================== ===================================================================
--- os-prober.orig/linux-boot-probes/mounted/common/40grub2 --- os-prober-1.61.orig/linux-boot-probes/mounted/common/40grub2
+++ os-prober/linux-boot-probes/mounted/common/40grub2 +++ os-prober-1.61/linux-boot-probes/mounted/common/40grub2
@@ -64,7 +64,7 @@ parse_grub_menu () { @@ -71,7 +71,7 @@ parse_grub_menu () {
ignore_item=1 ignore_item=1
fi fi
;; ;;
- linux[" "]*) - linux)
+ linux[" "]*|linuxefi[" "]*) + linux|linuxefi)
# And here we do NOT want to strip off # Hack alert: sed off any (hdn,n) but
# existing quting, which will be transferred # assume the kernel is on the same
# verbatim in new grub.cfg # partition.
@@ -83,7 +83,7 @@ parse_grub_menu () { @@ -84,7 +84,7 @@ parse_grub_menu () {
kernel="/boot$kernel" kernel="/boot$kernel"
fi fi
;; ;;
- initrd[" "]*) - initrd)
+ initrd[" "]*|initrdefi[" "]*) + initrd|initrdefi)
# And here we do NOT want to strip off initrd="$(echo "$2" | sed 's/(.*)//')"
# existing quting, which will be transferred # Initrd same.
# verbatim in new grub.cfg if [ "$partition" != "$bootpart" ]; then

View File

@ -1,7 +1,7 @@
Index: os-prober/os-prober Index: os-prober-1.61/os-prober
=================================================================== ===================================================================
--- os-prober.orig/os-prober --- os-prober-1.61.orig/os-prober
+++ os-prober/os-prober +++ os-prober-1.61/os-prober
@@ -39,6 +39,11 @@ partitions () { @@ -39,6 +39,11 @@ partitions () {
fi fi
done done
@ -22,5 +22,5 @@ Index: os-prober/os-prober
+ # Only add MD slaves to the list + # Only add MD slaves to the list
+ while read md line; do + while read md line; do
for word in $line; do for word in $line; do
dev="${word%%[*}" dev="${word%%\[*}"
# TODO: factor this out to something in di-utils if # TODO: factor this out to something in di-utils if

View File

@ -1,31 +0,0 @@
From: Andrey Borzenkov <arvidjaar@gmail.com>
Date: Fri Jan 4 09:46:56 UTC 2013
Subject: skip legacy Microsoft bootloader on UEFI system
References: bnc#775610
Patch-Mainline: no
Sometimes Windows installs both legacy BIOS and UEFI bootloaders.
Attempt to chainload legacy bootloader on UEFI system fails. Skip
adding legacy bootloader in this case.
TODO: this probably should be implemented as runtime check. But it
does the right thing in majority of cases. If mixed legacy/UEFI
boot will be used frequently, it can be revisited.
Index: os-prober/os-probes/mounted/x86/20microsoft
===================================================================
--- os-prober.orig/os-probes/mounted/x86/20microsoft
+++ os-prober/os-probes/mounted/x86/20microsoft
@@ -7,6 +7,12 @@ partition="$1"
mpoint="$2"
type="$3"
+# This script looks for legacy BIOS bootloaders only. Skip if running UEFI
+if [ -d /sys/firmware/efi ]; then
+ debug "Skipping legacy bootloaders on UEFI system"
+ exit 1
+fi
+
# Weed out stuff that doesn't apply to us
case "$type" in
ntfs|ntfs-3g) debug "$1 is a NTFS partition" ;;

View File

@ -1,22 +0,0 @@
From: Andrey Borzenkov <arvidjaar@gmail.com>
Subject: fix detection of distributions with /lib => /usr/lib symlink
Upstream: yes
grub-mount does not implement symbolic links, so distributions
that replaced /lib with /usr/lib were not detected. Check both
/lib and /usr/lib. Patch taken from upstream version.
Affected is e.g. Fedora 18.
Index: os-prober/os-probes/mounted/common/90linux-distro
===================================================================
--- os-prober.orig/os-probes/mounted/common/90linux-distro
+++ os-prober/os-probes/mounted/common/90linux-distro
@@ -13,7 +13,7 @@ type="$3"
# better. Make sure this test has a high number so that more accurate tests
# can come first.
# TODO: look for ld-linux.so on arches that have it
-if ls "$dir"/lib*/ld*.so* >/dev/null 2>/dev/null; then
+if (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
if [ -e "$dir/etc/debian_version" ]; then
short="Debian"
long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"

View File

@ -1,3 +1,28 @@
-------------------------------------------------------------------
Fri May 31 10:26:48 UTC 2013 - arvidjaar@gmail.com
- update to os-prober 1.61. Highlights:
* Fix detection of Fedora and other distros that moved /lib into /usr
* sed off (hdn,n) from the front of an initrd path
* Add support to detect BSD systems
* add support for probing EFI System Partition
- rediff
* os-prober-1.49-fix-grub2.cfg-parsing.patch - part implemented
differenty upstream; added additional os-prober entries detection based
on menu entry ID as suggested by Vladimir Serbienko
* os-prober-1.49-grub2-mount.patch
* os-prober-SUSE.patch
* os-prober-linux-secure-boot.patch
- drop upstream patches
* os-prober-usr_lib-detection.patch
* os-prober-skip-MS-legacy-on-UEFI.patch together with 05efi, efi-20microsoft,
efi-10elilo
- add
* os-prober-btrfsfix.patch - support btrfs. Patch from Fedora with
all unrelated changes cleaned out
* os-prober-EFI-openSUSEfy.patch - cosmetic changes between our scripts
and version adopted upstream
------------------------------------------------------------------- -------------------------------------------------------------------
Fri Apr 5 16:33:28 UTC 2013 - arvidjaar@gmail.com Fri Apr 5 16:33:28 UTC 2013 - arvidjaar@gmail.com

View File

@ -17,7 +17,7 @@
Name: os-prober Name: os-prober
Version: 1.49 Version: 1.61
Release: 0 Release: 0
Summary: Probes disks on the system for installed operating systems Summary: Probes disks on the system for installed operating systems
License: GPL-2.0+ License: GPL-2.0+
@ -26,28 +26,25 @@ Group: System/Boot
Url: http://kitenet.net/~joey/code/os-prober/ Url: http://kitenet.net/~joey/code/os-prober/
Source0: http://ftp.de.debian.org/debian/pool/main/o/os-prober/%{name}_%{version}.tar.gz Source0: http://ftp.de.debian.org/debian/pool/main/o/os-prober/%{name}_%{version}.tar.gz
Source1: COPYING-note.txt Source1: COPYING-note.txt
Source2: 05efi
Source3: efi-20microsoft
Source4: efi-10elilo
# move newns binary outside of os-prober subdirectory, so that debuginfo # move newns binary outside of os-prober subdirectory, so that debuginfo
# can be automatically generated for it # can be automatically generated for it
Patch0: os-prober-newnsdirfix.patch Patch0: os-prober-newnsdirfix.patch
# PATCH-FIX-OPENSUSE: Fix spelling of SUSE aj@suse.de # PATCH-FIX-OPENSUSE: Fix spelling of SUSE aj@suse.de
Patch1: os-prober-SUSE.patch Patch1: os-prober-SUSE.patch
# PATCH-FIX-OPENSUSE: Skip legacy Microsoft bootloader on UEFI [bnc#775610]
Patch2: os-prober-skip-MS-legacy-on-UEFI.patch
# PATCH-FIX-OPENSUSE: Fix parsing of grub.cfg [bnc#796919] # PATCH-FIX-OPENSUSE: Fix parsing of grub.cfg [bnc#796919]
Patch3: os-prober-1.49-fix-grub2.cfg-parsing.patch Patch3: os-prober-1.49-fix-grub2.cfg-parsing.patch
# PATCH-FIX-OPENSUSE: Do not try to mount LVM2 PV [bnc#798604] # PATCH-FIX-OPENSUSE: Do not try to mount LVM2 PV [bnc#798604]
Patch4: os-prober-1.49-skip-LVM2_member.patch Patch4: os-prober-1.49-skip-LVM2_member.patch
# PATCH-FIX-OPENSUSE: Use correct name for grub2-mount # PATCH-FIX-OPENSUSE: Use correct name for grub2-mount
Patch5: os-prober-1.49-grub2-mount.patch Patch5: os-prober-1.49-grub2-mount.patch
# PATCH-FIX-OPENSUSE: Detect distributions which moved /lib to /usr/lib
Patch6: os-prober-usr_lib-detection.patch
# PATCH-FIX-OPENSUSE: Probe also unpartitioned Linux MD devices (bnc#811006) # PATCH-FIX-OPENSUSE: Probe also unpartitioned Linux MD devices (bnc#811006)
Patch7: os-prober-probe-MD-devices.patch Patch7: os-prober-probe-MD-devices.patch
# PATCH-FIX-OPENSUSE: Detect linux secure boot entries too (bnc#810912) # PATCH-FIX-OPENSUSE: Detect linux secure boot entries too (bnc#810912)
Patch8: os-prober-linux-secure-boot.patch Patch8: os-prober-linux-secure-boot.patch
# PATCH-FIX-OPENSUSE: btrfs support from Fedora (rediffed)
Patch9: os-prober-btrfsfix.patch
# PATCH-FIX-OPENSUSE: difference between upstream and our previous scripts
Patch10: os-prober-EFI-openSUSEfy.patch
Requires: /bin/grep Requires: /bin/grep
Requires: /bin/sed Requires: /bin/sed
@ -64,17 +61,17 @@ in a generic machine-readable format. Support for new OSes and Linux
distributions can be added easily. distributions can be added easily.
%prep %prep
%setup -q -n %{name} %setup -q -n %{name}-%{version}
cp %SOURCE1 . cp %SOURCE1 .
%patch0 -p1 %patch0 -p1
%patch1 -p1 %patch1 -p1
%patch2 -p1
%patch3 -p1 %patch3 -p1
%patch4 -p1 %patch4 -p1
%patch5 -p1 %patch5 -p1
%patch6 -p1
%patch7 -p1 %patch7 -p1
%patch8 -p1 %patch8 -p1
%patch9 -p1
%patch10 -p1
%build %build
make %{?_smp_mflags} CC="%__cc" CFLAGS="%{optflags}" make %{?_smp_mflags} CC="%__cc" CFLAGS="%{optflags}"
@ -111,12 +108,6 @@ done
if [ "$ARCH" = x86 ]; then if [ "$ARCH" = x86 ]; then
install -m 755 -p os-probes/mounted/powerpc/20macosx \ install -m 755 -p os-probes/mounted/powerpc/20macosx \
%{buildroot}%{_libexecdir}/os-probes/mounted %{buildroot}%{_libexecdir}/os-probes/mounted
install -m 755 -p %SOURCE2 %{buildroot}%{_libexecdir}/os-probes/mounted
install -m 755 -d %{buildroot}%{_libexecdir}/os-probes/mounted/efi
install -m 755 -p %SOURCE3 \
%{buildroot}%{_libexecdir}/os-probes/mounted/efi/20microsoft
install -m 755 -p %SOURCE4 \
%{buildroot}%{_libexecdir}/os-probes/mounted/efi/10elilo
fi fi
%files %files

View File

@ -1,3 +0,0 @@
version https://git-lfs.github.com/spec/v1
oid sha256:828118ee0792263179572f5a7669f20c787dd61e7bfb2954a34ea0d62f94fc14
size 24422

3
os-prober_1.61.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:2b83d037c38ca6393e1ead7d1548c59528c07b9fc1a1e07b4e1d07af03905f48
size 28197