From 9918bfbd73024914207775c3bdbd2ffc40942d37 Mon Sep 17 00:00:00 2001 From: Francis Rowe Date: Wed, 07 Oct 2015 16:02:40 -0400 Subject: docs/tasks.html: tidy up --- (limited to 'resources/grub') 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 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 -- cgit v0.9.1