I accidentally updated grub and broke my system entirely. On an encrypted device (I am able to chroot and access everything though). After a while with no luck I decided to purge grub and install rEFInd. I think I have everything correct, I'm pulling my hair out at this point and have no idea what I'm doing wrong.
I want to boot directly to the EFI stub and have /boot as my EFI partition with kernels and stubs. I'm going to show what I have now, I don't even care about the fact I'm showing IDs or anything. Let me know if there's something I'm missing out on or configuring incorrectly, or if there is any way to run more diagnostics.
parted /dev/sda print
tells me:
Model: <blah> SanDisk <blah> (scsi)
Disk /dev/sda: 120GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags:
Number Start End Size File system Name Flags
1 1049kB 1050MB 1049MB fat32 boot, esp
3 1050MB 120GB 119GB
cat /etc/fstab
says:
/dev/mapper/ubuntu--vg-root / ext4 errors=remount-ro 0 1
UUID=D561-82E4 /boot vfat defaults 0 1
/dev/mapper/ubuntu--vg-swap_1 none swap sw 0 0
cat /etc/crypttab
reveals:
ubuntu-vg UUID=0c8ec1d0-58c2-44fc-b2bb-a83880a079de none luks,discard
tree /boot/
displays:
/boot/
├── abi-4.10.0-24.efi
├── config-4.10.0-24.efi
├── EFI
│ ├── refind
│ │ ├── icons
│ │ ├── keys
│ │ ├── refind.conf
│ │ └── refind_x64.efi
│ └── tools
├── initrd.img-4.10.0-22.efi
├── initrd.img-4.10.0-22-generic
├── initrd.img-4.10.0-24.efi
├── initrd.img-4.10.0-24-generic
├── System.map-4.10.0-24.efi
├── vmlinuz-4.10.0-24.efi
└── vmlinuz-4.10.0-24.efi.signed.efi
cat /etc/crypttab
prints:
ubuntu-vg UUID=0c8ec1d0-58c2-44fc-b2bb-a83880a079de none luks,discard
efibootmgr
shows:
BootCurrent: 0002
Timeout: 1 seconds
BootOrder: 0000,0002,0001,0001
Boot0000* ubuntu
Boot0001* rEFInd Boot Manager
Boot0002* UEFI : USB : SanDisk 1.26 : PART 0 : OS Bootloader
Here's the entry in the refind.conf file:
menuentry Ubuntu {
icon /EFI/refind/icons/os_kubuntu.png
loader /vmlinuz-4.10.0-24.efi
initrd /initrd.img-4.10.0-24.efi
options "ro cryptdevice=UUID=0c8ec1d0-58c2-44fc-b2bb-a83880a079de:lvm root=/dev/mapper/ubuntu--vg-root"
}
Entire blkid
command:
/dev/sda1: UUID="D561-82E4" TYPE="vfat" PARTUUID="a1234e37-91b0-4179-87d3-28eabf4ba49d"
/dev/sda3: UUID="0c8ec1d0-58c2-44fc-b2bb-a83880a079de" TYPE="crypto_LUKS" PARTUUID="5c4230fe-da7e-4826-980e-03dccc7c9c5e"
/dev/mapper/ubuntu--vg-swap_1: UUID="61516fcc-ecff-444a-a5d2-6382ae2a2a05" TYPE="swap"
/dev/mapper/ubuntu--vg-root: UUID="98fa485b-0e94-48b0-ae8a-7bc03de28eac" TYPE="ext4"
Do I need to provide a decryption key file? Am I supposed to be using the Partition UUID instead of the UUID somewhere?
/boot
is inadvisable in Ubuntu because package updates can fail. It's better to use separate/boot
and/boot/efi
(ESP) partitions, with/boot
using a Linux-native filesystem. – Rod Smith Jun 22 '17 at 12:58efibootmgr
output, which shows the problem: rEFInd is not first in the boot order. If you can boot to Ubuntu, you can runrefind-mkdefault
, which comes with rEFInd, to fix it. That usually works, but in some cases it doesn't, in which case other fixes will be required. – Rod Smith Jun 22 '17 at 17:34sudo mvrefind /boot/efi/EFI/refind /boot/efi/EFI/BOOT
. There's a good chance that this will get it working. The first link I presented a couple of comments ago is likely the cause, but usingmvrefind
to move rEFInd to the fallback boot loader (EFI/BOOT/bootx64.efi
on the ESP). – Rod Smith Jun 23 '17 at 13:07