คุณได้รับพรอมต์รหัสผ่านสองครั้งเพราะ /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