私はDebianのインストールを終えて起動しようとしています。ハードドライブ(LUKS)を暗号化しましたが、パーティションはなく、そこにLVMを設定しました。別の起動ボリュームがないため、システムは論理ボリュームから起動しますroot
。 BIOSをGRUBに置き換えましたが、システム用のGRUB構成が作成されていないため、GRUBから手動で起動する必要があります。
正しいGRUBシェルコードは次のとおりです。
cryptomount ahci0
set root=lvm/vg-root
linux /vmlinuz root=/dev/mapper/vg-root cryptdevice=/dev/sda
initrd /initrd.img
これは与えられた設定を変更したものです。ここさまざまな暗号化LVM設定の場合。
GRUBはドライブのパスワードをうまく復号化しますが、このように起動しようとすると、次のメッセージが数十回表示されます。
Begin: Running /scripts/local-block ... WARNING: Failed to connect to lvmetad. Falling back to device scanning.
Volume group "vg" not found
Cannot process volume group vg
done.
その後、initramfsシェルを取得します。カーネルがディスクを復号化する前にルート論理ボリュームを探しているようです。例を使用すると同じことが発生するためですroot=/dev/mapper/bogus-root
。このシステムを起動できるカーネルパラメータはありますか?それともinitrdを変更する必要がありますか?
ベストアンサー1
/etc/crypttab
これはinitramfsに追加されたDebianパッケージを使用して解決できます(crypttab
ファイル形式についてはマニュアルページを参照)。update-initramfs
initramfs-tools
まず、暗号化されたディスクをマウントします。次に、たとえば、ホストの、、、、および/dev
を/proc
ルート/sys
ファイルシステムにバインドします。次に、ルートファイルシステムにchrootします。 chroot の前に、 crypttab ファイルを任意の場所から作成またはコピーできます。/run
mount --bind /dev /mnt/dev
initramfs に crypttab を含めるには、/usr/share/initramfs-tools/hooks
ファイルを initramfs にコピーするフックスクリプトを作成します。 2種類のスクリプトを使用してくださいinitramfs-tools
。起動スクリプトはシステムが起動するとinitramfsによって実行されinit
、フックスクリプトはinitramfsイメージの作成中に実行されます。
フックスクリプトは次のようになります(源泉):
#!/bin/sh
. /usr/share/initramfs-tools/hook-functions
cp -pnL /path/to/crypttab ${DESTDIR}/etc/crypttab
chmod 644 ${DESTDIR}/etc/crypttab
${DESTDIR}
フックを実行すると、生成されたinitramfsのルートに展開されます。
次に、update-initramfs
適切なオプションを使用して実行します。-k $(uname -r)
ホストとターゲットは同じカーネルバージョンを使用しているため使用します。また-c
、およびを使用して-b
画像が記録される場所を指定します。
新しいイメージをマウントするか、そのパスをGRUBに渡した後、初期ユーザースペースは、ルートボリュームのマウントを試みる前にディスクを復号化して含まれている論理ボリュームをマッピングする必要があります。唯一必要なカーネルパラメータはルートボリュームパスですroot=/dev/mapper/vg-root
。