คุณได้รับพรอมต์รหัสผ่านสองครั้งเพราะ /boot พาร์ทิชันถูกเข้ารหัส ก่อนอื่น GRUB จะขอรหัสผ่านเนื่องจากจำเป็นต้องโหลดเคอร์เนลจากการเข้ารหัส /boot. จากนั้นเคอร์เนลจะขอรหัสผ่านอีกครั้งเพื่อถอดรหัส /.
มีสองวิธีในการแก้ไขปัญหานี้:
อย่าใช้การเข้ารหัส /boot. ด้วงจะไม่ถามรหัสผ่าน วิธีนี้จะช่วยให้ผู้ใดก็ตามที่มีเคอร์เนลและไฟล์ initramfs . ตัวอย่างหนึ่งสามารถแทนที่เคอร์เนลด้วยอันที่เป็นอันตรายที่เข้าถึงการเข้ารหัสของคุณ / เมื่อคุณป้อนรหัสผ่าน
สร้างคีย์ถอดรหัสและเพิ่มลงในสล็อต LUKS ฟรี /จากนั้นฝังคีย์นั้นใน initramfs นี่จะทำให้เคอร์เนลเข้าถึง / ไม่มีรหัสผ่าน
การตั้งค่าสำหรับ # 2 ค่อนข้างซับซ้อนดังนั้นฉันจะไปกับแนวทางก่อนหน้านี้ ฉันพิมพ์สิ่งนี้จากส่วนบนของหัวของฉันโดยไม่มีการทดสอบใด ๆ ทำการสำรองข้อมูลและดำเนินการอย่างระมัดระวัง ฉันจะไม่รับผิดชอบต่อการสูญหายของข้อมูลและปัญหาอื่น ๆ ที่เกิดจากกระบวนการนี้
คุณจะต้องมีสื่อ Linux ที่สามารถบู๊ตได้ด้วย cryptsetup และ resize2fs. ฉันแนะนำให้ใช้ Ubuntu แฟลชไดรฟ์ นอกจากนี้คุณยังสามารถแทนที่หลังด้วย partclone. คุณจะต้องมีพื้นที่ว่างบนดิสก์ประมาณ 500 MB เพื่อจัดเก็บการถอดรหัสระดับกลาง /boot ภาพ.
บูตจากสื่อ Linux ของคุณ เข้าถึง LVM (ตรงไปตรงมาฉันไม่เคยจัดการเลยดังนั้นฉันจึงไม่มีความคิดว่าจำเป็นต้องมีขั้นตอนเพิ่มเติมใด ๆ - มีความเป็นไปได้ที่ Ubuntu จะจัดการเรื่องนี้โดยอัตโนมัติ) เปิดการเข้ารหัส /boot:
cryptsetup open /dev/<boot> cryptboot
สร้างอิมเมจสำหรับการบูทที่ไม่ได้เข้ารหัส: (เพื่อดูการใช้งานที่ก้าวหน้า pv แทน cat )
cat /dev/mapper/cryptboot > /media/ubuntu/<someExternalStorage>/boot.img
ปิด /boot:
sync
cryptsetup close cryptboot
เขียนโดยไม่เข้ารหัส /boot ไปที่พาร์ติชันและปรับขนาดระบบแฟ้ม:
cat /media/ubuntu/<someExternalStorage>/boot.img > /dev/<boot>
resize2fs /dev/<boot>
รับ UUID จาก /boot (จดบันทึก):
blkid /dev/<boot>
เปิดและเมานต์ /อัปเดต fstab:
cryptsetup open /dev/<root> cryptroot
mkdir -p /mnt/root
mount /dev/mapper/cryptroot /mnt/root
cd /mnt/root
vi etc/fstab
ปรับบรรทัดที่เมาท์ /boot เพื่อใช้ UUID ใหม่แทน /dev/mapper/... การเข้า คุณอาจต้องลบ /boot สายจาก etc/crypttab.
อัปเดต initramfs (อันนี้อาจผิดพลาดใน Ubuntu หากระบบปฏิบัติการหลักของคุณคือ Arch ... ฉันไม่แน่ใจดังนั้นโปรดระมัดระวัง):
cd /mnt/root
mount -t sysfs sysfs sys
mount -t tmpfs tmp tmp
mount -t proc proc proc
mount --bind /dev dev
mount /dev/<boot> boot
mount --bind /boot/efi boot/efi
chroot
update-initramfs -u -k all
exit
เท่าที่ฉันจำได้ว่าควรจะพอเพียง คุณสามารถทำให้การกำหนดค่า GRUB ง่ายขึ้นโดยการปิดใช้งานการบูตที่เข้ารหัสในไฟล์การกำหนดค่า มันสามารถเพิ่มความเร็วในการบูทเล็กน้อย แต่ไม่จำเป็น
ทำความสะอาดตัวเองหลังจาก:
umount boot/efi boot dev proc tmp sys
cd ..
umount root
cryptsetup close cryptroot