os-prober 1.76-1 (x86_64;i586) 2017-3428
-9999

Status rejected
Submitter itchka [@T] compuserve.com
Platform 3.0
Repository main
URL https://abf.openmandriva.org/build_lists/130976
Packages
os-prober-1.76-1.x86_64.source
os-prober-1.76-1.x86_64.binary
os-prober-1.76-1.i586.source
os-prober-1.76-1.i586.binary
Build Date 2017-12-10 22:41:24 +0000 UTC
Last Updated 2017-12-13 22:42:14.338968552 +0000 UTC
$ 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 \
Not Available

itchka [@T] compuserve.comInstalls and seems to work.2544d 11hrs
itchka [@T] compuserve.comSuperceded2542d 12hrs
itchka [@T] compuserve.comNo Comment.2541d 21hrs