$ git diff --patch-with-stat --summary 017968b284d94588979fae1ba0ad78fa9bdc5e1f..7612584dff45139022f2a0924bd3248e823b82b2
.abf.yml | 1 +
microcode-initrd-line-fix.patch | 11 +
...6-work-around-mount-hang-on-older-kernels.patch | 48 ----
os-prober-1.71-linux-detection.patch | 290 ---------------------
os-prober-bsd-detection.patch | 78 ------
os-prober-btrfsfix.patch | 229 ++++++++--------
...nt-load-all-fs-module-and-dont-test-mount.patch | 9 -
os-prober-factored-logger-efi-fix.patch | 2 +-
os-prober-files-path-fix.patch | 163 ++++++++++++
...linux-distro-avoid-expensive-ld-file-test.patch | 56 ++--
os-prober-linux-distro-parse-os-release.patch | 11 +-
os-prober-missed-os-fix.patch | 15 --
os-prober-mounted-partitions-fix.patch | 2 +-
os-prober-usermovefix.patch | 26 ++
os-prober-yaboot-parsefix.patch | 14 -
os-prober.spec | 26 +-
16 files changed, 368 insertions(+), 613 deletions(-)
create mode 100644 microcode-initrd-line-fix.patch
delete mode 100644 os-prober-1.56-work-around-mount-hang-on-older-kernels.patch
delete mode 100644 os-prober-1.71-linux-detection.patch
delete mode 100644 os-prober-bsd-detection.patch
create mode 100644 os-prober-files-path-fix.patch
delete mode 100644 os-prober-missed-os-fix.patch
create mode 100644 os-prober-usermovefix.patch
delete mode 100644 os-prober-yaboot-parsefix.patch
diff --git a/.abf.yml b/.abf.yml
index 8dc9135..3cd840e 100644
--- a/.abf.yml
+++ b/.abf.yml
@@ -1,2 +1,3 @@
sources:
os-prober_1.71.tar.xz: 7d603d603208fe8b065f84da62dcfb6ee965a9eb
+ os-prober_1.76.tar.xz: 7434eef47887d820f8f4cc2f0f99afe50b22adbd
diff --git a/microcode-initrd-line-fix.patch b/microcode-initrd-line-fix.patch
new file mode 100644
index 0000000..4fc259f
--- /dev/null
+++ b/microcode-initrd-line-fix.patch
@@ -0,0 +1,11 @@
+--- os-prober-1.76/linux-boot-probes/mounted/common/40grub2~ 2017-09-29 23:50:52.415348657 +0100
++++ os-prober-1.76/linux-boot-probes/mounted/common/40grub2 2017-12-08 16:50:12.082601278 +0000
+@@ -78,7 +78,7 @@
+ fi
+ ;;
+ initrd*)
+- initrd="$(echo "$2" | sed 's/(.*)//')"
++ initrd="$(echo "$2 $3" | sed 's/(.*)//')"
+ # Initrd same.
+ if [ "$partition" != "$bootpart" ]; then
+ initrd="/boot$initrd"
diff --git a/os-prober-1.56-work-around-mount-hang-on-older-kernels.patch b/os-prober-1.56-work-around-mount-hang-on-older-kernels.patch
deleted file mode 100644
index a492175..0000000
--- a/os-prober-1.56-work-around-mount-hang-on-older-kernels.patch
+++ /dev/null
@@ -1,48 +0,0 @@
---- os-prober-1.56/common.sh.nohang~ 2012-12-28 15:12:39.937518524 +0100
-+++ os-prober-1.56/common.sh 2012-12-28 15:12:39.939518500 +0100
-@@ -283,3 +283,12 @@ linux_mount_boot () {
-
- mountboot="$bootpart $mounted"
- }
-+
-+kernel_newer() {
-+ local newerkernel=$(echo -e "`uname -r`\n$1" | sort -g -t '.' | tail -n1)
-+ if [ "$newerkernel" = "$1" ]; then
-+ return 1
-+ else
-+ return 0
-+ fi
-+}
---- os-prober-1.56/os-prober.nohang~ 2012-12-28 15:12:39.942518461 +0100
-+++ os-prober-1.56/os-prober 2012-12-28 15:49:26.250935810 +0100
-@@ -7,8 +7,14 @@ newns "$@"
- require_tmpdir
-
- for device in /dev/sd*; do
-- mkdir -p /run/os-prober$device/
-- mount -r $device /run/os-prober$device >/dev/null 2>&1 || :
-+ # on older kernels mount would hang with 100% cpu usage if trying to
-+ # mount extended partitions, so just skip partitions blkid doesn't
-+ # report any type of to be on the safe side for older kernels
-+ if ! kernel_newer "3.4.4" && fs_type $device | [ $(wc -l) -eq 0 ]; then
-+ continue
-+ fi
-+ mkdir -p /run/os-prober$device/
-+ mount -r $device /run/os-prober$device >/dev/null 2>&1 || :
- done
-
- log_output () {
-@@ -130,6 +136,13 @@ if [ -f /proc/mdstat ] ; then
- fi
-
- for partition in $(partitions); do
-+ # on older kernels mount would hang with 100% cpu usage if trying to
-+ # mount extended partitions, so just skip partitions blkid doesn't
-+ # report any type of to be on the safe side for older kernels
-+ if ! kernel_newer "3.4.4" && fs_type "$partition" | [ $(wc -l) -eq 0 ]; then
-+ continue
-+ fi
-+
- if ! mapped="$(mapdevfs "$partition")"; then
- log "Device '$partition' does not exist; skipping"
- continue
diff --git a/os-prober-1.71-linux-detection.patch b/os-prober-1.71-linux-detection.patch
deleted file mode 100644
index 8d4eb08..0000000
--- a/os-prober-1.71-linux-detection.patch
+++ /dev/null
@@ -1,290 +0,0 @@
-diff -Naur os-prober/os-probes/mounted/common/90linux-distro os-prober.tpg/os-probes/mounted/common/90linux-distro
---- os-prober/os-probes/mounted/common/90linux-distro 2013-05-19 08:57:50.000000000 +0000
-+++ os-prober.tpg/os-probes/mounted/common/90linux-distro 2014-11-08 18:08:32.282821884 +0000
-@@ -17,125 +17,167 @@
- # symlinks we need to also check in $dir/usr/lib* for distributions that
- # moved /lib* to /usr and only left symlinks behind.
- # TODO: look for ld-linux.so on arches that have it
-+
-+# hierarchy
-+
-+# based or forked
-+
-+# chakra-release # arch
-+# arch-release
-+
-+# kanotix_version # debian
-+# kdemar-release # debian, knoppix
-+# knoppix_version # debian
-+# debian_version
-+
-+# blackPanther-release # mandriva
-+# pclinuxos-release # mandrake, mandriva
-+# mandriva-release # mandrake, mandrakelinux, redhat
-+# mandrakelinux-release
-+# mandrake-release
-+# distro-release #openmandriva
-+
-+# altlinux-release # redhat
-+# yellowdog-release # centos, fedora
-+# centos-release # redhat, fedora
-+# asplinux-release # fedora
-+# engarde-release # fedora
-+# e-smith-release # fedora
-+# magic-release # fedora
-+# trustix-release # fedora
-+# fedora-release # redhat
-+# startcom-release # redhat
-+# redhat-release
-+
-+# meego-release # moblin
-+# moblin-release
-+
-+# slax-version # slackware
-+# zenwalk-version # slackware
-+# slackware-version
-+
-+# sles-release # suse
-+# SuSE-release
-+
-+# independent
-+
-+# ark-release
-+# caos-release
-+# frugalware-release
-+# gentoo-release
-+# lfs-release
-+# pardus-release
-+# pld-release
-+# turbolinux-release
-+# vine-release
-+# whitebox-release
-+
-+# reserved
-+# system-release
-+
-+based_or_forked1='SuSE-release sles-release slackware-version zenwalk-version slax-version moblin-release meego-release'
-+based_or_forked2='redhat-release startcom-release fedora-release trustix-release magic-release e-smith-release engarde-release asplinux-release centos-release yellowdog-release altlinux-release 4MLinux-version'
-+based_or_forked3='distro-release mandrake-release mandrakelinux-release mandriva-release pclinuxos-release blackPanther-release'
-+based_or_forked4='debian_version knoppix_version kdemar-release kanotix_version arch-release chakra-release'
-+
-+independant='whitebox-release vine-release turbolinux-release pld-release pardus-release lfs-release gentoo-release frugalware-release caos-release ark-release'
-+
-+reserved='system-release'
-+
-+known_distro="$reserved $independant $based_or_forked1 $based_or_forked2 $based_or_forked3 $based_or_forked4"
-+
-+find_distro_info() {
-+ found_distro=
-+
-+ pattern='_version -version -release'
-+
-+ for pat in $pattern; do
-+
-+ for distro in $( ls -tr $dir/etc/*$pat 2>/dev/null ); do
-+ if [ -L $distro ]; then
-+ continue
-+ fi
-+
-+ distro=$(basename $distro)
-+
-+ if [ "$distro" = 'lsb-release' ]; then
-+ continue
-+ fi
-+
-+ found_distro="$found_distro$distro "
-+ done
-+
-+ done
-+}
-+
-+prepare_label() {
-+ label=$(echo $1 | gawk '{ match($0, /(.+)(_version|-version|-release)/, dist); print dist[1] }')
-+}
-+
-+prepare_title() {
-+ title="$(head -1 $dir/etc/$1)"
-+
-+ title=$(echo $title | gawk '{ match($0, /^[[:space:]]*(.*)[[:space:]]*$/, title); print title[1] }')
-+
-+ if [ ! -z $(echo $title | awk '/^([[:graph:]]+)$/ { print $0 }') ] || [ -z "$title" ]; then
-+ tlabel=$(echo $label | gawk '{ match($0, /(.)(.*)/, title); print toupper(title[1]) tolower(title[2]) }')
-+
-+ if [ ! -z "$title" ]; then
-+ title=" ($title)"
-+ fi
-+
-+ title="${tlabel} GNU/Linux$title"
-+ fi
-+}
-+
-+prepare_distro_info() {
-+ if [ ! -z "$found_distro" ]; then
-+ mdistro=
-+
-+ for kdistro in $known_distro; do
-+ for fdistro in $found_distro; do
-+ if [ "$kdistro" = "$fdistro" ]; then
-+ mdistro=$kdistro
-+ found_distro=$(echo $found_distro | sed "s|$fdistro||")
-+ break
-+ fi
-+ done
-+
-+ if [ -z "$found_distro" ]; then
-+ break
-+ fi
-+ done
-+
-+ if [ -z "$found_distro" ]; then
-+ distro=$mdistro
-+ else
-+ distro=$(echo $found_distro | awk '{ print $NF }')
-+ fi
-+
-+ rdistro=$distro
-+
-+ if [ "$distro" = "debian_version" ] &&
-+ [ -f '/etc/dpkg/origins/ubuntu' ]; then
-+ distro='ubuntu_version'
-+ fi
-+
-+ prepare_label $distro
-+ prepare_title $rdistro $label
-+ else
-+ label='Linux'
-+ title='unknown Linux distribution'
-+ fi
-+}
-+
- 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")")"
-- # RPM derived distributions may also have a redhat-release or
-- # mandrake-release, so check their files first.
-- elif [ -e "$dir/etc/altlinux-release" ]; then
-- short="ALTLinux"
-- long="$(cat "$dir/etc/altlinux-release")"
-- elif [ -e "$dir/etc/magic-release" ]; then
-- short="Magic"
-- long="$(cat "$dir/etc/magic-release")"
-- elif [ -e "$dir/etc/blackPanther-release" ]; then
-- short="blackPanther"
-- long="$(cat "$dir/etc/blackPanther-release")"
-- elif [ -e "$dir/etc/ark-release" ]; then
-- short="Ark"
-- long="$(cat "$dir/etc/ark-release")"
-- elif [ -e "$dir/etc/arch-release" ]; then
-- short="Arch"
-- long="$(cat "$dir/etc/arch-release")"
-- elif [ -e "$dir/etc/asplinux-release" ]; then
-- short="ASPLinux"
-- long="$(cat "$dir/etc/asplinux-release")"
-- elif [ -e "$dir/etc/lvr-release" ]; then
-- short="LvR"
-- long="$(cat "$dir/etc/lvr-release")"
-- elif [ -e "$dir/etc/caos-release" ]; then
-- short="cAos"
-- long="$(cat "$dir/etc/caos-release")"
-- elif [ -e "$dir/etc/aurox-release" ]; then
-- short="Aurox"
-- long="$(cat "$dir/etc/aurox-release")"
-- elif [ -e "$dir/etc/engarde-release" ]; then
-- short="EnGarde"
-- long="$(cat "$dir/etc/engarde-release")"
-- elif [ -e "$dir/etc/vine-release" ]; then
-- short="Vine"
-- long="$(cat "$dir/etc/vine-release")"
-- elif [ -e "$dir/etc/whitebox-release" ]; then
-- short="WhiteBox"
-- long="$(cat "$dir/etc/whitebox-release")"
-- elif [ -e "$dir/etc/pld-release" ]; then
-- short="PLD"
-- long="$(cat "$dir/etc/pld-release")"
-- elif [ -e "$dir/etc/startcom-release" ]; then
-- short="StartCom"
-- long="$(cat "$dir/etc/startcom-release")"
-- elif [ -e "$dir/etc/trustix-release" ]; then
-- short="Trustix"
-- long="$(cat "$dir/etc/trustix-release")"
-- elif [ -e "$dir/etc/openna-release" ]; then
-- short="OpenNA"
-- long="$(cat "$dir/etc/openna-release")"
-- elif [ -e "$dir/etc/conectiva-release" ]; then
-- short="Conectiva"
-- long="$(cat "$dir/etc/conectiva-release")"
-- elif [ -e "$dir/etc/mandrake-release" ]; then
-- short="Mandrake"
-- long="$(cat "$dir/etc/mandrake-release")"
-- elif [ -e "$dir/etc/fedora-release" ]; then
-- short="Fedora"
-- long="$(cat "$dir/etc/fedora-release")"
-- elif [ -e "$dir/etc/redhat-release" ]; then
-- short="RedHat"
-- long="$(cat "$dir/etc/redhat-release")"
-- elif [ -e "$dir/etc/SuSE-release" ]; then
-- short="SuSE"
-- long="$(head -n 1 "$dir/etc/SuSE-release")"
-- elif [ -e "$dir/etc/gentoo-release" ]; then
-- short="Gentoo"
-- long="$(cat "$dir/etc/gentoo-release")"
-- elif [ -e "$dir/etc/cobalt-release" ]; then
-- short="Cobalt"
-- long="$(cat "$dir/etc/cobalt-release")"
-- elif [ -e "$dir/etc/yellowdog-release" ]; then
-- short="YellowDog"
-- long="$(cat "$dir/etc/yellowdog-release")"
-- elif [ -e "$dir/etc/turbolinux-release" ]; then
-- short="Turbolinux"
-- long="$(cat "$dir/etc/turbolinux-release")"
-- elif [ -e "$dir/etc/pardus-release" ]; then
-- short="Pardus"
-- long="$(cat "$dir/etc/pardus-release")"
-- elif [ -e "$dir/etc/kanotix-version" ]; then
-- short="Kanotix"
-- long="$(cat "$dir/etc/kanotix-version")"
-- elif [ -e "$dir/etc/slackware-version" ]; then
-- short="Slackware"
-- long="$(printf "Slackware Linux (%s)\n" "$(cat "$dir/etc/slackware-version")")"
-- elif [ -e "$dir/sbin/pkgtool" ]; then
-- short="Slackware"
-- long="Slackware Linux"
-- elif grep -qs OpenLinux "$dir/etc/issue"; then
-- short="Caldera"
-- long="Caldera OpenLinux"
-- elif [ -e "$dir/etc/frugalware-release" ]; then
-- short="Frugalware Linux"
-- long="$(cat "$dir/etc/frugalware-release")"
-- elif [ -e "$dir/etc/kdemar-release" ]; then
-- short="K-DEMar"
-- long="$(printf "K-DEMar GNU/Linux (%s)\n" "$(cat "$dir/etc/kdemar-release")")"
-- elif [ -e "$dir/etc/lfs-release" ]; then
-- short="LFS"
-- long="$(printf "Linux From Scratch (%s)\n" "$(cat "$dir/etc/lfs-release")")"
-- elif [ -e "$dir/etc/meego-release" ]; then
-- short="MeeGo"
-- long="$(head -1 "$dir/etc/meego-release")"
-- elif [ -e "$dir/etc/4MLinux-version" ]; then
-- short="4MLinux"
-- long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
-- else
-- short="Linux"
-- long="unknown Linux distribution"
-- fi
--
-- label="$(count_next_label "$short")"
-- result "$partition:$long:$label:linux"
-- exit 0
-+ find_distro_info
-+
-+ prepare_distro_info
-+
-+ label="$(count_next_label "$label")"
-+ echo "$partition:$title:$label:linux"
-+
-+ exit 0
- else
-- exit 1
-+ exit 1
- fi
diff --git a/os-prober-bsd-detection.patch b/os-prober-bsd-detection.patch
deleted file mode 100644
index 284104f..0000000
--- a/os-prober-bsd-detection.patch
+++ /dev/null
@@ -1,78 +0,0 @@
-diff --git a/os-probes/common/50mounted-tests b/os-probes/common/50mounted-tests
-index 7865b51..9d878c0 100755
---- a/os-probes/common/50mounted-tests
-+++ b/os-probes/common/50mounted-tests
-@@ -54,9 +54,20 @@ if which grub-mount >/dev/null 2>&1 && \
- else
- ro_partition "$partition"
- for type in $types $delaytypes; do
-- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
-+ if [ "$type" = ufs ]; then
-+ for ufstype in ufs2 44bsd; do
-+ if mount -o ro,ufstype=$ufstype -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
-+ mounted=1
-+ fi
-+ done
-+ else
-+ if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
-+ mounted=1
-+ fi
-+ fi
-+
-+ if [ "$mounted" ]; then
- debug "mounted as $type filesystem"
-- mounted=1
- break
- fi
- done
-diff --git a/os-probes/mounted/common/90bsd-distro b/os-probes/mounted/common/90bsd-distro
-new file mode 100755
-index 0000000..b190aab
---- /dev/null
-+++ b/os-probes/mounted/common/90bsd-distro
-@@ -0,0 +1,45 @@
-+#!/bin/sh
-+# Test for *BSD distributions.
-+set -e
-+
-+. /usr/share/os-prober/common.sh
-+
-+partition="$1"
-+dir="$2"
-+type="$3"
-+
-+if [ "$type" = ufs ]; then
-+ disk=$(echo $partition | gawk '{ match($0, /([[:alpha:][:punct:]]+)[[:digit:]]+/, disk); print disk[1] }')
-+
-+ if [ ! -z "$disk" ]; then
-+ tpartition=$(echo $partition | sed 's|\/|\\/|g')
-+
-+ system=$(fdisk -l $disk | awk '/'$tpartition'[[:blank:]]+\*[[:blank:]]+.+[[:blank:]]+.+BSD/ {print $7}')
-+
-+ if [ ! -z "$system" ]; then
-+ title=
-+
-+ if [ -f $dir/etc/motd ]; then
-+ case $system in
-+ FreeBSD | NetBSD | OpenBSD) title=$(cat $dir/etc/motd | gawk '{ match($0, /('$system')[[:blank:]]+([[:graph:]]+)[[:blank:]]+(\([[:print:]]+\))/, title); print title[1], title[2], title[3]; exit 0}')
-+ ;;
-+ esac
-+ fi
-+
-+ if [ -z "$title" ]; then
-+ title="$system"
-+ fi
-+
-+ label="$(count_next_label "$system")"
-+ echo "$partition:$title:$label:chain"
-+
-+ exit 0
-+ else
-+ exit 1
-+ fi
-+ else
-+ exit 1
-+ fi
-+else
-+ exit 1
-+fi
diff --git a/os-prober-btrfsfix.patch b/os-prober-btrfsfix.patch
index ecc53eb..a3badd1 100644
--- a/os-prober-btrfsfix.patch
+++ b/os-prober-btrfsfix.patch
@@ -165,7 +165,7 @@ Index: os-prober/linux-boot-prober
+ bootsv=
+ fi
+
-+ test="/usr/lib/linux-boot-probes/mounted/40grub2"
++ test="/usr/libexec/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
@@ -187,7 +187,7 @@ Index: os-prober/linux-boot-prober
@@ -22,8 +149,8 @@ fi
if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map"; then
- for test in /usr/lib/linux-boot-probes/*; do
+ for test in /usr/libexec/linux-boot-probes/*; do
- debug "running $test"
if [ -x $test ] && [ -f $test ]; then
+ debug "running $test"
@@ -230,66 +230,55 @@ Index: os-prober/linux-boot-probes/mounted/common/40grub2
result "$rootpart:$bootpart:$title:$kernel:$initrd:$parameters"
found_item=1
fi
-Index: os-prober/os-prober
+Index: os-prober/os-probes/mounted/common/90linux-distro
===================================================================
---- os-prober.orig/os-prober
-+++ os-prober/os-prober
-@@ -71,9 +71,12 @@ partitions () {
+--- os-prober.orig/os-probes/mounted/common/90linux-distro
++++ os-prober/os-probes/mounted/common/90linux-distro
+@@ -7,6 +7,8 @@ set -e
+ partition="$1"
+ dir="$2"
+ type="$3"
++uuid="$4"
++subvol="$5"
- # Also detect OSes on LVM volumes (assumes LVM is active)
- if type lvs >/dev/null 2>&1; then
-- echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name |
-+ echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name 2>/dev/null |
- sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
+ # 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
+@@ -135,7 +137,11 @@ if [ -L "$dir"/lib ] || (ls "$dir"/lib*/
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/README.btrfs
+===================================================================
+--- /dev/null
++++ os-prober/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
+
-+ # now lets make sure we got all of the btrfs partitions and disks
-+ blkid | grep 'TYPE="btrfs"' | cut -d ':' -f 1
- }
-
- parse_proc_swaps () {
-@@ -131,6 +134,8 @@ if [ -f /proc/mdstat ] ; then
- grep "^md" /proc/mdstat | cut -d: -f2- | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
- fi
-
-+: >"$OS_PROBER_TMP/btrfs-vols"
++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.
+
- for partition in $(partitions); do
- if ! mapped="$(mapdevfs "$partition")"; then
- log "Device '$partition' does not exist; skipping"
-@@ -149,7 +154,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
++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.
+
-+ 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/os-probes/common/50mounted-tests
-===================================================================
---- os-prober.orig/os-probes/common/50mounted-tests
-+++ os-prober/os-probes/common/50mounted-tests
-@@ -1,20 +1,36 @@
++Sun 30 Dec 2012 11:49:52 AM EST Gene Czarcinski <gene@czarc.net>
++
+--- os-prober-1.76/os-probes/common/50mounted-tests.0007~ 2017-05-01 04:03:02.000000000 +0100
++++ os-prober-1.76/os-probes/common/50mounted-tests 2017-12-08 18:21:39.643913222 +0000
+@@ -1,7 +1,6 @@
#!/bin/sh
# Sub-tests that require a mounted partition.
set -e
@@ -297,29 +286,28 @@ Index: os-prober/os-probes/common/50mounted-tests
. /usr/share/os-prober/common.sh
--types="$(fs_type "$partition")" || types=NOT-DETECTED
+@@ -14,19 +13,31 @@
+ rmdir "$tmpmnt" || true
+ }
+
+-types="$(fs_type "$partition")"
+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"
++ 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
++ partition="$1"
++ types="$(fs_type "$partition")" || types=NOT-DETECTED
+fi
+
if [ "$types" = NOT-DETECTED ]; then
debug "$1 type not recognised; skipping"
- exit 0
+ exit 1
-+elif [ "x$types" = "x" ]; then
-+ exit 1
-+elif [ "$types" = LVM2_member ]; then
-+ debug "skipping LVM2 Volume Group on $partition"
-+ exit 1
elif [ "$types" = swap ]; then
debug "$1 is a swap partition; skipping"
- exit 0
@@ -328,10 +316,14 @@ Index: os-prober/os-probes/common/50mounted-tests
debug "$1 is a LUKS partition; skipping"
- exit 0
+ exit 1
+ elif [ "$types" = LVM2_member ]; then
+ debug "$1 is an LVM member; skipping"
+- exit 0
++ exit 1
elif [ "$types" = ntfs ]; then
if type ntfs-3g >/dev/null 2>&1; then
types='ntfs-3g ntfs'
-@@ -23,7 +39,7 @@ elif [ -z "$types" ]; then
+@@ -35,7 +46,7 @@
if type cryptsetup >/dev/null 2>&1 && \
cryptsetup luksDump "$partition" >/dev/null 2>&1; then
debug "$1 is a LUKS partition; skipping"
@@ -340,7 +332,7 @@ Index: os-prober/os-probes/common/50mounted-tests
fi
for type in $(grep -v nodev /proc/filesystems); do
# hfsplus filesystems are mountable as hfs. Try hfs last so
-@@ -46,6 +62,108 @@ if [ ! -d "$tmpmnt" ]; then
+@@ -58,6 +69,108 @@
fi
mounted=
@@ -423,7 +415,7 @@ Index: os-prober/os-probes/common/50mounted-tests
+ mount -t btrfs -o subvol="$subvol" -U "$UUID" "$tmpmnt"
+ mpoint="$tmpmnt"
+ fi
-+ test="/usr/lib/os-probes/mounted/90linux-distro"
++ test="/usr/libexec/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
@@ -449,49 +441,56 @@ Index: os-prober/os-probes/common/50mounted-tests
if type grub-mount >/dev/null 2>&1 && \
type grub-probe >/dev/null 2>&1 && \
grub-mount "$partition" "$tmpmnt" 2>/dev/null; then
-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
-@@ -7,6 +7,8 @@ set -e
- partition="$1"
- dir="$2"
- type="$3"
-+uuid="$4"
-+subvol="$5"
+--- os-prober-1.76/os-prober.0007~ 2017-12-09 10:57:28.189988548 +0000
++++ os-prober-1.76/os-prober 2017-12-09 11:01:43.321243122 +0000
+@@ -76,9 +76,12 @@
- # 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
-@@ -135,7 +137,11 @@ if [ -L "$dir"/lib ] || (ls "$dir"/lib*/
+ # Also detect OSes on LVM volumes (assumes LVM is active)
+ if type lvs >/dev/null 2>&1; then
+- echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name |
++ echo "$(LVM_SUPPRESS_FD_WARNINGS=1 log_output lvs --noheadings --separator : -o vg_name,lv_name 2>/dev/null |
+ sed "s|-|--|g;s|^[[:space:]]*\(.*\):\(.*\)$|/dev/mapper/\1-\2|")"
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/README.btrfs
-===================================================================
---- /dev/null
-+++ os-prober/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.
++ # now lets make sure we got all of the btrfs partitions and disks
++ blkid | grep 'TYPE="btrfs"' | cut -d ':' -f 1
+ }
+
+ parse_proc_swaps () {
+@@ -136,6 +139,8 @@
+ grep "^md" /proc/mdstat | cut -d: -f2- | parse_proc_mdstat >"$OS_PROBER_TMP/raided-map" || true
+ fi
+
++: >"$OS_PROBER_TMP/btrfs-vols"
+
-+Sun 30 Dec 2012 11:49:52 AM EST Gene Czarcinski <gene@czarc.net>
+ for partition in $(partitions); do
+ if ! mapped="$(mapdevfs "$partition")"; then
+ log "Device '$partition' does not exist; skipping"
+@@ -154,7 +159,26 @@
+ 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/libexec/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/libexec/os-probes/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on $partition"
diff --git a/os-prober-dont-load-all-fs-module-and-dont-test-mount.patch b/os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
index 075afeb..7844681 100644
--- a/os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
+++ b/os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
@@ -28,15 +28,6 @@ diff -Naur os-prober-1.71/os-probes/common/50mounted-tests os-prober-1.71.tpg/os
fi
tmpmnt=/var/lib/os-prober/mount
-@@ -177,7 +171,7 @@
- fi
- else
- ro_partition "$partition"
-- for type in $types $delaytypes; do
-+ for type in $types; do
- if mount -o ro -t "$type" "$partition" "$tmpmnt" 2>/dev/null; then
- debug "mounted as $type filesystem"
- mounted=1
diff -Naur os-prober-1.71/os-probes/init/common/10filesystems os-prober-1.71.tpg/os-probes/init/common/10filesystems
--- os-prober-1.71/os-probes/init/common/10filesystems 2013-07-23 07:38:08.000000000 +0000
+++ os-prober-1.71.tpg/os-probes/init/common/10filesystems 2016-12-14 18:40:16.347093479 +0000
diff --git a/os-prober-factored-logger-efi-fix.patch b/os-prober-factored-logger-efi-fix.patch
index 5c66fa0..ab8658b 100644
--- a/os-prober-factored-logger-efi-fix.patch
+++ b/os-prober-factored-logger-efi-fix.patch
@@ -3,7 +3,7 @@ Index: os-prober/os-probes/mounted/x86/05efi
--- os-prober.orig/os-probes/mounted/x86/05efi
+++ os-prober/os-probes/mounted/x86/05efi
@@ -59,7 +59,11 @@ ret=1
- for test in /usr/lib/os-probes/mounted/efi/*; do
+ for test in /usr/libexec/os-probes/mounted/efi/*; do
debug "running subtest $test"
if [ -f "$test" ] && [ -x "$test" ]; then
+ # we need results of subtest in stdout
diff --git a/os-prober-files-path-fix.patch b/os-prober-files-path-fix.patch
new file mode 100644
index 0000000..bc149fa
--- /dev/null
+++ b/os-prober-files-path-fix.patch
@@ -0,0 +1,163 @@
+diff --git a/README os-prober-1.76/README
+index e747a7f..0cae4ec 100644
+--- a/README
++++ os-prober-1.76/README
+@@ -18,7 +18,7 @@ such as:
+ a chain one for other partitions
+ with their own boot sectors.
+
+-Tests are executable programs in the directory /usr/lib/os-probes/. Each
++Tests are executable programs in the directory /usr/libexec/os-probes/. Each
+ test is called once per partition, with the partition to check as its
+ parameter, and may output a string as described above, or nothing if it does
+ not recognise an OS on that partition. Tests return an exit code of 0
+@@ -62,7 +62,7 @@ short (or nonexistent), and may be inaccurate, confusing, or non-unique. See
+ TODO for other limitations.
+
+ The tests used by linux-boot-prober are in the directory
+-/usr/lib/linux-boot-probes/ and also in /usr/lib/linux-boot-probes/mounted,
++/usr/libexec/linux-boot-probes/ and also in /usr/libexec/linux-boot-probes/mounted,
+ and they are called in a similar way as the os-probes described above.
+ The mounted probes are passed parameters for the root partition, the boot
+ partition, and the directory the filesystems are mounted in.
+diff --git a/common.sh os-prober-1.76/common.sh
+index e1646d4..e6fe78a 100644
+--- a/common.sh
++++ os-prober-1.76/common.sh
+@@ -1,5 +1,5 @@
+ newns () {
+- [ "$OS_PROBER_NEWNS" ] || exec /usr/lib/os-prober/newns "$0" "$@"
++ [ "$OS_PROBER_NEWNS" ] || exec /usr/libexec/os-prober/newns "$0" "$@"
+ }
+
+ cleanup_tmpdir=false
+diff --git a/debian/os-prober-udeb.install os-prober-1.76/debian/os-prober-udeb.install
+index 956a68a..25b03e0 100644
+--- a/debian/os-prober-udeb.install
++++ os-prober-1.76/debian/os-prober-udeb.install
+@@ -1,3 +1,3 @@
+ os-prober linux-boot-prober bin
+-newns usr/lib/os-prober
++newns usr/libexec/os-prober
+ common.sh usr/share/os-prober
+diff --git a/debian/os-prober.install os-prober-1.76/debian/os-prober.install
+index b39e60c..97f9854 100644
+--- a/debian/os-prober.install
++++ os-prober-1.76/debian/os-prober.install
+@@ -1,3 +1,3 @@
+ os-prober linux-boot-prober usr/bin
+-newns usr/lib/os-prober
++newns usr/libexec/os-prober
+ common.sh usr/share/os-prober
+diff --git a/debian/rules os-prober-1.76/debian/rules
+index 81e9ad9..97779cd 100755
+--- a/debian/rules
++++ os-prober-1.76/debian/rules
+@@ -31,12 +31,12 @@ override_dh_install:
+ dh_install
+ for probes in os-probes os-probes/mounted os-probes/init \
+ linux-boot-probes linux-boot-probes/mounted; do \
+- dh_install $$probes/common/* usr/lib/$$probes; \
++ dh_install $$probes/common/* usr/libexec/$$probes; \
+ if [ -e "$$probes/$(ARCH)" ]; then \
+- dh_install $$probes/$(ARCH)/* usr/lib/$$probes; \
++ dh_install $$probes/$(ARCH)/* usr/libexec/$$probes; \
+ fi; \
+ done
+ ifeq ($(ARCH),x86)
+- dh_install os-probes/mounted/powerpc/20macosx usr/lib/os-probes/mounted
++ dh_install os-probes/mounted/powerpc/20macosx usr/libexec/os-probes/mounted
+ endif
+ cp -a debian/os-prober-udeb/usr/lib debian/os-prober/usr/
+diff --git a/linux-boot-prober os-prober-1.76/linux-boot-prober
+index e32dc84..ee8f2b9 100755
+--- a/linux-boot-prober
++++ os-prober-1.76/linux-boot-prober
+@@ -21,7 +21,7 @@ if ! mapped="$(mapdevfs "$partition")"; then
+ fi
+
+ if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map"; then
+- for test in /usr/lib/linux-boot-probes/*; do
++ for test in /usr/libexec/linux-boot-probes/*; do
+ debug "running $test"
+ if [ -x $test ] && [ -f $test ]; then
+ if $test "$partition"; then
+@@ -43,7 +43,7 @@ else
+ bootpart="$partition"
+ bootmounted=0
+ fi
+- for test in /usr/lib/linux-boot-probes/mounted/*; do
++ for test in /usr/libexec/linux-boot-probes/mounted/*; do
+ if [ -f $test ] && [ -x $test ]; then
+ debug "running $test on mounted $partition"
+ if $test "$partition" "$bootpart" "$mpoint" "$type"; then
+diff --git a/linux-boot-probes/common/50mounted-tests os-prober-1.76/linux-boot-probes/common/50mounted-tests
+index ad68874..2c8aa81 100755
+--- a/linux-boot-probes/common/50mounted-tests
++++ os-prober-1.76/linux-boot-probes/common/50mounted-tests
+@@ -61,7 +61,7 @@ if [ "$mounted" ]; then
+ bootpart="${mountboot%% *}"
+ mounted="${mountboot#* }"
+
+- for test in /usr/lib/linux-boot-probes/mounted/*; do
++ for test in /usr/libexec/linux-boot-probes/mounted/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test $partition $bootpart $tmpmnt $type"
+ if $test "$partition" "$bootpart" "$tmpmnt" "$type"; then
+diff --git a/os-prober os-prober-1.76/os-prober
+index a48863e..64d255f 100755
+--- a/os-prober
++++ os-prober-1.76/os-prober
+@@ -113,7 +113,7 @@ parse_proc_mdstat () {
+ # Needed for idempotency
+ rm -f /var/lib/os-prober/labels
+
+-for prog in /usr/lib/os-probes/init/*; do
++for prog in /usr/libexec/os-probes/init/*; do
+ if [ -x "$prog" ] && [ -f "$prog" ]; then
+ "$prog" || true
+ fi
+@@ -150,7 +150,7 @@ for partition in $(partitions); do
+ fi
+
+ if ! grep -q "^$mapped " "$OS_PROBER_TMP/mounted-map" ; then
+- for test in /usr/lib/os-probes/*; do
++ for test in /usr/libexec/os-probes/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on $partition"
+ if "$test" "$partition"; then
+@@ -164,7 +164,7 @@ for partition in $(partitions); do
+ mpoint="$(unescape_mount "$mpoint")"
+ if [ "$mpoint" != "/target/boot" ] && [ "$mpoint" != "/target" ] && [ "$mpoint" != "/" ]; then
+ type=$(grep "^$mapped " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 3)
+- for test in /usr/lib/os-probes/mounted/*; do
++ for test in /usr/libexec/os-probes/mounted/*; do
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ debug "running $test on mounted $partition"
+ if "$test" "$partition" "$mpoint" "$type"; then
+diff --git a/os-probes/common/50mounted-tests os-prober-1.76/os-probes/common/50mounted-tests
+index fca15cb..a3a7080 100755
+--- a/os-probes/common/50mounted-tests
++++ os-prober-1.76/os-probes/common/50mounted-tests
+@@ -72,7 +72,7 @@ if type grub-mount >/dev/null 2>&1 && \
+ fi
+
+ if [ "$mounted" ]; then
+- for test in /usr/lib/os-probes/mounted/*; do
++ for test in /usr/libexec/os-probes/mounted/*; do
+ debug "running subtest $test"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ if "$test" "$partition" "$tmpmnt" "$type"; then
+diff --git a/os-probes/mounted/x86/05efi os-prober-1.76/os-probes/mounted/x86/05efi
+index fcf3697..1e0c658 100755
+--- a/os-probes/mounted/x86/05efi
++++ os-prober-1.76/os-probes/mounted/x86/05efi
+@@ -56,7 +56,7 @@ if [ -z "$efi" ]; then
+ fi
+
+ ret=1
+-for test in /usr/lib/os-probes/mounted/efi/*; do
++for test in /usr/libexec/os-probes/mounted/efi/*; do
+ debug "running subtest $test"
+ if [ -f "$test" ] && [ -x "$test" ]; then
+ entry=$("$test" "$mpoint/$efi")
diff --git a/os-prober-linux-distro-avoid-expensive-ld-file-test.patch b/os-prober-linux-distro-avoid-expensive-ld-file-test.patch
index 0e1e0d5..13f469f 100644
--- a/os-prober-linux-distro-avoid-expensive-ld-file-test.patch
+++ b/os-prober-linux-distro-avoid-expensive-ld-file-test.patch
@@ -13,10 +13,9 @@ diff -Naur os-prober-1.71/os-prober os-prober-1.71.tpg/os-prober
uuid=$(blkid -o value -s UUID $mapped)
if grep -q "^$uuid" "$OS_PROBER_TMP/btrfs-vols" ; then
continue
-diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71.tpg/os-probes/mounted/common/90linux-distro
---- os-prober-1.71/os-probes/mounted/common/90linux-distro 2016-12-14 18:23:13.000000000 +0000
-+++ os-prober-1.71.tpg/os-probes/mounted/common/90linux-distro 2016-12-14 18:29:10.502004719 +0000
-@@ -10,142 +10,127 @@
+--- os-prober-1.76/os-probes/mounted/common/90linux-distro.0021~ 2017-12-09 14:42:09.828199907 +0000
++++ os-prober-1.76/os-probes/mounted/common/90linux-distro 2017-12-09 14:54:35.383655466 +0000
+@@ -10,147 +10,130 @@
uuid="$4"
subvol="$5"
@@ -29,8 +28,11 @@ diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71
-# symlinks we need to also check in $dir/usr/lib* for distributions that
-# moved /lib* to /usr and only left symlinks behind.
-# TODO: look for ld-linux.so on arches that have it
--if [ -L "$dir"/lib ] || (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
-- if [ -e "$dir/etc/debian_version" ]; then
+-if (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
+- if [ -e "$dir/etc/os-release" ]; then
+- short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+- long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+- elif [ -e "$dir/etc/debian_version" ]; then
- short="Debian"
- long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
- # RPM derived distributions may also have a redhat-release or
@@ -83,6 +85,9 @@ diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71
- elif [ -e "$dir/etc/openna-release" ]; then
- short="OpenNA"
- long="$(cat "$dir/etc/openna-release")"
+- elif [ -e "$dir/etc/mageia-release" ]; then
+- short="Mageia"
+- long="$(cat "$dir/etc/mageia-release")"
- elif [ -e "$dir/etc/conectiva-release" ]; then
- short="Conectiva"
- long="$(cat "$dir/etc/conectiva-release")"
@@ -140,22 +145,6 @@ diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71
- elif [ -e "$dir/etc/4MLinux-version" ]; then
- short="4MLinux"
- long="4MLinux $(head -1 "$dir/etc/4MLinux-version")"
-- elif (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
-- # Don't report 'Linux distribution' if only a /lib symlink is found or if this is
-- # a partition without /boot (should be /usr partition)
-- short="Linux"
-- long="unknown Linux distribution"
-- else
-- exit 1
-- fi
--
-- label="$(count_next_label "$short")"
-- 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
+if [ -e "$dir/etc/debian_version" ]; then
+ short="Debian"
+ long="$(printf "Debian GNU/Linux (%s)\n" "$(cat "$dir/etc/debian_version")")"
@@ -269,6 +258,24 @@ diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71
+elif [ -e "$dir/etc/meego-release" ]; then
+ short="MeeGo"
+ long="$(head -1 "$dir/etc/meego-release")"
+ elif [ -e "$dir/etc/devuan_version" ]; then
+ short="Devuan"
+ long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
+- else
+- short="Linux"
+- long="unknown Linux distribution"
+- fi
+-
+- label="$(count_next_label "$short")"
+- 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
+-fi
+ else
+ exit 1
+ fi
@@ -276,8 +283,7 @@ diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71
+label="$(count_next_label "$short")"
+if [ "x$type" = "xbtrfs" -a "x$uuid" != "x" -a "x$subvol" != "x" ]; then
+ result "$partition:$long:$label:linux:$type:$uuid:$subvol"
- else
-- exit 1
++ else
+ result "$partition:$long:$label:linux"
- fi
++ fi
+exit 0
diff --git a/os-prober-linux-distro-parse-os-release.patch b/os-prober-linux-distro-parse-os-release.patch
index e6349d9..0d214fe 100644
--- a/os-prober-linux-distro-parse-os-release.patch
+++ b/os-prober-linux-distro-parse-os-release.patch
@@ -1,10 +1,13 @@
-diff -Naur os-prober-1.71/os-probes/mounted/common/90linux-distro os-prober-1.71.tpg/os-probes/mounted/common/90linux-distro
---- os-prober-1.71/os-probes/mounted/common/90linux-distro 2016-12-14 18:29:10.000000000 +0000
-+++ os-prober-1.71.tpg/os-probes/mounted/common/90linux-distro 2016-12-14 18:33:14.346185337 +0000
-@@ -123,6 +123,20 @@
+--- os-prober-1.76/os-probes/mounted/common/90linux-distro.0022~ 2017-12-09 15:00:35.965922904 +0000
++++ os-prober-1.76/os-probes/mounted/common/90linux-distro 2017-12-09 15:14:20.162893029 +0000
+@@ -123,9 +123,23 @@
elif [ -e "$dir/etc/meego-release" ]; then
short="MeeGo"
long="$(head -1 "$dir/etc/meego-release")"
+- elif [ -e "$dir/etc/devuan_version" ]; then
++elif [ -e "$dir/etc/devuan_version" ]; then
+ short="Devuan"
+ long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
+elif [ -L "$dir/etc/os-release" ]; then
+ RELPATH=$(readlink -f "$dir/etc/os-release")
+ if readlink "$dir/etc/os-release" | grep -q '^/'; then
diff --git a/os-prober-missed-os-fix.patch b/os-prober-missed-os-fix.patch
deleted file mode 100644
index 3422bdc..0000000
--- a/os-prober-missed-os-fix.patch
+++ /dev/null
@@ -1,15 +0,0 @@
-diff -Naur os-prober-1.56/os-prober os-prober-new/os-prober
---- os-prober-1.56/os-prober 2012-09-17 11:08:12.000000000 -0400
-+++ os-prober-new/os-prober 2012-10-31 09:35:51.461933470 -0400
-@@ -6,6 +6,11 @@
- newns "$@"
- require_tmpdir
-
-+for device in /dev/sd*; do
-+ mkdir -p /run/os-prober$device/
-+ mount -r $device /run/os-prober$device >/dev/null 2>&1 || :
-+done
-+
- log_output () {
- if type log-output >/dev/null 2>&1; then
- log-output -t os-prober --pass-stdout $@
diff --git a/os-prober-mounted-partitions-fix.patch b/os-prober-mounted-partitions-fix.patch
index aecfc9f..ad4a1c1 100644
--- a/os-prober-mounted-partitions-fix.patch
+++ b/os-prober-mounted-partitions-fix.patch
@@ -23,4 +23,4 @@ Index: os-prober/linux-boot-prober
+ bootpart="$(grep " $mpoint/boot " "$OS_PROBER_TMP/mounted-map" | head -n1 | cut -d " " -f 4)"
bootmounted=0
fi
- for test in /usr/lib/linux-boot-probes/mounted/*; do
+ for test in /usr/libexec/linux-boot-probes/mounted/*; do
diff --git a/os-prober-usermovefix.patch b/os-prober-usermovefix.patch
new file mode 100644
index 0000000..523da4e
--- /dev/null
+++ b/os-prober-usermovefix.patch
@@ -0,0 +1,26 @@
+--- os-prober-1.76/os-probes/mounted/common/90linux-distro.0004~ 2017-12-08 19:55:42.541507107 +0000
++++ os-prober-1.76/os-probes/mounted/common/90linux-distro 2017-12-08 23:11:31.510328581 +0000
+@@ -17,7 +17,7 @@
+ # symlinks we need to also check in $dir/usr/lib* for distributions that
+ # moved /lib* to /usr and only left symlinks behind.
+ # TODO: look for ld-linux.so on arches that have it
+-if (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
++if [ -L "$dir"/lib ] || (ls "$dir"/lib*/ld*.so* || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
+ if [ -e "$dir/etc/os-release" ]; then
+ short="$(grep ^NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g; s/[[:space:]].*//')"
+ long="$(grep ^PRETTY_NAME= "$dir/etc/os-release" | sed 's/^[^=]*=//; s/^['\''"]\(.*\)['\''"]$/\1/; s/\\\(.\)/\1/g')"
+@@ -137,9 +137,13 @@
+ elif [ -e "$dir/etc/devuan_version" ]; then
+ short="Devuan"
+ long="$(printf "Devuan GNU/Linux (%s)\n" "$(cat "$dir/etc/devuan_version")")"
+- else
++ elif (ls "$dir"/lib*/ld*.so* && [ -d "$dir/boot" ] || ls "$dir"/usr/lib*/ld*.so*) >/dev/null 2>/dev/null; then
++ # Don't report 'Linux distribution' if only a /lib symlink is found or if this is
++ # a partition without /boot (should be /usr partition)
+ short="Linux"
+ long="unknown Linux distribution"
++ else
++ exit 1
+ fi
+
+ label="$(count_next_label "$short")"
diff --git a/os-prober-yaboot-parsefix.patch b/os-prober-yaboot-parsefix.patch
deleted file mode 100644
index 57badc0..0000000
--- a/os-prober-yaboot-parsefix.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff -up os-prober-1.53/linux-boot-probes/mounted/powerpc/40yaboot.parsefix os-prober-1.53/linux-boot-probes/mounted/powerpc/40yaboot
---- os-prober-1.53/linux-boot-probes/mounted/powerpc/40yaboot.parsefix 2012-05-25 15:57:13.477647064 +0430
-+++ os-prober-1.53/linux-boot-probes/mounted/powerpc/40yaboot 2012-05-25 16:16:58.844827933 +0430
-@@ -74,8 +74,8 @@ parse_yaboot_conf () {
- kernel="$(dequote "$2")"
- ;;
- append)
-- shift 1
-- parameters="$(dequote "${line#append=}")"
-+ cleanappend=`printf %s "$line" | sed -E 's/append(\s)*=(\s)*//'`
-+ parameters="$(dequote "$cleanappend")"
- ;;
- initrd)
- initrd="$(dequote "$2")"
diff --git a/os-prober.spec b/os-prober.spec
index e591c77..f7396e0 100644
--- a/os-prober.spec
+++ b/os-prober.spec
@@ -6,8 +6,8 @@
Summary: Probes disks on the system for installed operating systems
Name: os-prober
-Version: 1.71
-Release: 2
+Version: 1.76
+Release: 1
Group: System/Configuration/Boot and Init
License: GPLv2+
Url: http://kitenet.net/~joey/code/os-prober/
@@ -15,28 +15,28 @@ Source0: http://ftp.de.debian.org/debian/pool/main/o/os-prober/%{name}_%{version
Source1: %{name}-pamd
# move newns binary outside of os-prober subdirectory, so that debuginfo
# can be automatically generated for it
-Patch0: os-prober-newnsdirfix.patch
+Patch0: os-prober-files-path-fix.patch
Patch1: os-prober-no-dummy-mach-kernel.patch
# Sent upstream
Patch2: os-prober-mdraidfix.patch
-Patch3: os-prober-yaboot-parsefix.patch
-Patch4: os-prober-usrmovefix.patch
-Patch5: os-prober-remove-basename.patch
-Patch6: os-prober-disable-debug-test.patch
-Patch7: os-prober-btrfsfix.patch
+#Redundant already upstream Patch4: os-prober-usrmovefix.patch
+Patch7: os-prober-btrfsfix.patch
Patch8: os-prober-bootpart-name-fix.patch
Patch9: os-prober-mounted-partitions-fix.patch
Patch10: os-prober-factor-out-logger.patch
# To be sent upstream
Patch11: os-prober-factored-logger-efi-fix.patch
Patch12: os-prober-umount-fix.patch
-Patch13: os-prober-grub2-parsefix.patch
+Patch13: os-prober-grub2-parsefix.patch
Patch14: os-prober-grepfix.patch
Patch15: os-prober-gentoo-fix.patch
# (tpg) SUSE patches
Patch20: os-prober-dont-load-all-fs-module-and-dont-test-mount.patch
Patch21: os-prober-linux-distro-avoid-expensive-ld-file-test.patch
Patch22: os-prober-linux-distro-parse-os-release.patch
+#Fixes OMA bug 2234
+Patch23: microcode-initrd-line-fix.patch
+#Patch0: os-prober-files-path-fix.patch
Requires: coreutils
Requires: grep
Requires: sed
@@ -56,9 +56,9 @@ distributions can be added easily.
%setup -q
%apply_patches
-find -type f -exec sed -i -e 's|usr/lib|usr/libexec|g' {} \;
-sed -i -e 's|grub-probe|grub2-probe|g' os-probes/common/50mounted-tests \
- linux-boot-probes/common/50mounted-tests
+#find -type f -exec sed -i -e 's|usr/lib|usr/libexec|g' {} \;
+#sed -i -e 's|grub-probe|grub2-probe|g' os-probes/common/50mounted-tests \
+# linux-boot-probes/common/50mounted-tests
%build
%make CC=%{__cc} CFLAGS="%{optflags} -Os" LDFLAGS="%{ldflags}"
@@ -70,7 +70,7 @@ install -m 0755 -d %{buildroot}%{_sysconfdir}/pam.d
install -m 0755 -d %{buildroot}%{_var}/lib/%{name}
install -m 0755 -p %{name} %{lprob} %{buildroot}%{_sbindir}
-install -m 0755 -Dp newns %{buildroot}%{_libexecdir}/newns
+install -m 0755 -Dp newns %{buildroot}%{_libexecdir}/os-prober/newns
install -m 0644 -Dp common.sh %{buildroot}%{_datadir}/%{name}/common.sh
for probes in os-probes os-probes/mounted os-probes/init \