web-dev-qa-db-ja.com

LVMで暗号化されたブートパーティションパスワードプロンプトを回避する方法-Arch Linux

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にあります。カーネルを選択した後、パスワードも要求します。しかし、それは問題ではありません。

3
Vipin

/bootパーティションが暗号化されているため、パスワードの二重プロンプトが表示されます。最初に、GRUBは、暗号化された/bootからカーネルをロードする必要があるため、パスワードの入力を求めます。次に、カーネルが/を復号化するためにパスワードの入力を求めます。

この問題には2つの方法があります。

  1. 暗号化された/bootは使用しないでください。 GRUBはパスワードを要求しません。これにより、誰でもカーネルファイルとinitramfsファイルをいじることができます。たとえば、パスワードを入力すると、暗号化された/にアクセスする悪意のあるカーネルにカーネルを置き換えます。

  2. 復号化キーを作成し、それを/の空の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
2
gronostaj