Có cùng một câu hỏi, đây là cách tôi đã thực hiện trên Ubuntu 12.04.1 và 12.10,
- trước khi bắt đầu, hãy chắc chắn rằng bạn có một bản sao lưu và cũng có thể khởi động hệ thống của bạn với ubfox cd hoặc usb; như thể bạn mắc lỗi, hệ thống của bạn có thể không khởi động được nữa hoặc bạn có thể mất dữ liệu. Tôi giả sử bạn có một hệ thống Ubuntu được mã hóa với LUKS, bên trong LUKS bạn có 3 phân vùng, HỆ THỐNG-BOOT (không được mã hóa), HỆ THỐNG-SWAP (được mã hóa) và HỆ THỐNG (được mã hóa) -
Bạn cần điều chỉnh UUID, HỆ THỐNG-SWAP_crypt, HỆ THỐNG-OS_crypt, HỆ THỐNG-SWAP, HỆ THỐNG-HỆ THỐNG theo biến thể được sử dụng trên hệ thống của bạn, vui lòng xem liên kết tham khảo bên dưới giải pháp của tôi để biết thêm
Nhận UUID:
blkid
Chuẩn bị>
swapoff /dev/mapper/SYSTEM-SWAP_crypt
cryptsetup luksClose SYSTEM-SWAP_crypt
Yêu cầu cryptsetup tính toán cụm mật khẩu của phân vùng trao đổi từ khóa giải mã của ổ chứa hệ thống tập tin gốc>
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksFormat /dev/mapper/SYSTEM-SWAP --key-file -
/lib/cryptsetup/scripts/decrypt_derived SYSTEM-OS_crypt | cryptsetup luksOpen /dev/mapper/SYSTEM-SWAP SYSTEM-SWAP_crypt --key-file -
mkswap /dev/mapper/SYSTEM-SWAP_crypt
báo cho hệ thống về phân vùng trao đổi, chỉnh sửa crypttab>
nano /etc/crypttab
=? đảm bảo hai dòng khớp
SYSTEM-OS_crypt UUID=uuid-of-luks-containing-osroot none luks
SYSTEM-SWAP_crypt UUID=uuid-of-luks-containing-swap SYSTEM-OS_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
báo cho hệ thống về phân vùng trao đổi, chỉnh sửa fstab>
nano /etc/fstab
=? đảm bảo bạn có dòng này
/dev/mapper/SYSTEM-SWAP_crypt swap swap sw 0 0
báo cho hệ thống về phân vùng trao đổi, chỉnh sửa sơ yếu lý lịch>
nano /etc/initramfs-tools/conf.d/resume
=? đảm bảo bạn có dòng này
RESUME=UUID=uuid-of-encrypted-swap-SYSTEM-SWAP_crypt
cập nhật initramfs trên phân vùng khởi động>
update-initramfs -u -k all
Tài liệu tham khảo
Câu trả lời được lấy cảm hứng từ Thiết lập hệ thống Debian được mã hóa (liên kết lưu trữ):
Nếu bạn đang sử dụng một hệ thống Debian được mã hóa, bạn có thể có một số yêu cầu bảo mật để đáp ứng. Nếu đó là trường hợp, bạn cũng phải sử dụng phân vùng trao đổi được mã hóa.
Phân vùng trao đổi có thể được mã hóa theo hai cách:
- nó có thể được tạo lại trên mỗi lần khởi động, sử dụng cụm mật khẩu ngẫu nhiên hoặc
- nó có thể được tạo như các khối được mã hóa khác với cụm mật khẩu liên tục
Nếu bạn muốn sử dụng tạm dừng vào đĩa, bạn không thể sử dụng cách tiếp cận đầu tiên vì nó sẽ ghi đè lên dấu chân bộ nhớ của bạn được lưu trữ trong phân vùng trao đổi. Hơn nữa, bạn không thể sử dụng một tệp chính như các phân vùng khác, vì hệ thống tệp gốc không (và không phải) được gắn vào thời điểm quá trình tiếp tục bắt đầu và cần đọc phân vùng trao đổi được giải mã.
Cách tôi giải quyết điều này là bằng cách yêu cầu cryptsetup tính toán cụm mật khẩu của phân vùng trao đổi từ khóa giải mã của ổ đĩa giữ hệ thống tập tin gốc; gói cryptsetup thực hiện điều này với /lib/cryptsetup/scripts/decrypt_derived
. Vì vậy, để thiết lập phân vùng trao đổi, tôi làm như sau, giả sử hda2
là phân vùng giữ trao đổi được mã hóa và hệ thống tập tin gốc nằm trong hda5_crypt
:
swapoff /dev/mapper/hda2_crypt
cryptsetup luksClose hda2_crypt
dd if=/dev/urandom of=/dev/hda2
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
| cryptsetup luksFormat /dev/hda2 --key-file -
/lib/cryptsetup/scripts/decrypt_derived hda5_crypt \
| cryptsetup luksOpen /dev/hda2 hda2_crypt --key-file -
mkswap /dev/mapper/hda2_crypt
Để nói với hệ thống về phân vùng trao đổi này, chúng ta cần thêm nó vào
/etc/crypttab
và /etc/fstab
; đảm bảo rằng các tệp đó chứa các dòng như sau:
/etc/crypttab:
hda2_crypt /dev/hda2 hda5_crypt luks,keyscript=/lib/cryptsetup/scripts/decrypt_derived
/etc/fstab:
/dev/mapper/hda2_crypt swap swap sw 0 0
Với vị trí này, ngay khi bạn định cấu hình hệ thống để tạm dừng vào đĩa, phân vùng trao đổi sẽ được tự động thiết lập cùng với hệ thống tệp gốc từ rất sớm trong chuỗi khởi động. Để tìm ra phân vùng trao đổi nào khả dụng tại thời điểm đó, cryptsetup kiểm tra các mục sau: asfasfafs - một dòng như RESUME=/dev/mapper/hda2_crypt
trong /etc/initramfs-tools/conf.d/resume
- một thiết bị tiếp tục cài đặt trong /etc/uswsusp.conf
(xem uswsusp.conf(5)
) - một mục trong /etc/suspend.conf
- một resume=/dev/mapper/hda2_crypt
trong dòng lệnh kernel
Bạn có thể kiểm tra /usr/share/initramfs-tools/hooks/cryptroot
nếu bạn muốn biết thêm về điều này.