นี่เป็นวิธีแก้ปัญหาของฉันใน debian รับข้อผิดพลาดที่อ้างถึงข้างต้นโดย @sebasth
การตั้งค่าของฉันแตกต่างกันเล็กน้อย ฉันมีพาร์ติชั่นรูทที่เข้ารหัสและดิสก์ RAID หลายตัว สำหรับฉันฉันต้องเพิ่มตัวเลือก initramfs ใน crypttab:
<target> <source> <keyfile> <options>
part1_crypt /dev/disk/... crypt_disks plain,cipher=aes-xts-plain64,keyscript=decrypt_keyctl,initramfs
part2_crypt /dev/disk/... crypt_disks plain,cipher=aes-xts-plain64,keyscript=decrypt_keyctl,initramfs
สิ่งนี้บอกว่า update-initramfs นั้นฉันต้องการให้รายการ crypttab เหล่านี้ติดตั้งใน initramfs ฉันตรวจสอบ crypttab ของฉันโดยเรียกใช้
cryptdisks_start part1_crypt
cryptdisks_start part2_crypt
โปรดทราบว่าดิสก์การโจมตีของฉันเป็น dm-crypt ธรรมดา นี่หมายความว่าฉันไม่สามารถใช้วิธี luks keyfile ที่แก้ไขข้อผิดพลาด systemd keyscript สำหรับ dm-crypt ธรรมดาฉันจะต้องเก็บข้อความรหัสผ่านไว้ในข้อความธรรมดา
ต้องเข้ารหัสดิสก์ที่เข้ารหัสก่อนที่update-initramfs
จะรัน มิฉะนั้นจะทำให้เกิดข้อผิดพลาด ฉันต้องมองหาบรรทัดต่อไปนี้เมื่อสร้าง initramfs ของฉัน:
update-initramfs -k -u -v | grep 'keyctl'
ซึ่งแสดงสองไฟล์ต่อไปนี้:
/bin/keyctl
cryptkeyctl
กำลังเพิ่มเข้ากับ initramfs
ในที่สุดฉันต้องปิดการใช้งาน systemd จัดการ crypttab ของฉันเพื่อจัดการกับข้อผิดพลาดที่อ้างถึงข้างต้น: systemd ไม่สนับสนุนตัวเลือก keyscript ใน crypttab สำหรับเรื่องนี้ฉันเพิ่มตัวเลือกเคอร์เนล
GRUB_CMDLINE_LINUX_DEFAULT="quiet luks.crypttab=no"
/ etc / default / update-grub
ด้วงและวิ่ง ตอนนี้ systemd ละเว้น crypttab และพาร์ทิชันที่เข้ารหัสทั้งหมดจะถูกโหลดใน initramfs
เนื่องจากฉันมีพาร์ติชันรากที่เข้ารหัสลับ cryptroot จึงไม่ปรากฏในแคชคีย์ของฉัน หมายความว่าฉันต้องป้อนรหัสผ่านสองครั้ง หนึ่งสำหรับพาร์ติชันรากและอีกครั้งสำหรับอาร์เรย์การโจมตี
expect
สคริปต์หรือสิ่งที่คล้ายกันซึ่งได้รับการเรียกให้ติดตั้งดิสก์แทนที่จะให้ระบบทำ ระบบจะเรียกใช้สคริปต์ซึ่งจะขอรหัสผ่านแทนเก็บไว้และมอบให้กับการดำเนินการเมาท์แต่ละครั้ง