summaryrefslogtreecommitdiff
path: root/config/grub
diff options
context:
space:
mode:
Diffstat (limited to 'config/grub')
-rw-r--r--config/grub/config/grub.cfg36
1 files changed, 14 insertions, 22 deletions
diff --git a/config/grub/config/grub.cfg b/config/grub/config/grub.cfg
index 8a124062..e10cebd7 100644
--- a/config/grub/config/grub.cfg
+++ b/config/grub/config/grub.cfg
@@ -46,7 +46,9 @@ fi
function try_user_config {
set root="${1}"
- for dir in boot grub grub2 boot/grub boot/grub2; do
+
+ # The @/... entries are for cases where the BTRFS filesystem is being used
+ for dir in boot grub grub2 boot/grub boot/grub2 @/boot @/grub @/grub2 @/boot/grub @/boot/grub2; do
for name in '' osboot_ autoboot_ libreboot_ coreboot_; do
if [ -f /"${dir}"/"${name}"grub.cfg ]; then
unset superusers
@@ -90,28 +92,10 @@ function search_isolinux {
}
menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o' {
- if [ "${grub_scan_disk}" != "ata" ]; then
- search_grub ahci
- fi
- if [ "${grub_scan_disk}" != "ahci" ]; then
- search_grub ata
- fi
-
- # grub device enumeration is very slow, so checks are hardcoded
-
- # TODO: add more strings, based on what distros set up when
- # the user select auto-partitioning on those installers
lvmvol="lvm/grubcrypt-bootvol lvm/grubcrypt-rootvol"
raidvol="md/0 md/1 md/2 md/3 md/4 md/5 md/6 md/7 md/8 md/9"
- # in practise, doing multiple redundant checks is perfectly fast and
- # TODO: optimize grub itself, and use */? here for everything
-
- for vol in ${lvmvol} ${raidvol} ; do
- try_user_config "${vol}"
- done
-
unset ahcidev
unset atadev
for i in 11 10 9 8 7 6 5 4 3 2 1 0; do
@@ -133,12 +117,20 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o
set pager=1
echo
- # after cryptomount, lvm volumes might be available
- for vol in ${lvmvol}; do
+ # prefer crypto first (lvm before raid, because lvm
+ # volumes might exist inside luks/luks2)
+ search_grub crypto
+ for vol in ${lvmvol} ${raidvol}; do
try_user_config "${vol}"
done
- search_grub crypto
+ # non-encrypted next, if crypto wasn't available
+ if [ "${grub_scan_disk}" != "ata" ]; then
+ search_grub ahci
+ fi
+ if [ "${grub_scan_disk}" != "ahci" ]; then
+ search_grub ata
+ fi
if [ "${grub_scan_disk}" != "ata" ]; then
# Last resort, if all else fails