Arch Linuxとsystemd-bootでデュアルブート
systemd-bootでArch Linuxを2つ、カーネルを分けて起動させる方法と記録。
早い話がEFIパーティションを /boot
にバインドマウントさせるだけなのでArch Wikiを見たほうが正確です。ソース情報はこちら。
この方法を使うと最初にインストールしたArchがバインドマウントを使っていなくても、新しくインストールするArchでバインドマウントを使えば分けられるので中々いいです(まだカーネルのアップデートとかはしてないのでわからないところもありますが...)。
インストール前の状態
インストール手順
基本的には普通のArchインストールの手順に従います。
この記事の「パーティションのマウント」の箇所を以下の手順に変更。
# mount /dev/sdX /mnt # Xはルートシステムを入れるパーティションのもの # mkdir /mnt/boot # mkdir /mnt/esp # mount /dev/sdY /mnt/esp # EFIシステムパーティション。 # mkdir /mnt/esp/EFI/arch # 「arch」は任意の名前でOK。ここを後で `/boot` にバインドマウントする。
ここからさらに「システムの設定-chroot」まで進めたら、 /boot
の中にインストールされたものを全て /esp/EFI/arch
に移動する。
mv /mnt/boot/* /mnt/esp/EFI/arch/
そしてバインドマウントをする。
# mount --bind /esp/EFI/arch/ /boot
以下を /etc/fstab
に追加してバインドマウントを永続化。
/esp/EFI/arch /boot none defaults,bind 0 0
後は普通の手順でインストールを続けます。最後にブートローダのインストールが待ち構えていますが、既にsystemd-bootは有効になっているので今インストールしたイメージを起動するための設定ファイルを追加します。
/boot/loader/entries/<filename>.conf
を編集。 <filename>
は任意。バインドマウントするために作ったディレクトリと同名にするのが無難?
title Arch Linux linux /EFI/arch/vmlinuz-linux initrd /EFI/arch/intel-ucode.img initrd /EFI/arch/initramfs-linux.img options root=PARTUUID=[PARTUUID] rw