After a recent update, I could no longer boot. I tried to fix it by booting with different kernels, but I noticed that the kernels listed by sudo clr-boot-manager list-kernels
were not the same as those appearing in the bootloader (shown by hitting the space-bar on boot).
In particular, the latest kernels I downloaded (current-5.6.18-156 and lts-4.9.227-160) were not visible in the bootloader.
Here's what things looked like:
alexp@laptop ~ $ sudo clr-boot-manager list-kernels
com.solus-project.current.5.6.18-156
com.solus-project.lts.4.9.107-97
com.solus-project.lts.4.9.168-129
(*) com.solus-project.lts.4.9.227-160
My bootloader would show me the following entries:
Solus-lts-4.9.107-97
Solus-lts-4.9.168-129
Solus-lts-4.9.223-158
This behavior is reflected by the content of /boot, which is a bit of a mess:
alexp@laptop /boot $ tree
.
├── boot -> .
├── efi
│ ├── Boot
│ │ └── BOOTX64.EFI
│ ├── com.solus-project
│ │ ├── initrd-com.solus-project.current.5.6.18-156
│ │ ├── initrd-com.solus-project.lts.4.9.107-97
│ │ ├── initrd-com.solus-project.lts.4.9.168-129
│ │ ├── initrd-com.solus-project.lts.4.9.227-160
│ │ ├── kernel-com.solus-project.current.5.6.18-156
│ │ ├── kernel-com.solus-project.lts.4.9.107-97
│ │ ├── kernel-com.solus-project.lts.4.9.168-129
│ │ └── kernel-com.solus-project.lts.4.9.227-160
│ ├── EFI
│ │ ├── Boot
│ │ │ └── BOOTX64.EFI
│ │ ├── com.solus-project
│ │ │ ├── initrd-com.solus-project.lts.4.9.107-97
│ │ │ ├── initrd-com.solus-project.lts.4.9.168-129
│ │ │ ├── initrd-com.solus-project.lts.4.9.18-10
│ │ │ ├── initrd-com.solus-project.lts.4.9.20-12
│ │ │ ├── initrd-com.solus-project.lts.4.9.22-17
│ │ │ ├── initrd-com.solus-project.lts.4.9.223-158
│ │ │ ├── initrd-com.solus-project.lts.4.9.23-21
│ │ │ ├── kernel-com.solus-project.lts.4.9.107-97
│ │ │ ├── kernel-com.solus-project.lts.4.9.168-129
│ │ │ ├── kernel-com.solus-project.lts.4.9.18-10
│ │ │ ├── kernel-com.solus-project.lts.4.9.20-12
│ │ │ ├── kernel-com.solus-project.lts.4.9.22-17
│ │ │ ├── kernel-com.solus-project.lts.4.9.223-158
│ │ │ └── kernel-com.solus-project.lts.4.9.23-21
│ │ ├── goofiboot
│ │ │ └── goofibootx64.efi
│ │ └── systemd
│ │ └── systemd-bootx64.efi
│ ├── loader
│ │ ├── entries
│ │ │ ├── Solus-lts-4.9.107-97.conf
│ │ │ ├── Solus-lts-4.9.168-129.conf
│ │ │ └── Solus-lts-4.9.223-158.conf
│ │ ├── loader.conf
│ │ └── random-seed
│ └── systemd
│ └── systemd-bootx64.efi
└── loader
├── entries
│ ├── Solus-current-5.6.18-156.conf
│ ├── Solus-lts-4.9.107-97.conf
│ ├── Solus-lts-4.9.168-129.conf
│ └── Solus-lts-4.9.227-160.conf
└── loader.conf
I ended up manually copying the files for kernels lts-4.9.227-150 and current-5.6.18-158 to the corresponding directories one level deeper (/boot/loader/entires --> /boot/efi/loader/entries and /boot/efi/com.solus-project --> /boot/efi/EFI/com.solus-project). After doing so, they are present as options in the bootloader, and I could boot correctly on the current kernel (for some reason, none of the lts kernels will boot). The two lists still don't match up and sudo clr-boot-manager update
has removed all but the most recent lts and current kernels from the output of sudo clr-boot-manager list-kernels
.
Futhermore, sudo clr-boot-manager set-kernel
has no influence on which kernel is picked by the bootloader if I don't select one myself.
How can I fix this, and prevent this from happening again next time there is a kernel update?
If possible, I would like to keep the option to boot with the last 3 lts kernels, since the current kernel causes some screen-flickering.