我在啟動 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).
答案1
您的內核缺乏對aes-cbc-essiv:sha256
. 「分配加密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
到其中, mount /boot
,然後運行dpkg-reconfigure linux-image-…
以重新產生 initramfs。