/lib/partman/check.d/08biosgrub is in ubiquity 2.18.7.
This file is owned by root:root, with mode 0o755.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | #! /bin/sh
. /lib/partman/lib/base.sh
# Keep this in sync with grub-installer.
want_method=
ARCH="$(archdetect)"
case $ARCH in
i386/mac|amd64/mac)
if [ -d /sys/firmware/efi ]; then
want_method=efi
else
want_method=biosgrub
fi
;;
i386/efi|amd64/efi)
want_method=efi
;;
i386/*|amd64/*|*-i386/*|*-amd64/*)
want_method=biosgrub
;;
*)
exit 0
;;
esac
# Do all the disks on this system use GPT?
found_gpt=no
found_non_gpt=no
for dev in $DEVICES/*; do
[ -d "$dev" ] || continue
cd "$dev"
open_dialog GET_LABEL_TYPE
read_line label_type
close_dialog
if [ "$label_type" = gpt ]; then
found_gpt=yes
else
found_non_gpt=yes
fi
done
if [ "$found_gpt" = no ] || [ "$found_non_gpt" = yes ]; then
# We might be intending to boot from one of the non-GPT disks.
exit 0
fi
# Is there at least one EFI System Partition or BIOS Boot Partition, as
# appropriate?
have_bootable=no
for dev in $DEVICES/*; do
[ -d "$dev" ] || continue
cd "$dev"
partitions=
open_dialog PARTITIONS
while { read_line num id size type fs path name; [ "$id" ]; }; do
[ "$fs" != free ] || continue
partitions="$partitions $id,$num"
done
close_dialog
for part in $partitions; do
id="${part%,*}"
num="${part#*,}"
[ -f "$id/method" ] || continue
method="$(cat "$id/method")"
if [ "$method" = "$want_method" ]; then
have_bootable=yes
break
fi
done
done
if [ "$have_bootable" = no ]; then
template="partman-partitioning/no_bootable_gpt_$want_method"
db_set "$template" true
db_input critical "$template" || true
db_go || true
db_get "$template"
if [ "$RET" = true ]; then
exit 1
fi
fi
exit 0
|