Ubuntu 22.04を新しくインストールし、Ubuntuインストーラオプションでフルディスク暗号化(LUKS)とZFSを選択しました。
/etc/crypttab
自動方式(クールなUSB自動ロック解除)でドライブをロック解除するには、いくつかの編集を行う必要がありますが、編集内容は/etc/crypttab
initramfsに保持されません。
私がしていることは:
- 編集する
/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/crypttab
initramfsで利用できないのですか?
修正する
より多くの調査を経て、ついに元の質問に答えることができます。/etc/crypttab
initramfsには存在しません。デフォルトではロック解除スクリプトはこの場所を使用せず/cryptroot/crypttab
に代わりに使用します。
initramfsのように/etc/crypttab
使用するには、/cryptroot/crypttab
ディレクトリに次のスクリプトを生成/etc/initramfs-tools/hooks
して実行可能にします。
#!/bin/sh
cp /etc/crypttab "${DESTDIR}/cryptroot/crypttab"
exit 0
最後に、空のパスワードを使用してLUKSデバイスを自動的にロック解除すると、暗号化の目的が無効になることに注意してください。暗号化をまったく使用しないほど安全ではありません。
答え2
走っていないがsudo update-initramfs -u
走っているsudo update-initramfs -c -k -all
新しいnvmeドライブを追加して暗号化した後、この問題が発生しました。
答え3
同様の問題がありましたが、この議論は上記のフックを追加することなく問題を解決するのに役立ちました。
暗号化されたパーティションはsda3にありますが、別のパーティションスキームを使用して以前の構成からデータをコピーしたため、/ etc / crypttabは次のようになります。
sda6_crypt UUID={uuid] ルークなし、削除
/etc/crypttabの名前と物理パーティションの不一致が原因でinitramfsイメージが生成されたときにエラーが発生するようです(これは、新しいカーネルをインストールするときや他のアップデートを実行するときも同様です)。私は見ませんでした。これにより、initramfs(/cryptroot/crypttabにあります)のファイルが空になります(0バイト)。不足しているファイルが起動プロセスを中断します。 /etc/crypttabを次に修正してください。
sda3_crypt UUID={uuid} ルークなし、削除
問題を解決しました。もちろん、initramfsでビープ音が鳴ったら、再生成する必要があります。
sudo update-initramfs -u
ただし、今後のアップデートは正常に機能します。
答え4
私は(以前にやけどをしていたので)もう一度確認します。 (これはUbuntu 20.04ですが、答えは22.04にも関連しています)
update-initramfs -c -k all
私がしてmkdir /tmp/x; cd /tmp/x; unmkinitramfs -v /boot/initrd.img-$(uname -r) .
確認した後/tmp/x/main/cryptroot/crypttab
。内部は空です。
私の解決策は、/etc/cryptsetup-initramfs/conf-hook
キーファイルスキーマを編集して生成することでした。私の最終設定は
KEYFILE_PATTERN=/etc/cryptsetup-keys.d/*.key
conf-hookとmyroot UUID="8481c1f8-91d4-469d-9132-12d3948f503a" /etc/cryptsetup-keys.d/root.key luks,discard
/etc/crypttabです。キー、行末改行文字なし当然ではない/etc/cryptsetuyp-keys.d/root.key
これを実行した後、initramfsを解凍するとmain/cryptroot/crypttab
正常に見えるファイルが表示され、キーファイル(新しいファイル名を含む)がコピーされますmain/cryptroot/keyfiles/myroot.key
(「myroot」はinitramfsのcrypttabのすべてのエントリと一致します)。