Linux – What would cause the video driver to stop working after every update

arch linuxgraphicsupgradevideo

I am not sure if this is a systemd issue (like order of loading modules) or a video driver issue. It does seem like every time

  • I update boot-related stuff from a chrooted environment using my Arch ISO USB Stick, everything works.
  • It is when I update from a running native system that things go sour AND I think when boot-related things are in that update.

UPDATE 2016-04-18

I changed root (arch-chroot) into the machine and tried to rebuild the kernel with mkinitcpio -p linux. I get the following error:

ERROR: '/lib/modules/4.4.5-1-ARCH' is not a valid kernel module directory

uname -r (check kernel version) yields

4.3.3-2-ARCH

The folders in /lib/modules/

4.5.0-1-ARCH
extramodules-4.5-ARCH

Obviously when the kernel version numbers do not match the module version numbers, this is not good. Why would this happen? This would mean there is a problem with the way the system updates itself (pacman). Or did I do something wrong?

pacman -Qo /lib/modules/4.5.0-1-ARCH (check package owner) yields

/usr/lib/modules/4.5.0-1-ARCH/ is owned by linux 4.5-1
/usr/lib/modules/4.5.0-1-ARCH/ is owned by linux-headers 4.5-1

If you give me suggestions in the comments, I'll try to be prompt at adding information.

When Problem Happens

After running yaourt -Syau --noconfirm and rebooting, upon next boot my screen resolution gets messed up (appears the driver is working) and USB devices (keyboard+mouse) become nonresponsive. Could this be due to Grub?

Error after grub boot screen is

  • Failure to Load Kernel Modules

Machine Information

  1. Bootloader is Grub 2
  2. OS Arch Linux
  3. Graphics GeForce 9500 GT (rev a1) with driver nouveau (acquired using lspci -v | grep VGA -A 10)

I can chroot into this machine by booting from an Arch ISO USB stick. Maybe it is helpful to know that I have recovered the system by waiting a few days for another update and then updating the system from a chrooted environment. Suddenly, everything starts working again. This has happened three times already. It just happened today and it is getting irritating.

enter image description here
enter image description here

Possibly Related Questions

Best Answer

It is important to note immediately that it is not just the video that has been disrupted. The modules/drivers were not permitted to load because of version-matching restraints.

Update

This can be caused by having an error in /etc/fstab in the /boot mount for those who keep boot on a separate partition (usually EFI main boards). If during an update this partition is not mounted, the modules could (likely would) get upgraded while the kernel, which resides in /boot, would not. dkms normally prevents kernel-module mismatches.


I did indeed have kernel + module mismatch that led to the error message

ERROR: '/lib/modules/4.4.5-1-ARCH' is not a valid kernel module directory

mentioned in the question.

To fix it, I needed to boot from an Arch USB Stick and mount the OS and BOOT partitions to /mnt and /mnt/boot, respectively. I had to change root over to the machine arch-chroot /mnt /bin/bashand update my kernel manually (and forcefully).

pacman -Sy linux --force

This brought my system's kernel up to date with the modules (4.4.5-1-ARCH) such that they match (as they absolutely should!)

As to why there was a kernel + module mismatch, I don't know. I am hoping [dkms][1] will prevent this in the future. In my case, the modules weren't built when the new kernel was installed, rather, the modules were updated when the kernel was not.

Dynamic Kernel Module Support (DKMS) is a program/framework that enables generating Linux kernel modules whose sources generally reside outside the kernel source tree. The concept is to have DKMS modules automatically rebuilt when a new kernel is installed.

*Lerhaupt, Gary (September 1, 2003). "Kernel Korner - Exploring Dynamic Kernel Module Support (DKMS)". Linux Journal. Retrieved March 12, 2016.

Related Question