UEFI laptop won't reboot after attempted kernel upgrade (-current)
by semiprime from LinuxQuestions.org on (#5D2V4)
I've messed up a kernel upgrade on current. Feels like a rite of passage for all Slackware users! Any help would be appreciated.
Background (from memory): I got a new laptop in December, so a recent kernel was required, so I decided to go for Slackware-current rather than 14.2.
I got AlienBOB's current iso, and put it on a USB stick. This was from about December 10th, kernel version 5.4.82. (I still have this stick to boot from).
All installed fine. I wiped the Windows10 partition. Partitions sda1: efi, sda2: swap, sda3: Slackware root. I used the huge kernel and didn't bother making an initrd (put off to later).
Skip forward to January. I've been putting off upgrading until the new kernel 5.10.x seemed stable. I have a snapshot of the Slackware packages from Dec 17 (kernel 5.4.84), so since I'm not used to UEFI, I decide to upgrade to that as a test before jumping to kernel 5.10.x.
I upgrade all using upgradepkg --install-new. I removepkg three packages listed as "removed" in the changelog. I run eliloconfig [select all the defaults]. I don't make a new initrd, since I'm using the huge kernel.
Reboot and ... it fails, complaining about the lack of 5.4.84 modules. Uh-oh. Maybe I needed that initrd.
So I reboot from the install iso to try to repair things, and after a bit of experimentation I do the following.
Chroot:
Code:mount /dev/sda3 /mnt
chroot /mnt /bin/bashMount things:
Code:mount -t proc none /proc
mount -t sysfs none /sys
mount /boot/efiGenerate an initrd:
Code:cd /boot
/usr/share/mkinitrd/mkinitrd_command_generator.sh -k 5.4.84 -i
# copy + run the output of mkinitrd_command_generator.sh:
mkinitrd -c -k 5.4.84 -f ext4 -r /dev/sda3 -m usb-storage:xhci-hcd:jbd2:mbcache:crc32c_intel:crc32c_generic:ext4 -l uk -u -o /boot/initrd.gzNo errors, so I run eliloconfig and choose all the defaults.
Checking /boot/efi/EFI/Slackware/ I see that indeed the generic kernel has been copied there, along with the initrd. Although /boot/vmlinuz points to vmlinuz-huge-5.4.84.
Trying to reboot, "shutdown now" doesn't work (no /dev/initctl) "poweroff" doesn't work (can't determine runlevel). So I hold down the power key until it powers down. Remove install usb. Reboot.
I get a Windows10 style screen (blue background, font that looks like Windows) that says:
Quote:
This is where I'm stuck. I hope the hard power-down didn't corrupt the UEFI partition.


Background (from memory): I got a new laptop in December, so a recent kernel was required, so I decided to go for Slackware-current rather than 14.2.
I got AlienBOB's current iso, and put it on a USB stick. This was from about December 10th, kernel version 5.4.82. (I still have this stick to boot from).
All installed fine. I wiped the Windows10 partition. Partitions sda1: efi, sda2: swap, sda3: Slackware root. I used the huge kernel and didn't bother making an initrd (put off to later).
Skip forward to January. I've been putting off upgrading until the new kernel 5.10.x seemed stable. I have a snapshot of the Slackware packages from Dec 17 (kernel 5.4.84), so since I'm not used to UEFI, I decide to upgrade to that as a test before jumping to kernel 5.10.x.
I upgrade all using upgradepkg --install-new. I removepkg three packages listed as "removed" in the changelog. I run eliloconfig [select all the defaults]. I don't make a new initrd, since I'm using the huge kernel.
Reboot and ... it fails, complaining about the lack of 5.4.84 modules. Uh-oh. Maybe I needed that initrd.
So I reboot from the install iso to try to repair things, and after a bit of experimentation I do the following.
Chroot:
Code:mount /dev/sda3 /mnt
chroot /mnt /bin/bashMount things:
Code:mount -t proc none /proc
mount -t sysfs none /sys
mount /boot/efiGenerate an initrd:
Code:cd /boot
/usr/share/mkinitrd/mkinitrd_command_generator.sh -k 5.4.84 -i
# copy + run the output of mkinitrd_command_generator.sh:
mkinitrd -c -k 5.4.84 -f ext4 -r /dev/sda3 -m usb-storage:xhci-hcd:jbd2:mbcache:crc32c_intel:crc32c_generic:ext4 -l uk -u -o /boot/initrd.gzNo errors, so I run eliloconfig and choose all the defaults.
Checking /boot/efi/EFI/Slackware/ I see that indeed the generic kernel has been copied there, along with the initrd. Although /boot/vmlinuz points to vmlinuz-huge-5.4.84.
Trying to reboot, "shutdown now" doesn't work (no /dev/initctl) "poweroff" doesn't work (can't determine runlevel). So I hold down the power key until it powers down. Remove install usb. Reboot.
I get a Windows10 style screen (blue background, font that looks like Windows) that says:
Quote:
Recovery Your PC/Device needs to be repaired A required device isn't connected or can't be accessed. Error code: 0xc0000225 You'll need to use recovery tools. If you don't have any installation media (like a disc or USB device), contact your PC administrator or PC/Device manufacturer. Press Enter to try again Press F1 to enter Recovery Settings Press F8 for Start-up Settings Press Esc for UEFI Firmware Settings |