summarylogtreecommitdiffstats
path: root/os-prober-haiku-efi.patch
diff options
context:
space:
mode:
Diffstat (limited to 'os-prober-haiku-efi.patch')
-rw-r--r--os-prober-haiku-efi.patch48
1 files changed, 48 insertions, 0 deletions
diff --git a/os-prober-haiku-efi.patch b/os-prober-haiku-efi.patch
new file mode 100644
index 000000000000..1c85a8d9af62
--- /dev/null
+++ b/os-prober-haiku-efi.patch
@@ -0,0 +1,48 @@
+diff --git a/os-probes/mounted/x86/83haiku b/os-probes/mounted/x86/83haiku
+index 6de7a1d..4bbe71b 100755
+--- a/os-probes/mounted/x86/83haiku
++++ b/os-probes/mounted/x86/83haiku
+@@ -7,6 +7,12 @@ partition="$1"
+ mpoint="$2"
+ type="$3"
+
++# This script looks for legacy BIOS bootloaders only. Skip if running UEFI
++if [ -d /sys/firmware/efi ] && [ ! -f /var/lib/partman/ignore_uefi ]; then
++ debug "Skipping legacy bootloaders on UEFI system"
++ exit 1
++fi
++
+ # Weed out stuff that doesn't apply to us
+ case "$type" in
+ befs|befs_be) debug "$partition is a BeFS partition" ;;
+diff --git a/os-probes/mounted/x86/efi/30haiku b/os-probes/mounted/x86/efi/30haiku
+new file mode 100755
+index 0000000..25687a5
+--- /dev/null
++++ b/os-probes/mounted/x86/efi/30haiku
+@@ -0,0 +1,25 @@
++#!/bin/sh
++# Detects Haiku on BeFS partitions.
++
++. /usr/share/os-prober/common.sh
++
++efi="$1"
++
++found=
++for boot in $(item_in_dir boot "$efi"); do
++ haikuefi=$(item_in_dir haikux64.efi "$efi/$boot")
++ if [ -n "$haikuefi" ]; then
++ long="Haiku EFI Boot Mgr"
++ short=Haiku
++ path="$boot/$haikuefi"
++ found=true
++ break
++ fi
++done
++
++
++if [ -n "$found" ]; then
++ label="$(count_next_label "$short")"
++ result "${path}:${long}:${label}"
++fi
++exit 0