起動時に/sbin/cryptsetupが見つかりません。

起動時に/sbin/cryptsetupが見つかりません。

私はLUKSを使用して、いくつかのLVMパーティションを含む暗号化されたルートパーティションを作成しました。起動できず、起動時に次の出力が表示されます。

Begin mounting root file system ... Begin: Running /scripts/local-top ... /scripts/local-top/cryptroot: line 1: /sbin/cryptsetup: not found

それでもパスワードの入力を求められます。

Unlocking the disk /dev/sda5 (macbookcrypt)
Enter passphrase: *******************************
cryptsetup: cryptesetup failed, bad password or options?
/scripts/local-top/cryptroot: line 1: /sbin/cryptsetup: not found

しかし毎回失敗した。

私の起動コマンドラインは次のとおりです。

vmlinuz-3.13.0-37 generic ro root=/dev/mapper/macbooklvm-root cryptopts=target=macbookcrypt,source=/dev/sda5,lvm=macbooklvm recovery initrd=\initrd.img-3.13.0-37-generic

" dm_crypt"を追加してからincludeを/etc/modules使用してupdate-initramfs再生成しましたdm_crypt。ちなみに私はUbuntu 14.04を使っています。

initramfsシェルではどこにも見つからないようですcryptsetup

(initramfs) cat /proc/modules | grep crypt
dm_crypt 23177 0 - Live 0xffffffffa0006000
(initramfs) find / -iname "cryptsetup"
(initramfs)

モジュールがロードされているようなのでdm_crypt大丈夫ですが、ここにはcryptsetupはありません。 Linuxブートにどのようにインストールしますか?どういうわけかinitrdvmlinuzまたはファイルに含める必要がありますかSystem?私はこのハッキングに初めて触れました。

答え1

もちろん、私は/etc/crypttabファイルを作成したわけではありません。 1つを作成してupdate-initramfs -u問題を解決してください。

答え2

Ubuntu 14.04で私は逃したxtsカーネルモジュールは以下で提供されます。

/etc/initramfs-tools/modules

見逃す可能性のある他のモジュールは次のとおりです。

raid1
raid456
aes-x86_64
sha512-ssse3
xts
dm-mod
dm-crypt

grubコマンドライン(Linux)にこのオプションを追加して根本的な原因を見つけました。

break=mount

これにより、ビジボックスが強制的に削除されます。その後、USBスティックを介して(他のコンピュータから)このファイルをramfsにコピーできます。

mkdir /boot
mount /dev/sdc1 /boot
cp cryptsetup /sbin/cryptsetup
cp libcryptsetup.so.4.0.0 /lib/libcryptsetup.so.4
cp libpopt.so.0.0.0 /lib/libpopt.so.0
cp libgcrypt.so.11.7.0 /lib/libgcrypt.so.11
cp libgpg-error.so.0.8.0 /lib/libgpg-error.so.0
/boot/cryptsetup luksOpen /dev/md10 root

(LVM以外のソフトウェアRAIDへのrootアクセスもあります。)モジュールの欠落エラーが発生します。

それから良い考えが思い浮かびました。上記のcryptsetupファイルを/ bootパーティションに事前にコピーしておくと、USBドライブを操作する必要がないということです。別の方法は、/boot/tmpで(事前に)initramfsイメージを解凍することです:

gzip -d < ../initrd.img-3.13.0-62-generic | cpio --extract --verbose --make-directories --no-absolute-filenames

update-initramfs -k all -c したがって、一部のカーネルの更新後に失敗しても、すべての作業ライブラリとcryptsetupを使用できます。

答え3

別の質問で上記のエラーメッセージが表示されましたが、上記のように調査した後、次のより具体的なエラーメッセージが表示されました。

 cryptsetup luksOpen /dev/md10 cryptroot

 device-mapper: table: 252:0: crypt: unknown target type
 ioctl: error adding target to table

解決策:/etc/crypttabルートデバイス名(cryptroot)が/etc/initramfs-tools/conf.d/mdadm設定と一致していることを確認してください。他の人には「cryptroot」があり、他の人には「root」があり、ターゲットデバイス名を同期した後、夢のように起動します!

設定変更後に実行

update-initramfs -c -k all

関連情報