summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Levine <plevine457@gmail.com>2021-10-07 21:46:36 -0400
committerBen Kohler <bkohler@gentoo.org>2021-10-08 06:12:21 -0500
commit84564ed5e8df1bf6240aa2b5401562ff81e27081 (patch)
treec1f49e525ceef5d9efacfba37ec26c27c1207f42 /sys-boot
parentsys-boot/os-prober: fix error message from umount delay (diff)
downloadgentoo-84564ed5e8df1bf6240aa2b5401562ff81e27081.tar.gz
gentoo-84564ed5e8df1bf6240aa2b5401562ff81e27081.tar.bz2
gentoo-84564ed5e8df1bf6240aa2b5401562ff81e27081.zip
sys-boot/os-prober: fix os-prober in chroot and no mounted /run/udev
When /run/udev isn't mounted or udev isn't available, fallback to blkid. Bug: https://bugs.gentoo.org/761475 Package-Manager: Portage-3.0.26, Repoman-3.0.3 Signed-off-by: Peter Levine <plevine457@gmail.com> Signed-off-by: Ben Kohler <bkohler@gentoo.org>
Diffstat (limited to 'sys-boot')
-rw-r--r--sys-boot/os-prober/files/os-prober-1.79-efi-chroot-blkid-fallback.patch24
-rw-r--r--sys-boot/os-prober/os-prober-9999.ebuild3
2 files changed, 25 insertions, 2 deletions
diff --git a/sys-boot/os-prober/files/os-prober-1.79-efi-chroot-blkid-fallback.patch b/sys-boot/os-prober/files/os-prober-1.79-efi-chroot-blkid-fallback.patch
new file mode 100644
index 000000000000..b5b90b2214da
--- /dev/null
+++ b/sys-boot/os-prober/files/os-prober-1.79-efi-chroot-blkid-fallback.patch
@@ -0,0 +1,24 @@
+Fixes missing entries when os-prober is run in a chroot environment by falling back
+to blkid if udev isn't available or if /run/udev isn't bind mounted. Modified from
+https://build.opensuse.org/package/view_file/Base:System/os-prober/os-prober-05efi-blkid.patch?rev=103
+
+Bug: https://bugs.gentoo.org/761475
+ https://bugzilla.opensuse.org/1076779
+
+--- a/os-probes/mounted/x86/05efi
++++ b/os-probes/mounted/x86/05efi
+@@ -46,6 +46,14 @@ if type udevinfo > /dev/null 2>&1; then
+ fi
+
+ eval "$(udevinfo -q property -n "$partition" | grep -E '^ID_PART_ENTRY_(TYPE|SCHEME)=')"
++
++ # udev may not work in chroot as its db may not be there, bailout that by blkid (bsc#1076779)
++ if [ -z "$ID_PART_ENTRY_TYPE" -a -z "$ID_PART_ENTRY_SCHEME" ] &&
++ type blkid > /dev/null 2>&1; then
++ debug "fallback to blkid"
++ eval "$(blkid -p -o udev "$partition" | grep -E '^(ID_PART_ENTRY_(TYPE|SCHEME))=')"
++ fi
++
+ debug "$partition partition scheme is $ID_PART_ENTRY_SCHEME"
+ debug "$partition partition type is $ID_PART_ENTRY_TYPE"
+
diff --git a/sys-boot/os-prober/os-prober-9999.ebuild b/sys-boot/os-prober/os-prober-9999.ebuild
index 4c80110b8060..c854d403e4f0 100644
--- a/sys-boot/os-prober/os-prober-9999.ebuild
+++ b/sys-boot/os-prober/os-prober-9999.ebuild
@@ -31,14 +31,13 @@ PATCHES=(
"${FILESDIR}"/${PN}-1.79-use-fstab-name.patch
"${FILESDIR}"/${PN}-1.79-mounted-boot-partition-fix.patch
"${FILESDIR}"/${PN}-1.79-fix-busy-umount-message.patch
+ "${FILESDIR}"/${PN}-1.79-efi-chroot-blkid-fallback.patch
)
DOC_CONTENTS="
If you intend for os-prober to detect versions of Windows installed on
NTFS-formatted partitions, your system must be capable of reading the
NTFS filesystem. One way to do this is by installing sys-fs/ntfs3g.
- Also, in a chroot environment, it is necessary to bind mount /run/udev
- (see https://wiki.gentoo.org/wiki/GRUB2#os-prober_and_UEFI_in_chroot).
NOTE: Since sys-boot/grub-2.06-rc1, grub-mkconfig disables os-prober by default.
To enable it, add GRUB_DISABLE_OS_PROBER=false to /etc/default/grub.