ddを使用してluksヘッダーをコピーすると、私が読んでいるドライブにエラーが発生するのはなぜですか?

ddを使用してluksヘッダーをコピーすると、私が読んでいるドライブにエラーが発生するのはなぜですか?

問題の概要。/dev/nvme0n1p1USBフラッシュドライブパーティションで作成し、ブロックデバイスヘッダーのキーを削除して、luks暗号化されたブロックデバイスで分離されたluksヘッダーを使用したいと思います。私は持っています限られた詳細どうすればいいのかわかりませんが、私の計画は(1)フラッシュドライブパーティションのサイズを/dev/sda3ヘッダーのサイズに設定することです。次に、(2)dd if=/dev/nvme0n1p1 of=/dev/sda3 bs=4096 count=4096新しいパーティションのスペースをヘッダー情報で上書きします。 (3)オプションにヘッダファイルを入力し/etc/crypttabて新しいinitramfsを作成します。これがうまくいくことを願っています。しかし、-commandを実行した後dd(まだcrypttabを編集していない)、initramfsを再構築しようとしましたが、次のエラーが発生します。

$ update-initramfs -u -k all
update-initramfs: Generating /boot/initrd.img-5.10.0-18-amd64
cryptsetup: ERROR: nvme0n1p1_crypt: Source mismatch
update-initramfs: Generating /boot/initrd.img-5.10.0-9-amd64
cryptsetup: ERROR: nvme0n1p1_crypt: Source mismatc

私の質問は次のとおりです。 (1) このようなエラーが発生するのはなぜですか?データをコピーすると、私が読んでいるファイルシステムにエラーが発生する理由を理解できません。 (2)持参していない場合dd

詳細と研究。 GoogleとStack Exchangeを検索しましたが、最も関連性の高いものは次のとおりです。これ。コマンドを実行すると、次のメッセージが表示されます。

$ dmsetup info -c --noheadings -o devnos_used -- "nvme0n1p1_crypt"
259:1

このガイド上記のリンクは、(私に)これを行う必要があることを示唆しているようです。

ベストアンサー1

initramfsとcrypttabを更新する必要があると言うとき、この暗号化されたブロックデバイスがシステム起動プロセスの一部であると仮定しますか?この場合、パーティションからヘッダーを直接コピーする場合は、ドライブをマウント解除する必要があります。これは、ドライブがマウントされないようにUSBライブブート環境でこれを行う場合、特にドライブがマウントされていない場合に最適です。ヘッダーがコピーされるパーティションは基本システムです。

chrootこれが何をしているのか、現在のUSBライブブート環境(エラーを説明することができます)でこれを実行しようとしているとし、入力したとおりに更新したいシステムのブートパーティションinitramfsをバインドマウントしていることを確認してください。更新するにはシステム部分に入ります。

Buuuuuut... crypttabを変更していない場合は、initramfsを更新する必要がないため、適用されない可能性があるソリューションを提供したいかどうかわかりません。だからバックアップを取る...

USB Live Boot環境で試してみたくない場合は心配しないでください。オプション2に従ってください。ガイドdd元のヘッダーを直接コピーするのではなく、ファイルにcryptsetupバックアップヘッダーを作成し、指示ddに従ってファイルをUSBフラッシュドライブパーティションに書き込むことができます。

代わりに、お客様のニーズに合わせてガイドラインを調整し、不明な場合に備えていくつかの説明を追加しました。そして、「$」で始まる各改行文字を識別して、新しいコマンドの開始であることを示します。

 $ sudo -i
\\ just to ensure running everything below as root without a need to add sudo

$ mkdir /tmp/header_backup
$ mount -t tmpfs -o size=512m tmpfs /tmp/header_backup
\\ this user just took extra precaution by writing the backup header file to ramdisk
\\ which is unnecessary so u could just skip straight to the next step and designate
\\ somewhere normal like /home/USER/Documents if you wanted

$ cryptsetup luksHeaderBackup /dev/nvme0n1p1 --header-backup-file /tmp/header_backup/header.luks
$ dd if=/tmp/header_backup/header.luks of=/dev/sda3
$ umount /tmp/header_backup

\\ Then update crypttab, using your preferred text editor, here i use nano
\\ Here you're just appending the header option so if nvme0n1p1 is listed
\\ and shows as nvme0n1p1_crypt, then simply add it after the last option

$ nano /etc/crypttab

nvme0n1p1_crypt {UUID of /dev/nvme0n1p1} none luks,discard,header=/dev/sda3

\\ for nano, ctrl+x then Y then Enter & Enter again to exit and confirm saving
\\ At this point you're going to have 2 devices sharing the same UUID so
\\ you can address this by changing the one for the USB drive since it got
\\ changed when you copied the header to it, and saves you from updating fstab

$ cryptsetup luksUUID /dev/sda3 --uuid $(uuidgen)
\\ THEN you can run...

$ update-initramfs -u -k all

/dev/nvme0n1p1もともとLUKSドライブであり、/dev/sda3ヘッダーを保存したいUSBドライブパーティションであることは確実です。


ここで質問を確認するには、次の手順に従ってください。

私の質問は次のとおりです。 (1) このようなエラーが発生するのはなぜですか?データをコピーすると、私が読んでいるファイルシステムでエラーが発生する理由を理解できません。

このコマンドを正確に実行する場所に応じて、2つの可能性を考えることができます。たとえば、現在システムから起動していますかnvme0n1p1?または、保存されたシステムから完全に分離されたUSB-Live Bootシステムで変更しますかnvme0n1p1?前者の場合、ヘッダーをパーティションに書き込む前にアンマウントがない可能性があります/dev/sda3。これは、USBパーティションがマウントされている間にUSBパーティションのメタデータを変更し、実際の起動ファイル設定を変更せずに実行時にシステムを混乱させますupdate-initramfs。または、後者の場合、実行する前にnvme0n1p1のシステムに正しくchrootしていないため、アップデートしているupdate-initramfsシステムではなく、Live-Bootにインストールされているブートドライブを読んでいます。どちらの場合も、crypttabパーティションのマップされた名前を参照する必要があります。ドライブは表示または使用されているデバイスマッピング名ではなくUUIDでマウントされているため、そこにあるすべての項目が表示されているものcrypttabと一致する必要があります。fstabfstabcrypttab

しかし、もう一度覚えてください。

(2)ddを使わずにフラッシュドライブにヘッダを書き込む正しい方法は何ですか?

作成する他の方法がありますが、実行する方法は正確ですが、そのコマンドを使用していない操作(パーティションに書き込む前にパーティションをアンマウントしたり、パーティションから直接書き込んだりするなど)に問題がある可能性があります。もう一方のデバイス、両方のデバイスがumount編集済み)

役に立つ場合は、接続した最後のガイドに従ってください(上記のコマンドを修正しました)、あなたのものが彼らのものであり、あなたの/dev/nvme0n1p1答えのあなた/dev/sda4のものも彼らのものである/dev/sda3ことを忘れないでください。/dev/sdb質問の方法と混同しないように、元々は/dev/sda3USBパーティションをヘッダーと呼びましたが、後で独自の質問に回答を追加するときに変更されました。

おすすめ記事