Linux

啟動時找不到 /sbin/cryptsetup

  • September 6, 2015

我使用 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/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 引導?它是否需要以某種方式包含在initrdvmlinuzSystem文件中?我是這個黑客的新手。

顯然,我沒有創建/etc/crypttab文件。創建一個,然後update-initramfs -u解決問題。

在 Ubuntu 14.04 上,我缺少xts核心模組

/etc/initramfs-tools/modules

您可能會錯過的其他模組可能是:

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

我通過將這個選項添加到 grub 命令行 (linux) 中找到了根本原因:

break=mount

這迫使下降到busybox。之後,我可以通過 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

(我也有軟體raid,沒有LVM),它給出了缺少模組的錯誤。

之後我想到的一個好主意是提前將上面的 cryptsetup 文件複製到 /boot 分區上,這樣你就不必亂用 U 盤了。另一種方法是在 /boot/tmp 中(提前)解壓一次 initramfs 映像:

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

所以你有所有可用的工作庫和cryptsetup,即使你update-initramfs -k all -c 在一些核心更新後失敗了。

引用自:https://unix.stackexchange.com/questions/178666