diff options
author | Leah Rowe <leah@libreboot.org> | 2025-01-12 13:19:48 +0000 |
---|---|---|
committer | Leah Rowe <leah@libreboot.org> | 2025-01-12 13:19:48 +0000 |
commit | 5a3b0dab9668bbdc96d2bcf7e541fe0d99035b98 (patch) | |
tree | 56e4892b99bdc69c0c1b6996e6ef4ac21c480eb6 /config/grub/xhci | |
parent | 3c9f4be76f61c80060b4238eff96ef268272cffb (diff) |
grub.cfg: Scan *every* LVM device
We were scanning a hardcoded set up LVM volumes, so in practise,
LVM boot didn't really work. We did this because scanning for
asterisk is slow on some machines. However, since LVM is the last
one, and since most users don't boot directly from LVM, it wasn't
that much of an issue in practise.
Signed-off-by: Leah Rowe <leah@libreboot.org>
Diffstat (limited to 'config/grub/xhci')
-rw-r--r-- | config/grub/xhci/config/payload | 26 |
1 files changed, 11 insertions, 15 deletions
diff --git a/config/grub/xhci/config/payload b/config/grub/xhci/config/payload index 6a0fc250..ebfd1fea 100644 --- a/config/grub/xhci/config/payload +++ b/config/grub/xhci/config/payload @@ -1,5 +1,5 @@ # SPDX-License-Identifier: GPL-3.0-or-later -# Copyright (C) 2014-2016,2020-2021,2023-2024 Leah Rowe <leah@libreboot.org> +# Copyright (C) 2014-2016,2020-2021,2023-2025 Leah Rowe <leah@libreboot.org> # Copyright (C) 2015 Klemens Nanni <contact@autoboot.org> set prefix=(memdisk)/boot/grub @@ -156,16 +156,12 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o # 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 + # in practise, doing multiple redundant checks is perfectly fast # TODO: optimize grub itself, and use */? here for everything - for vol in ${lvmvol} ${raidvol} ; do + for vol in ${raidvol} ; do try_bootcfg "${vol}" done @@ -187,21 +183,21 @@ menuentry 'Load Operating System (incl. fully encrypted disks) [o]' --hotkey='o set pager=0 echo -n "Attempting to unlock encrypted volumes" - for dev in ${bootdev} ${lvmvol} ${raidvol}; do + for dev in ${bootdev} ${raidvol}; do if cryptomount "${dev}" ; then break ; fi done set pager=1 echo - # after cryptomount, lvm volumes might be available - for vol in ${lvmvol}; do - try_bootcfg "${vol}" - done - search_bootcfg crypto - for vol in lvm/* ; do - try_bootcfg "${vol}" + # after cryptomount, lvm volumes might be available + # using * is slow on some machines, but we use it here, + # just once. in so doing, we find every lvm volume + for vol in (*); do + if regexp ^lvm/ $vol; then + try_bootcfg "${vol}" + fi done true # Prevent pager requiring to accept each line instead of whole screen |