You are not logged in.
Something happened overnight that resulted in symptoms very similar to this old thread: https://bbs.archlinux.org/viewtopic.php?id=218827 My best guess is I did an update recently but did not reboot, a kernel update didn't properly update everything, and a power outage over night caused a reboot.
Ethernet device is missing.
lspci -v shows the "Intel Corporation Ethernet Controller I226-V (rev 06)." No "Kernel driver" is listed.
When I boot from a USB stick, ethernet works, and lspci -v shows it is using the igc driver.
Booting from the hard drive, modprobe igc says "modprobe: FATAL: Module igc not found in directory /lib/modules/6.4.11-arch2-1"
There is no /lib/modules/6.4.11-arch2-1, only /lib/modules/6.9.6-arch1-1.
uname -a says "Linux ... 6.4.11-arch2-1 ..."
pacman -Q linux says "linux 6.9.6.arch1-1"
I tried mkinitcpio -P and it claimed to be using 6.9.6 during the build, but rebooting immediately after still used 6.4.11.
I am using UEFI and EFISTUB to boot. I'm a little lost as to how this finds the kernel files, so I don't know what else to check. How do I diagnose and repair the boot process to use the correct kernel?
I gather that pacman was supposed to upgrade /boot automatically, but something must have gone wrong. What can I do to prevent this from happening again?
Last edited by dddaaannn (2024-07-01 17:23:37)
Offline
This usually happens when the boot volume is not mounted on /boot when an update is performed. Pacman writes the new kernel and initramfs to /boot expecting the boot partition to be mounted there. If it is not mounted, the new kernel and initramfs are written to the /boot directory, but not to the boot partition.
if you run mount | grep boot I imagine you have nothing mounted. If so, I bet you also have the new kernel under /boot.
To clean this up, you probably need to boot from the install media. Mount your root file system at /mnt and your boot volume to /mnt/boot
use arch-chroot /mnt just like you did when you did the install. Then, use pacman to reinstall the kernel.
exit the shell, umount /mnt/boot and /mnt, then power down, remove the install media and reboot. You should have the new kernel at this point.
Next, fix your /etc/fstab to mount the boot volume on /boot.
Finally, to really clean things up, unmount /boot. If you look in /boot with the boot volume dismounted, you will find files that don't belong there (they belong on the boot volume -- which we have already fixed). Clean out the /boot directory because you need nothing in there. Then, remount the boot volume on /boot.
Nothing is too wonderful to be true, if it be consistent with the laws of nature -- Michael Faraday
The shortest way to ruin a country is to give power to demagogues.— Dionysius of Halicarnassus
---
How to Ask Questions the Smart Way
Offline
Thanks very much! This is just what I needed! I was able to get all of that figured out, including the clean-up.
For future beginner searchers, the /etc/fstab file needs the UUID of the boot volume. To get that, use lsblk -f:
❯ lsblk -f
NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1 vfat FAT32 47B6-12EB 362M 29% /boot
├─nvme0n1p2 swap 1 30c934cf-6a2f-48c4-937b-e53bc706f542 [SWAP]
└─nvme0n1p3 ext4 1.0 72df3cf8-05fb-4e16-9e06-ec5380d8fc2e 770.6G 11% /I had to add the line about the boot volume to /etc/fstab, it wasn't there by default. My /etc/fstab now looks like this:
# Static information about the filesystems.
# See fstab(5) for details.
# <file system> <dir> <type> <options> <dump> <pass>
# /dev/nvme0n1p3
UUID=72df3cf8-05fb-4e16-9e06-ec5380d8fc2e / ext4 rw,relatime 0 1
# /dev/nvme0n1p2
UUID=30c934cf-6a2f-48c4-937b-e53bc706f542 none swap defaults 0 0
# /dev/nvme01n1p1
UUID=47B6-12EB /boot vfat rw,relatime 0 1"lsblk -f" will only show the /boot mountpoint if it is mounted. You can use this as confirmation about what /boot is actually looking at. From here, I used "umount /boot", used "lsblk -f" to confirm it is unmounted, then deleted the confusing and unneeded copy of the kernel in the /boot directory of the root volume (not the boot volume) that was hidden by the mount point. Then I could use "mount /boot" to get back to the desired state of /boot accessing the boot volume.
I also noticed it was possible to accidentally mount /boot twice, which required that I umount it twice. lsblk -f showed two mount points in this case. (I had no idea that was possible.
)
Thanks again!
Offline
Please always remember to mark resolved threads by editing your initial posts subject - so others will know that there's no task left, but maybe a solution to find.
Thanks.
Online