Linux
使用加密的根分區引導更新的系統失敗
我剛剛將我的 Debian 系統更新為 Bullseye,使用 5.10.0-13-amd64 核心無法再訪問我的加密根盤。
我仍然可以使用以前版本的 5.4.0-0.bpo.2-amd64 核心啟動。
報告的錯誤是“錯誤分配加密 tfm”和“本地加密卷的依賴失敗”。
它沒有說明依賴是什麼。有人懷疑缺少加密模組,但檢查 initrd 內容似乎都在那裡。
LUKS 標頭如下所示:
LUKS header information Version: 2 Epoch: 4 Metadata area: 16384 [bytes] Keyslots area: 16744448 [bytes] UUID: 27d09a50-bc61-473e-8c45-12295f45a319 Label: (no label) Subsystem: (no subsystem) Flags: (no flags) Data segments: 0: crypt offset: 16777216 [bytes] length: (whole device) cipher: aes-xts-plain64 sector: 512 [bytes] Keyslots: 0: luks2 Key: 512 bits Priority: normal Cipher: aes-xts-plain64 Cipher key: 512 bits PBKDF: argon2i Time cost: 4 Memory: 735048 Threads: 4 ...
initrd 中的加密模組(使用 dracut 建構並包括我強制輸入的 cbc.ko)是:
kernel/arch/x86/crypto kernel/arch/x86/crypto/aesni-intel.ko kernel/arch/x86/crypto/crc32c-intel.ko kernel/arch/x86/crypto/crct10dif-pclmul.ko kernel/arch/x86/crypto/glue_helper.ko kernel/arch/x86/crypto/sha256-ssse3.ko kernel/crypto kernel/crypto/aes_generic.ko kernel/crypto/af_alg.ko kernel/crypto/algif_hash.ko kernel/crypto/algif_skcipher.ko kernel/crypto/ansi_cprng.ko kernel/crypto/async_tx kernel/crypto/async_tx/async_memcpy.ko kernel/crypto/async_tx/async_pq.ko kernel/crypto/async_tx/async_raid6_recov.ko kernel/crypto/async_tx/async_tx.ko kernel/crypto/async_tx/async_xor.ko kernel/crypto/authenc.ko kernel/crypto/cbc.ko kernel/crypto/cmac.ko kernel/crypto/crc32c_generic.ko kernel/crypto/crct10dif_common.ko kernel/crypto/crct10dif_generic.ko kernel/crypto/cryptd.ko kernel/crypto/crypto_simd.ko kernel/crypto/drbg.ko kernel/crypto/ecc.ko kernel/crypto/ecdh_generic.ko kernel/crypto/essiv.ko kernel/crypto/xor.ko kernel/crypto/xts.ko kernel/drivers/crypto kernel/drivers/crypto/ccp kernel/drivers/crypto/ccp/ccp.ko kernel/drivers/crypto/padlock-aes.ko kernel/lib/crypto kernel/lib/crypto/libaes.ko x86_64-linux-gnu/libcrypto.so -> libcrypto.so.1.1 x86_64-linux-gnu/libcrypto.so.1.1
我不確定發生了什麼變化。如果有人可以提供幫助,將不勝感激。
通過反複試驗並將核心模組與 ArchLinux 系統進行比較,我發現將 ecb 和 ccm 模組添加到 initrd 允許系統啟動。