私の唯一のディスクのレイアウトは次のとおりです。
/dev/sda1 for the plaintext boot partition /dev/sda2 for the encrypted root partition
私のシステムはArchLinuxで、このガイドルート暗号化を設定する(LVMなし、RAIDなし)。私がやったことは次のとおりcryptsetup
です/dev/sda2
。/dev/mapper/cryptroot
私のは/etc/fstab
こんな感じです:
UUID=of /dev/mapper/cryptroot / ext4 rw,relatime,data=ordered,discard 0 1 UUID=of /dev/sda1 /boot ext4 rw,relatime,data=ordered,discard 0 2
私の場合は/etc/default/grub
、1 行を次のように変更しました。
GRUB_CMDLINE_LINUX="cryptdevice=UUID of /dev/sda2:cryptroot:allow-discards"
フックは/etc/mkinitcpio.conf
次のようになります。
HOOKS="base udev autodetect modconf block encrypt filesystems keyboard fsck"
mkinitcpio -p linux
最後に、それぞれ走ることも忘れませんでしたgrub-mkconfig -o /boot/grub/grub.cfg
。
以前、ルート ファイルシステムの暗号化の設定に成功していたため、このように素早くアクションを列挙しました。その結果、次のエラーが発生します。
ERROR: device *UUID of /dev/mapper/cryptroot* not found. Skipping fsck. ERROR: unable to find root device *UUID of /dev/mapper/cryptroot* You are being dropped into recovery shell
奇妙なのは、暗号化されていないものを探そうとしている/dev/mapper/cryptroot
のに、パスワード (最初にcryptsetup
起動したときに作成したもの/dev/sda2
) を尋ねないことです。したがって、最初にパスワードを尋ねなかったため、暗号化されていないブロック デバイスを見つけることができないのは当然です。何を間違って設定したのか教えてください。
答え1
cryptdevice=/dev/disk/by-uuid/<UUID_OF_LOGICAL_DEVICE>:cryptroot root=/dev/mapper/cryptroot
GRUB の追加カーネル オプションで成功しました。
UUID を正確にコピーして貼り付けずに (コンソール/tty などで) これを実行すると、入力ミスが発生する可能性があります。ここにワンライナーがあります。これもコンソールから入力するのは面倒ですが、おそらく簡単でしょう。
sed "s/\(GRUB_CMDLINE_LINUX=\"\)/\1cryptdevice=\/dev\/disk\/by-uuid\/$(blkid -o value -s UUID /dev/<LOGICAL_DEVICE>):cryptroot root=\/dev\/mapper\/cryptroot/" /etc/default/grub > ~/grub.defaults && mv ~/grub.defaults /etc/default/grub
答え2
/etc/crypttab がありません。cpio フックは OS が認識していないパーティションを指しています。
/etc/crypttab
%{/dev/mapper/cryptroot の UUID} / ext4 rw、relatime、data=ordered、discard、luks - 0 1
その後、grub updateを再実行します。