Linux
啟動時找不到 /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
”/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 引導?它是否需要以某種方式包含在initrd
、vmlinuz
或System
文件中?我是這個黑客的新手。
顯然,我沒有創建
/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
在一些核心更新後失敗了。