Hãy để tôi bắt đầu bằng cách nói tôi không mới với LUKS. Tôi đã thiết lập LUKS với các bản ghi chép nhiều lần có và không có LVM. Tôi không chắc những gì đang thực sự xảy ra ở đây. Tôi có một hệ thống có một phân vùng được mã hóa duy nhất. Ổ đĩa của tôi được tổ chức như sau:
# lsblk TÊN MAJ: MIN RM KÍCH THƯỚC RO LOẠI MOUNTPOINT sda 8: 0 0 128G 0 đĩa └─sda1 8: 1 0 128G 0 phần ├─vg0-root 253: 1 0 20G 0 lvm / ├─vg0-an toàn 253: 6 0 100M 0 lvm │ ─ bảo mật 253: 7 0 98M 0 mật mã / root / an toàn └─vg0-hoán đổi 253: 4 0 1G 0 lvm [SWAP]
/etc/crypttab
Tập tin của tôi trông giống như thế này
# UUID không bắt buộc ở đây vì đường dẫn đến LV sẽ không thay đổi an toàn / dev / vg0 / an toàn không luks, keycript = / lib / cryptsetup / scripts / không an toàn
/lib/cryptsetup/scripts/insecure
Tập tin của tôi có thể thực thi được và trông giống như thế này
#!/bin/sh
# My actual file looks somewhat different because it dumps the key file with dd.
# This accomplishes virtually the same thing though.
echo -n "my-encryption-password"
Tôi đã chạy update-initramfs -k all -u
một số lần sau khi định cấu hình crypttab và đặt tệp keycript của tôi vào vị trí.
Theo như tôi có thể nói, tệp script của tôi thậm chí không được sao chép vào tệp initrd.img. Bây giờ tôi nghĩ về nó, tôi không nghĩ rằng nó sẽ được sao chép vào tệp initrd.img vì phân vùng gốc không được mã hóa và tệp script có thể dễ dàng truy cập từ đó.
Khi khởi động lại, hệ thống sẽ thấy bản ghi từ crypttab và yêu cầu mật khẩu (trong trường hợp của tôi không thực sự tồn tại vì khóa duy nhất là một khóa chứa đầy các bit ngẫu nhiên) thay vì sử dụng keycript để mở khóa phân vùng LUKS. Tôi đã thử lấy LUKS ra khỏi LVM và đưa nó lên sda2, và kết quả vẫn như vậy. Tôi cũng biết rằng keycript hoạt động vì cryptsetup luksOpen /dev/vg0/secure secure -d - <<< "$(/lib/cryptsetup/scripts/insecure)"
hoạt động như một lá bùa và giải mã phân vùng LUKS của tôi.
Tôi đã thử điều này trong Ubuntu 16.04.2 và Ubuntu Mate 16.04.2 với kết quả tương tự. Tôi đã sử dụng keycripts trước đây mà không gặp rắc rối. Sự khác biệt duy nhất là, trong quá khứ, phân vùng / của tôi luôn được mã hóa. Nếu bất cứ ai có thể làm sáng tỏ, tôi sẽ đánh giá cao nó. Tôi chỉ muốn một phân vùng được mã hóa rất nhỏ bởi vì tôi dự định sao chép hệ thống này và tôi không muốn sao chép nó với toàn bộ / phân vùng được mã hóa.
CẬP NHẬT 2017-04-26
Khi đào qua các bản ghi, tôi tìm thấy một dòng có lỗi sau đây không có ý nghĩa gì. Từ khi nào 'keycript = / path / to / script' là một tùy chọn không xác định cho crypttab?
... systemd-cryptsetup [737]: Gặp tùy chọn không xác định / etc / crypttab 'keycript = / lib / cryptsetup / scripts / không an toàn', bỏ qua.
Chỉ để đá, tôi đã thử loại bỏ tùy chọn keycript và sử dụng keyfile, và tất cả chỉ hoạt động! Trên thực tế, tôi đã thử các tùy chọn khác như keyfile-offset và chúng cũng hoạt động. Do đó, vấn đề nằm ở đâu đó với tùy chọn keycript. Có ai có bất kỳ ý tưởng tại sao?