Linux

使用加密的根分區引導更新的系統失敗

  • May 6, 2022

我剛剛將我的 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 允許系統啟動。

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