I have two Archlinux installations on an EFI system set up with gummiboot. One is rooted at /dev/sda2, the other at /dev/sdb1. Both use /dev/sda1, the EFI system partition, as their /boot partition, but place their kernel images in different locations:
title Arch Linux linux /vmlinuz-linux initrd /intel-ucode.img initrd /initramfs-linux.img options root=/dev/sda2 rw
title HERE Arch Linux linux /here-img/vmlinuz-linux initrd /here-img/intel-ucode.img initrd /here-img/initramfs-linux.img options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw
This was fine until I updated the kernel from 4.8.13 to 4.9 on
sdb. The next time I booted into
sda, it failed with
Warning: /lib/modules/4.8.13-1-ARCH/modules.devname not found ... ERROR: device '/dev/sda2 not found. Skipping fsck. ...
I booted back into
sdb, reinstalled kernel 4.8.13, and found I could boot into
sda again. However, now I could no longer boot into
sdb, as it failed to load the encrypt hook needed to open /dev/sdb1.
I resolved this by chrooting into /dev/sdb1 from
sda and installing 4.9 again. This allowed me to boot into
sdb but not
Now I'm stuck in a loop where I need to rebuild my kernel image every time I want to switch between installations. It seems that the two kernels are interfering somehow.
Here are the steps I go through on my
sda install every time I want to boot into
sudo cryptsetup open /dev/sdb1 cryptroot sudo mount /dev/mapper/cryptroot /mnt/ sudo mount /dev/sda1 /mnt/boot/ chroot /mnt/ sudo pacman -U /var/cache/pacman/pkg/linux-4.8.13-1-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-375.20-3-x86_64.pkg.tar.xz /var/cache/pacman/pkg/nvidia-utils-375.20-3-x86_64.pkg.tar.xz
The steps I go through on
sdb when I want to move to
sda are similar, but fails with
/lib/modules/4.8.13-1-ARCH is not a valid kernel module directory
I resolve this by symlinking /lib/modules/4.9-1-ARCH to /lib/modules/4.8.13-1-ARCH.
I'm sure I'm doing at least one, if not many things wrong here (that symlink seems like a horrible hack). It seems like my kernels are interfering somehow. How can I fix this?