summaryrefslogtreecommitdiffstats
path: root/resources/grub/config/menuentries
diff options
context:
space:
mode:
Diffstat (limited to 'resources/grub/config/menuentries')
-rw-r--r--resources/grub/config/menuentries/common.cfg52
1 files changed, 21 insertions, 31 deletions
diff --git a/resources/grub/config/menuentries/common.cfg b/resources/grub/config/menuentries/common.cfg
index 8a48dec..7b74ec3 100644
--- a/resources/grub/config/menuentries/common.cfg
+++ b/resources/grub/config/menuentries/common.cfg
@@ -1,51 +1,41 @@
menuentry 'Load Operating System (incl. fully encrypted disks) [O]' --hotkey='o' --hotkey='O' {
# GRUB handles (almost) every possible disk setup, but only the location of /boot is actually important,
-# since GRUB only loads the user's config. As soon as the kernel takes over, libreboot's done.
+# since GRUB only loads the user's config. As soon as the kernel takes over, autoboot's done.
# LVM, RAID, filesystems and encryption on both raw devices and partitions in all various combinations
# need to be supported. Since full disk encryption is possible with GRUB as payload and probably desired/used
-# by most users, libreboot GRUB config tries to load the operating system (kernel) in the following way:
+# by most users, autoboot GRUB config tries to load the operating system (kernel) in the following way:
# 1. Try to decrypt raw devices first. This <your disk setup> inside a LUKS container is pretty common
# a) Try LVM and RAID first, they might be used (accross multiple (raw) devices)
# b) Always try LVM before RAID (LVM on (raw) RAID)
# c) Try MBR/GPT partitions at last, one might still conviniently uses a single partition
- devs="(lvm/*) md/0 (md/0,*) ahci0 ahci1 (ahci0,*) (ahci1,*)"
- # d) Check every unencrypted device/partition first to avoid unnecessary decryption if /boot is
- # not encrypted
- for d in ${devs}; do
+
+ for d in (lvm/*) md/0 (md/0,*) ahci0 ahci1 (ahci0,*) (ahci1,*); do
+ # prompt user for passphrase if LUKS header is found
+ cryptomount ${d}
+ done
+
+ # (This way, we only need to scan for encrypted data once while covering every possible disk setup,
+ # be it LVM/BTRFS/ZFS/ext4/etc. (on LUKS) (on RAID) on/across raw devices/MBR/GPT
+
# 2. Look for user config. If the above routine successfully decrypted a LUKS container, its content
# will be searched before everything else for obvious reasons. Regardless of this, the devices'
# hirachy stays the same.
+ for d in crypto0 (crypt0,*) (lvm/*) md/0 (md0/,*) ahci0 ahci1 (ahci0,*) (ahci1,*); do
set root=${d}
# a) Check possible file locations...
- for p in boot/grub/libreboot_ grub/libreboot_ boot/grub/ grub/; do
+ for p in boot/grub/autoboot_ grub/autoboot_ boot/grub/ grub/; do
if [ -f "/${p}grub.cfg" ]; then
# b) And eventually try to load the config. Using ESC one can still exit and revert back to
- # libreboot's menu.
- configfile /${p}grub.cfg
- fi
- done
- done
- # (This way, we only need to scan for encrypted data once while covering every possible disk setup,
- # be it LVM/BTRFS/ZFS/ext4/etc. (on LUKS) (on RAID) on/across raw devices/MBR/GPT
- for d in ${devs}; do
- # prompt user for passphrase if LUKS header is found
- cryptomount ${d}
- done
- # 3. Do the same routine again, but for possibly decrypted data this time. There might be an LVM
- # inside the LUKS container, but check crypto0 first since lvm/* also covers already existing (and
- # therefore already scanned volumes as well)
- for d in crypto0 (crypt0,*) (lvm/*); do
- set root=${d}
- for p in boot/grub/libreboot_ grub/libreboot_ boot/grub/ grub/; do
- if [ -f "/${p}grub.cfg" ]; then
+ # autoboot's menu.
configfile /${p}grub.cfg
fi
done
done
- # 4. Last resort, if none of the above succeeds, all you have is GRUB's shell
+
+ # 3. Last resort, if none of the above succeeds, all you have is GRUB's shell
set root=ahci0,1
for p in / /boot/; do
if [ -f "${p}vmlinuz" ]; then
@@ -96,7 +86,7 @@ menuentry 'Parse ISOLINUX menu (USB) [U]' --hotkey='u' --hotkey='U' {
# GPT allows more than 4 partitions, /boot on /dev/sda7 is quite unlikely but still possible
for j in 0 1 2 3 4 5 6 7 8 9; do
set root=usb${i},${j}
- for p in /isolinux /syslinux; do
+ for p in "/isolinux" "/syslinux"; do
if [ -f "${p}${p}.cfg" ]; then
syslinux_configfile -i ${p}${p}.cfg
elif [ -f "/boot${p}${p}.cfg" ]; then
@@ -110,7 +100,7 @@ menuentry 'Parse ISOLINUX menu (CD/DVD) [D]' --hotkey='d' --hotkey='D' {
insmod ata
for x in ata0 ahci1; do
set root=${x}
- for p in /isolinux /syslinux; do
+ for p in "/isolinux" "/syslinux"; do
if [ -f "${p}${p}.cfg" ]; then
syslinux_configfile -i ${p}${p}.cfg
elif [ -f "/boot${p}${p}.cfg" ]; then
@@ -127,11 +117,11 @@ menuentry 'Search for GRUB configuration (grub.cfg) outside of CBFS [S]' --hotk
for i in ahci0 ahci1 usb0 usb1; do
for j in 1 2 3 4 5 6 7 8 9; do
x=${i},${j}
- for p in "" /grub /boot/grub /grub2 /boot/grub2; do
- if [ -f "${x}${p}/grub.cfg" ]; then
+ for p in "grub" "boot/grub" "grub2" "boot/grub2"; do
+ if [ -f "${x}/${p}/grub.cfg" ]; then
submenu "Load Config from ${x}" ${x} {
root=$2
- source ${p}/grub.cfg
+ source /${p}/grub.cfg
unset superusers
}
fi