You are not logged in.

#1 2024-06-30 21:59:04

dddaaannn
Member
Registered: 2023-08-25
Posts: 4

[solved] Ethernet is out; modprobe looking for wrong kernel modules

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

#2 2024-06-30 22:14:51

ewaller
Administrator
From: Pasadena, CA
Registered: 2009-07-13
Posts: 20,487

Re: [solved] Ethernet is out; modprobe looking for wrong kernel modules

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

#3 2024-06-30 23:06:31

dddaaannn
Member
Registered: 2023-08-25
Posts: 4

Re: [solved] Ethernet is out; modprobe looking for wrong kernel modules

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. smile )

Thanks again!

Offline

#4 2024-07-01 07:59:52

seth
Member
From: Don't DM me only for attention
Registered: 2012-09-03
Posts: 69,517

Re: [solved] Ethernet is out; modprobe looking for wrong kernel modules

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

Board footer

Powered by FluxBB