GummibootでセットアップされたEFIシステムに2つのArchlinuxをインストールしています。 1つは/ dev/sda2にルートされ、もう1つは/ dev/sdb1にルートされます。どちらも/ bootパーティションとして/ dev/sda1、EFIシステムパーティションを使用しますが、カーネルイメージを異なる場所に配置します。
/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
sdb
でカーネルを4.8.13から4.9に更新するまで、これは問題ありませんでした。次回sda
を起動したとき、次のように失敗しました。
Warning: /lib/modules/4.8.13-1-Arch/modules.devname not found
...
ERROR: device '/dev/sda2 not found. Skipping fsck.
...
sdb
を再起動し、カーネル4.8.13を再インストールしたところ、sda
を再度起動できることがわかりました。ただし、/ dev/sdb1を開くために必要な暗号化フックを読み込めなかったため、sdb
を起動できなくなりました。
sda
から/ dev/sdb1にchrootし、4.9を再度インストールすることで、これを解決しました。これにより、sdb
で起動できましたが、sda
では起動できませんでした。
今、私はインストールを切り替えるたびにカーネルイメージを再構築する必要があるループで立ち往生しています。 2つのカーネルが何らかの形で干渉しているようです。
sda
を起動するたびに、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
sdb
に移動したいときに、sda
で実行する手順は似ていますが、失敗します。
/lib/modules/4.8.13-1-Arch is not a valid kernel module directory
/lib/modules/4.9-1-Archを/lib/modules/4.8.13-1-Archにシンボリックリンクすることでこれを解決します。
ここで多くの問題がないにしても、少なくとも1つは実行していると確信しています(そのシンボリックリンクは恐ろしいハックのようです)。私のカーネルが何らかの形で干渉しているようです。どうすればこれを修正できますか?
Archフォーラムでなんとか 助けを得る そしてここでそれを共有したかった。
各システムは異なるinitramfsイメージに書き込んでいましたが、どちらも同じカーネルを上書きしていました。リポジトリに含まれる linux パッケージは、常にイメージを/ boot/vmlinuz-linuxに配置します。議論されたいくつかのオプションがありました:
最も単純に思えたので、私は1を選びました。 1つのシステムにlinux
の代わりにlinux-lts
をインストールすると、カーネルが干渉するのを防ぎました。ブートエントリは次のようになります。
/ boot/loader/entrys/Arch.conf
title Arch Linux
linux /vmlinuz-linux
initrd /intel-ucode.img
initrd /initramfs-linux.img
options root=/dev/sda2 rw
/ boot/loader/entrys/Arch-here.conf
title HERE Arch Linux
linux /vmlinuz-linux-lts
initrd /initramfs-linux-lts.img
options cryptdevice=/dev/sdb1:cryptroot root=/dev/mapper/cryptroot rw
このアプローチを採用したいnvidiaユーザーは、nvidia
ではなくnvidia-lts
をインストールする必要があることに注意してください。