トリプルブート設定(3xLinux)があります。すべてのLinuxは共有され、/home
互いに隣にパーティションがswap
あります。/
すべてLUKSのLVMにあります。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
nvme0n1 259:0 0 951.8G 0 disk
|-nvme0n1p1 259:1 0 800M 0 part /boot/efi
|-nvme0n1p2 259:2 0 32G 0 part
|-nvme0n1p3 259:3 0 619M 0 part
`-nvme0n1p4 259:4 0 706.5G 0 part
`-cryptolvm 254:0 0 706.5G 0 crypt
|-cryptolvm-swap 254:1 0 32G 0 lvm [SWAP]
|-cryptolvm-home 254:2 0 430.0G 0 lvm /home
|-cryptolvm-centos 254:3 0 41G 0 lvm /mnt/centos
|-cryptolvm-arch 254:4 0 41G 0 lvm /
`-cryptolvm-opensuse 254:5 0 41G 0 lvm /mnt/opensuse
openSUSEはGRUB2を管理します(完全暗号化の使用、つまりgrubメニューがopenSUSEシステムパーティションに常駐する前にディスクロック解除パスワードが必要です/
)。
質問:Archは暗号化されたディスクのロックを解除しないため、/dev/nvme0n1p4
起動/
中にアクセスできません。緊急警報を見ることができます。
これはArch Linuxの設定です:
mkinitcpio
設定(はい、この設定を変更して再作成しました/boot/initramfs-linux.img
):
# grep crypt /etc/mkinitcpio.conf | tail -1
HOOKS=(base udev autodetect modconf keyboard block encrypt lvm2 filesystems fsck)
openSUSEのGRUB2構成:
# grep --after=18 Arch /mnt/opensuse/boot/grub2/grub.cfg
menuentry 'Arch Linux (rolling) (on /dev/mapper/cryptolvm-arch)' --class arch --class gnu-linux --class gnu --class os $menuentry_id_option 'osprober-gnulinux-simple-aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa' {
insmod part_gpt
insmod cryptodisk
insmod luks
insmod gcry_rijndael
insmod gcry_rijndael
insmod gcry_sha256
insmod lvm
insmod ext2
cryptomount -u 99999999999999999999999999999999
set root='lvmid/VVVVVV-VVVV-VVVV-VVVV-VVVV-VVVV-VVVVVV/qqqqqq-qqqq-qqqq-qqqq-qqqq-qqqq-qqqqqq'
if [ x$feature_platform_search_hint = xy ]; then
search --no-floppy --fs-uuid --set=root --hint='lvmid/VVVVVV-VVVV-VVVV-VVVV-VVVV-VVVV-VVVVVV/qqqqqq-qqqq-qqqq-qqqq-qqqq-qqqq-qqqqqq' aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
else
search --no-floppy --fs-uuid --set=root aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
fi
linuxefi /boot/vmlinuz-linux cryptdevice=UUID=99999999999999999999999999999999:cryptolvm root=/dev/mapper/cryptolvm-arch resume=/dev/cryptolvm/swap splash=silent quiet showopts
initrdefi /boot/initramfs-linux.img
}
LVMデバイス:
# vgs -v
VG Attr Ext #PV #LV #SN VSize VFree VG UUID VProfile
cryptolvm wz--n- 4.00m 1 5 0 706.45g <120.51g VVVVVV-VVVV-VVVV-VVVV-VVVV-VVVV-VVVVVV
# lvs -v | grep arch
arch cryptolvm 1 -wi-ao---- <40.96g -1 -1 254 4 qqqqqq-qqqq-qqqq-qqqq-qqqq-qqqq-qqqqqq
ディスク/パーティションUUID:
# blkid | egrep '(p4|arch)'
/dev/nvme0n1p4: UUID="99999999-9999-9999-9999-999999999999" TYPE="crypto_LUKS" PARTUUID="cccccccc-cccc-cccc-cccc-cccccccccccc"
/dev/mapper/cryptolvm-arch: UUID="aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa" PARTUUID="cccccccc-cccc-cccc-cccc-cccccccccccc"
解決策:
GRUB2(またはinitramfs)を使用すると(または)/dev/mapper/cryptolvm-arch
にインストールできないため、プロンプトが表示されます。したがって、起動するたびに次のように手動で入力します。/
/new_root
> cryptsetup open /dev/nvme0n1p4 cryptolvm
(...)
> mount /dev/mapper/cryptolvm-arch /new_root
> ^D
これはなぜ必要ですか?このインストールは2回(cryptomount
および)提供されました(実際に使用されました)cryptdevice
。grub.cfg
編集する:
たぶんこれはEFIに関連していますか?もしそうなら、EFIエラーが発生しますか? openSUSEはEFIを介して起動し、grub.cfg
EFIからチェーンをロードして/
Archを起動します。linuxefi
これは正しいですか?
GRUB2が緊急シェルに送信する直前にキーを入力すると、画面に表示されます。シェルが開いている場合、入力した文字はまだバッファに残り、シェルに入力されます。
答え1
システムを起動し、rd.debug(init-ramdiskデバッグ)カーネルフラグを追加します。これは問題を説明する必要があります。
1つがある場合はxtrace出力を使用して最後の画面を表示するか、自分で理解できない場合は2つを表示できます。
あるいは、出力をファイルに送信することもできます(カーネルオプションにrd.log = allフラグを追加するなど)、起動が完了した後にログをコピー可能でより良いスクロール可能なテキストとして取得できる必要があります。
また、上記のスニペットで何らかの理由でUUIDを匿名化したことを忘れていました。元の構成が何であるかはわかりませんが、ダッシュを忘れていました。
私のシステムの例(blkidはカーネルオプションで物理デバイスを見つけるために実行するコマンドでありcryptdevice=UUID=21685fd6-f2e3-4037-8645-3957cff3568c:cryptolvm
、cryptodevice =の最初のコロンまでの部分は次のように検索されます。
[root@ArchTestVM ~]# blkid -lt "UUID=21685fd6-f2e3-4037-8645-3957cff3568c" -o device
/dev/nvme0n1p2
[root@ArchTestVM ~]# blkid -lt "UUID=21685fd6f2e3403786453957cff3568c" -o device
[root@ArchTestVM ~]#
答え2
/dev/mapper/cryptolvm-arch
「GRUB2はインストールできないのでプロンプトを表示します/
」と言うが、GRUBプロンプトのようには見えません。入力したコマンドはGRUBコマンドではなく(Arch)Linuxコマンドです。 EFI、GRUB、そして明らかにArchに移動しましたinitramfs
。
プロンプトは、initramfsベースの緊急シェルプロンプトのように見えます。 GRUBの使命は、カーネルとinitramfsファイルの2つをロードすることです。 GRUBがこれを完了し、コントロールをカーネルに渡した後、GRUBの使命は次のとおりです。完璧。このcryptomount
コマンドはGRUBにこの目的のために暗号化されたディスクのロックを解除するように指示しますが、GRUBはこのロック解除状態または暗号化パスワードでさえカーネルに渡すことはできません。
カーネルが起動したら、initramfs
パスワードの再入力を求めるか、initramfsファイルにパスワードを保存してディスク暗号化を再ロックするために必要なすべてのツールが必要です。これは、initramfsファイルが暗号化されたディスクに保存されるためです。 、可能です。許可されます。
また、「…設置できませんから」とおっしゃったことに注意して/dev/mapper/cryptolvm-arch
ください/
。エラーメッセージがまさにそのような場合、initramfsが/
何らかの理由で直接マウントしようとするのが問題かもしれません。これはできません。代わりに、新しいルートファイルシステムを最初に別の場所(たとえば/new_root
)にマウントする必要があります。その後、initramfsの特別なコマンド変化新しいルートファイルシステムを準備しました。
EFIとGRUBを見るのではなく、Arch initramfsファイルの内容に集中する必要があります。手動で入力した2つのコマンドを正確に実行する必要があります(構文置換を使用/dev/nvme0n1p4
)UUID=
、何らかの理由でそのようなことは発生しません。理由を見つけたら、問題の原因を見つけることができます。