Score:1

How do I completely uninstall and reinstall a Linux kernel update?

in flag

This problem started when I was installing Ubuntu updates today, 125 packages were to be updated. I ran sudo apt update followed by apt list --upgradable and sudo apt upgrade on my laptop, then turned to my desktop machine to continue with other work. I noticed the laptop's screen had gone dark, and when I looked, there was a cursor blinking in the upper left corner, nothing else on the screen. I tried switching to a different virtual terminal, but didn't get any response. I hit the power button briefly to see if that would get any response, and the laptop shut down. When I restarted the laptop, it returned to the same blinking cursor screen. This time, however, I was able to get a virtual terminal opened by pressing Ctrl-Alt-F1 and I logged in. I reviewed the list of packages that had been installed with a tech support guy, and he identified the problem as being a bad video driver upgrade, from nvidia-driver-460 to nvidia-driver-470, and said we had to install nvidia-driver-495.

When I tried to install the nvidia-driver-495 package, I got an error message saying dpkg had been interrupted and I needed to run sudo dpkg --configure -a which looked like it installed everything else that had been pending from the list of 125 packages. I then tried installing nvidia-driver-495 again, but that said it was missing nvidia-driver-510 as a dependency. I then ran sudo apt install to install nvidia-driver-510 and all of its dependencies. I checked the GUI terminal at Ctrl-Alt-F7 and it still just had the blinking cursor. I then ran sudo apt install nvidia-driver-495 which didn't produce any errors - but I still only had the blinking cursor on the GUI terminal.

I rebooted the laptop, and got

error: can't find command `hwmatch'
error: can't allocate initrd.

Press any key to continue...

followed by a kernel panic. I restarted the laptop and got only the can't allocate initrd message, again followed by a kernel panic. When I again restarted the laptop, I was offered the GRUB menu, and was able to boot the machine using the previous kernel, 5.13.0-28.

After some research, I ran sudo update-initramfs -c -k 5.13.0-30-generic and rebooted the machine - and had the same failure pattern, finally booting back into the -28 kernel to continue. I poked around a bit more, then ran update-grub, rebooted - and went through the same cycle again.

I tried deleting the -30 kernel files from /boot, running sudo apt update which said all of the packages were up to date, running sudo apt remove to delete all of the -30 files, running update-grub again - and apt update kept insisting all of the packages were up to date: It's like it knew it installed a new kernel version, but then failed to notice when it got removed. I rebooted the laptop, which was successful since it was starting the previously working -28 kernel - and apt update still didn't have a clue about the kernel upgrade. I ran sudo apt-get remove --purge with the list of -30 files, which only purged the configuration files, since the packages themselves had already been removed - and apt update remained blissfully ignorant of the new kernel.

I ran apt list --installed | grep linux-image which listed the two kernels still installed, -27 and -28. I ran apt-cache search linux-image|grep 13|grep generic which gave me a short list of kernels that could be installed. I then ran sudo apt-get install linux-headers-5.13.0-30-generic linux-hwe-5.13-headers-5.13.0-30 linux-image-5.13.0-30-generic linux-modules-5.13.0-30-generic linux-modules-extra-5.13.0-30-generic to reinstall all of the required packages. Part of the output was

/etc/kernel/header_postinst.d/dkms:
 * dkms: running auto installation service for kernel 5.13.0-30-generic

Kernel preparation unnecessary for this kernel.  Skipping...

which left me wondering if a required step had been passed by. Everything else looked OK, so I rebooted the machine - and got back to

error: can't find command `hwmatch'
error: can't allocate initrd.

and the kernel panics. I was eventually able to sort out the missing hwmatch problem through another couple of reboots by following advice from https://www.linux.org/threads/error-cant-find-command-hwmatch-during-boot.32618/ - copying /usr/lib/grub/i386-pc/hwmatch.mod into the /boot/efi/efi/grub directory I had to create.

One of the things I've noticed is the -30 initrd image is 50+% larger than the others:

-rw-r--r-- 1 root root  99M Mar  2 16:41 initrd.img-5.13.0-27-generic
-rw-r--r-- 1 root root  99M Mar  2 16:57 initrd.img-5.13.0-28-generic
-rw-r--r-- 1 root root 156M Mar  2 21:41 initrd.img-5.13.0-30-generic

That may be part of the problem, or it may be a consequence of the problem, I'm not sure.

After running sudo apt-get remove --purge to remove all of the -30 packages again, I ran sudo find / -xdev -name "*5.13.0-30*" which only returned

/var/cache/apt/archives/linux-headers-5.13.0-30-generic_5.13.0-30.33~20.04.1_amd64.deb
/var/cache/apt/archives/linux-modules-extra-5.13.0-30-generic_5.13.0-30.33~20.04.1_amd64.deb
/var/cache/apt/archives/linux-image-5.13.0-30-generic_5.13.0-30.33~20.04.1_amd64.deb
/var/cache/apt/archives/linux-hwe-5.13-headers-5.13.0-30_5.13.0-30.33~20.04.1_all.deb
/var/cache/apt/archives/linux-modules-5.13.0-30-generic_5.13.0-30.33~20.04.1_amd64.deb

I didn't think those files were the problem, but after unsuccessfully trying to find another reason for the "Kernel preparation unnecessary for this kernel" message, I used find to delete them. When I ran sudo apt-get install again, however, I got the same "Kernel preparation unnecessary" message - and rebooting got me back to the error: can't allocate initrd problem.

I've now removed the -30 kernel again so I don't have to fight with the laptop when I want to reboot it, but I would like to install the new kernel which I'm sure has some security fixes.

What do I need to do to make Ubuntu forget that the -30 kernel was ever installed, so that I can successfully install it into a bootable state?

mangohost

Post an answer

Most people don’t grasp that asking a lot of questions unlocks learning and improves interpersonal bonding. In Alison’s studies, for example, though people could accurately recall how many questions had been asked in their conversations, they didn’t intuit the link between questions and liking. Across four studies, in which participants were engaged in conversations themselves or read transcripts of others’ conversations, people tended not to realize that question asking would influence—or had influenced—the level of amity between the conversationalists.