J'ai deux installations Archlinux sur un système EFI configuré avec gummiboot. L'une est enracinée sur /dev/sda2, l'autre sur /dev/sdb1. Les deux utilisent /dev/sda1, la partition système EFI, comme partition /boot, mais placent leurs images de noyau à des endroits différents :
/boot/loader/entries/arch.conf :
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/sda2 rw
/boot/loader/entries/arch-here.conf :
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
Tout allait bien jusqu'à ce que je mette à jour le noyau de 4.8.13 à 4.9 sur sdb
. La prochaine fois que j'ai démarré dans sda
il a échoué avec
Warning: /lib/modules/4.8.13-1-ARCH/modules.devname not found
...
ERROR: device '/dev/sda2 not found. Skipping fsck.
...
J'ai redémarré dans sdb
j'ai réinstallé le noyau 4.8.13, et j'ai trouvé que je pouvais démarrer dans sda
à nouveau. Cependant, je ne pouvais plus démarrer dans sdb
car il n'a pas réussi à charger le hook d'encryptage nécessaire pour ouvrir /dev/sdb1.
J'ai résolu ce problème en accédant à /dev/sdb1 à partir de sda
et en installant à nouveau la 4.9. Cela m'a permis de démarrer dans sdb
mais pas sda
.
Maintenant, je suis coincé dans une boucle où je dois reconstruire mon image de noyau chaque fois que je veux passer d'une installation à l'autre. Il semble que les deux noyaux interfèrent d'une manière ou d'une autre.
Voici les étapes que j'ai suivies sur mon sda
installer à chaque fois que je veux démarrer dans sdb
:
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
Les étapes que je passe sur sdb
quand je veux passer à sda
sont similaires, mais échouent avec
/lib/modules/4.8.13-1-ARCH is not a valid kernel module directory
Je résous ce problème en établissant un lien symbolique entre /lib/modules/4.9-1-ARCH et /lib/modules/4.8.13-1-ARCH.
Je suis sûr que je fais au moins une, sinon plusieurs choses de travers ici (ce lien symbolique semble être un horrible hack). Il semble que mes noyaux interfèrent d'une manière ou d'une autre. Comment puis-je corriger cela ?