系統更新後啟動加密的根分區失敗
我在啟動 Debian Linux 伺服器時遇到問題。系統更新後,GRUB 會載入 initrd 並且系統應該要求輸入密碼,但它沒有。相反,我被放到了 BusyBox。嘗試使用 手動掛載加密卷後
cryptsetup luksOpen
,出現此錯誤:device-mapper: table: 254:0: crypt: Error allocating crypto tfm device-mapper: reload ioctl failed: Invalid argument Failed to setup dm-crypt key mapping for device /dev/sda3 Check that the kernel supports aes-cbc-essiv:sha256 cipher (check syslog for more info).
您的核心不支持
aes-cbc-essiv:sha256
. “Error allocating crypto tfm”是指核心的密碼子系統:一些必要的密碼資料結構無法初始化。您對加密算法的支持來自模組,並且您有一個用於 AES 算法的模組和一個用於 SHA-256 算法的模組,但沒有用於 CBC 模式的模組。沒有它,您將無法安裝加密設備。如果您編譯了自己的核心,請確保啟用所有必要的加密算法。如果您的核心來自您的發行版,這可能是您需要報告的錯誤。無論哪種情況,都必須有一個模組
/lib/modules/2.6.32-5-amd64/kernel/crypto/cbc.ko
。如果該模組存在,那麼您的問題在於 initramfs 生成腳本。除了
cbc
模組之外,您還需要其他核心組件來將密碼綁定在一起。檢查CRYPTO_MANAGER
,CRYPTO_RNG2
並CRYPTO_BLKCIPHER2
在您的核心配置中設置。Debian 的 initramfs 建構腳本應該處理這些,即使它們被編譯為模組。由於加密子系統相當複雜,因此 initramfs 腳本中可能缺少其他重要組件。如果您需要進一步的幫助,請閱讀錯誤 #541835的討論,並發布您的確切核心版本,以及您自己編譯的核心配置。您將需要從具有必要加密支持的救援系統啟動以修復此問題。將根文件系統掛載
chroot
到其中,掛載/boot
並執行dpkg-reconfigure linux-image-…
以重新生成 initramfs。