/etc/crypttab は initramfs では更新されません。

/etc/crypttab は initramfs では更新されません。

Ubuntu 22.04を新しくインストールし、Ubuntuインストーラオプションでフルディスク暗号化(LUKS)とZFSを選択しました。

/etc/crypttab自動方式(クールなUSB自動ロック解除)でドライブをロック解除するには、いくつかの編集を行う必要がありますが、編集内容は/etc/crypttabinitramfsに保持されません。

私がしていることは:

  • 編集する/etc/crypttab
  • 走るupdate-initramfs -u
  • LUKSパスワードを要求するシステム(initramfs)で自分のマシンを再起動します。
  • 内容を確認しましたが、/etc/cryptotabはありません。

仕組みが間違っていますか?一部のバージョンのcrypttabをローダーに保持する必要がありますが、機能しません。

私が間違っていることについてのアドバイスはありますか?

ベストアンサー1

私も同じ問題があったのでGoogleで見つけて、追加する情報があってここに来ました。パスワードを入力せずにLUKSドライブを自動的にロック解除しようとしています。

まず、その/etc/crypttab項目を編集し、次のように変更しました。

sda3_crypt UUID=2d661ff8-d6a8-49c9-ae96-4d6e234bffe2 /dev/zero luks,discard,keyfile-size=32      

次に、次のコマンドを使用して新しいキーを追加しました。

sudo cryptsetup luksAddKey --new-keyfile-size 32 /dev/sda3 /dev/zero

最後に、update-initramfs次の出力を実行しました。

$ sudo update-initramfs -u
update-initramfs: Generating /boot/initrd.img-6.0.0-2-amd64
cryptsetup: WARNING: sda3_crypt: key file /dev/zero has insecure ownership, see 
    /usr/share/doc/cryptsetup/README.Debian.gz.
cryptsetup: WARNING: Skipping root target sda3_crypt: uses a key file

すでに疑わしいようですが、とにかく再起動しました。残念ながら、これらの操作はシステムを起動できなくします。

Gave up waiting for suspend/resume device
Gave up waiting for root file system device: Common problems:
 - Boot args (cat /proc/cmdline)
   - Check rootdelay= (did the system wait long enough?)
 - Missing modules (cat /proc/modules; ls /dev)
ALERT! /dev/mapper/legend--vg-root does not exist. Dropping to a shell!


BusyBox v1.35.0 (Debian 1: 1.135.0-2) built-in shell (ash)
Enter 'help' for a list of built-in commands.

(initramfs) cat /etc/crypttab
cat: can't open '/etc/crypttab': No such file or directory

BusyBoxプロンプトで次のコマンドを入力して、システムを再起動することができました。

cryptsetup luksOpen --key-file /dev/zero --keyfile-size 32 /dev/sda3 sda3_crypt
exit

しかし、元の質問はまだ残っています。なぜ/etc/crypttabinitramfsで利用できないのですか?

修正する

より多くの調査を経て、ついに元の質問に答えることができます。/etc/crypttabinitramfsには存在しません。デフォルトではロック解除スクリプトはこの場所を使用せず/cryptroot/crypttabに代わりに使用します。

initramfsのように/etc/crypttab使用するには、/cryptroot/crypttabディレクトリに次のスクリプトを生成/etc/initramfs-tools/hooksして実行可能にします。

#!/bin/sh
cp /etc/crypttab "${DESTDIR}/cryptroot/crypttab"
exit 0

最後に、空のパスワードを使用してLUKSデバイスを自動的にロック解除すると、暗号化の目的が無効になることに注意してください。暗号化をまったく使用しないほど安全ではありません。

おすすめ記事