Arch LinuxでLVMを使用しています。以下のディスク構造を見つけてください。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
|-sda1 8:1 0 512M 0 part
| `-cryptboot 254:3 0 510M 0 crypt
| `-vgboot-boot 254:4 0 508M 0 lvm /boot
`-sda2 8:2 0 49.5G 0 part
`-cryptlvm 254:0 0 49.5G 0 crypt
|-vgos-swap 254:1 0 4G 0 lvm [SWAP]
`-vgos-root 254:2 0 45.5G 0 lvm /
sr0 11:0 1 560M 0 rom
システムを起動すると、暗号化されているため、ブートパーティションのパスワードプロンプトが表示されます。しかし、私はこのパスワードプロンプトを回避したいと思います。また、ブートパーティションはlvmに配置する必要があります。誰かがこれをしたかどうか私に知らせてください。
上の図が表示されている場合、私のルートもlvmにあります。カーネルを選択した後、パスワードも要求します。しかし、それは問題ではありません。
/boot
パーティションが暗号化されているため、パスワードの二重プロンプトが表示されます。最初に、GRUBは、暗号化された/boot
からカーネルをロードする必要があるため、パスワードの入力を求めます。次に、カーネルが/
を復号化するためにパスワードの入力を求めます。
この問題には2つの方法があります。
暗号化された/boot
は使用しないでください。 GRUBはパスワードを要求しません。これにより、誰でもカーネルファイルとinitramfsファイルをいじることができます。たとえば、パスワードを入力すると、暗号化された/
にアクセスする悪意のあるカーネルにカーネルを置き換えます。
復号化キーを作成し、それを/
の空のLUKSスロットに追加してから、そのキーをinitramfsに埋め込みます。これにより、カーネルはパスワードなしで/
にアクセスできるようになります。
#2の設定はかなり複雑なので、前者の方法を使用します。 私はこれを頭の上からテストなしでタイプしています。バックアップを作成し、慎重に続行します。このプロセスによって発生したデータの損失やその他の問題について、私は責任を負いません
cryptsetup
およびresize2fs
を含む起動可能なLinuxメディアが必要です。 Ubuntuフラッシュドライブの使用をお勧めします。後者をpartclone
で置き換えることもできます。中間の復号化された/boot
イメージを保存するには、約500 MBの空きディスク容量も必要です。
Linuxメディアから起動します。 LVMにアクセスする (正直なところ、私はそれに対処したことがないので、追加の手順が必要かどうかはわかりません。Ubuntuが自動的に対処する可能性があります)。暗号化された/boot
を開きます:
cryptsetup open /dev/<boot> cryptboot
暗号化されていないブートのイメージを作成します(進行状況を確認するには、pv
ではなくcat
を使用してください)。
cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img
閉じる/boot
:
sync
cryptsetup close cryptboot
暗号化されていない/boot
をパーティションに書き込み、ファイルシステムのサイズを調整します。
cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot>
resize2fs /dev/<boot>
/boot
のUUIDを取得(メモしてください):
blkid /dev/<boot>
/
を開いてマウントし、fstab
を更新します。
cryptsetup open /dev/<root> cryptroot
mkdir -p /mnt/root
mount /dev/mapper/cryptroot /mnt/root
cd /mnt/root
vi etc/fstab
/boot
エントリの代わりに新しいUUIDを使用するように/dev/mapper/...
をマウントする行を調整します。 /boot
からetc/crypttab
行を削除する必要がある場合もあります。
Initramfsを更新します(メインOSがArchの場合、これはUbuntuで壊れる可能性があります...わからないので、注意してください)。
cd /mnt/root
mount -t sysfs sysfs sys
mount -t tmpfs tmp tmp
mount -t proc proc proc
mount --bind /dev dev
mount /dev/<boot> boot
mount --bind /boot/efi boot/efi
chroot
update-initramfs -u -k all
exit
私が覚えている限り、それで十分でしょう。構成ファイルで暗号化されたブートを無効にすることで、GRUB構成を簡略化することもできます。ブートをわずかに高速化できますが、必須ではありません。
自分の後片付け:
umount boot/efi boot dev proc tmp sys
cd ..
umount root
cryptsetup close cryptroot