Tại sao âm lượng LVM được mã hóa của tôi (thiết bị LUKS) sẽ không lắp vào lúc khởi động?


15

Tôi đang cố gắng thiết lập một khối lượng mã hóa theo hướng dẫn này

Mọi thứ đều được thiết lập nhưng việc gắn khối lượng mã hóa không thành công khi khởi động với lỗi:

fsck.ext4: Không có tệp hoặc thư mục như vậy trong khi cố gắng mở / dev / mapper / safe_vault Có thể thiết bị không tồn tại?

Đây là thiết lập của tôi:

tiền điện tử

$ sudo cat /etc/crypttab
safe_vault  /dev/disk/by-uuid/d266ae14-955e-4ee4-9612-326dd09a463b  none    luks

GHI CHÚ:

Xuất uuidphát từ:

$ sudo blkid /dev/mapper/<my_logical_group>-safe_vault 
/dev/mapper/<my_logical_group>-safe_vault: UUID="d266ae14-955e-4ee4-9612-326dd09a463b" TYPE="crypto_LUKS" 

fstab

$ sudo cat /etc/fstab | grep safe_vault
/dev/mapper/safe_vault      /safe-vault     ext4    defaults    0 2

Những điều tôi đã làm...

Vì vậy, tôi đã truy cập trang web của nhà phát triển và trong Câu hỏi thường gặp Họ nói:

Kiểm tra xem bạn có trình ánh xạ thiết bị và mục tiêu mật mã trong kernel của bạn không. Đầu ra của "mục tiêu dmsetup" sẽ liệt kê một mục tiêu "mật mã". Nếu nó không ở đó hoặc lệnh thất bại, hãy thêm trình ánh xạ thiết bị và mục tiêu mật mã vào kernel.

Vì vậy, tôi đã làm, hóa ra tôi không có một cryptmục tiêu:

$ sudo dmsetup targets
striped          v1.4.1
linear           v1.1.1
error            v1.0.1

Vấn đề là tôi không biết cách thêm mục tiêu như vậy.

Tôi nghĩ rằng điều này (không có cryptmục tiêu) có thể khiến crypttabcấu hình bị bỏ qua khi khởi động và do đó cố gắng gắn kết mục nhập fstabkhông thành công vì cryptsetupđã không ánh xạ âm lượng được mã hóa của tôi /dev/mapper/safe_vault.

GHI CHÚ:

Khối lượng mã hóa có thể được ánh xạ, gắn kết và viết thành công:

$ sudo cryptsetup luksOpen /dev/mapper/<my_logical_group>-safe_vault safe_vault
Enter passphrase for /dev/mapper/<my_logical_group>-safe_vault: 

$ sudo mount /dev/mapper/safe_vault /safe_vault

Đây là cách nó trông sau khi ánh xạ và gắn kết nó:

$ sudo lsblk -o name,uuid,mountpoint
NAME                                  UUID                                   MOUNTPOINT
sda                                                                          
├─sda1                                28920b00-58d3-4941-889f-6249357c56ee   
├─sda2                                                                       
└─sda5                                uhBLE7-Kcfe-RMi6-wrlX-xgVh-JfAc-PiXmBe 
  ├─<my_logical_group>-root (dm-0)       1bed9027-3cf7-4f8d-abdb-28cf448fb426   /
  ├─<my_logical_group>-swap_1 (dm-1)     a40c16c4-7d0c-46d7-afc8-99ab173c20bb   [SWAP]
  ├─<my_logical_group>-home (dm-2)       e458abb7-b263-452d-8670-814fa737f464   /home
  ├─<my_logical_group>-other (dm-3)      0a1eec42-6534-46e1-8eab-793d6f8e1003   /other
  └─<my_logical_group>-safe_vault (dm-4) d266ae14-955e-4ee4-9612-326dd09a463b   
    └─safe_vault (dm-5)               9bbf9f47-8ad8-43d5-9c4c-dca033ba5925   /safe-vault
sr0  

CẬP NHẬT

  • Hóa ra tôi có cryptmục tiêu nhưng để nó xuất hiện dmsetup targetstrước tiên tôi phảicryptsetup luksOpen <my-device>
  • Tôi đã thử sử dụng UUIDs thay vì theo câu trả lời của @Mikhail Morfikov nhưng nó vẫn thất bại khi khởi động.

Tôi vẫn nghĩ rằng vấn đề là bằng cách nào đó, khối lượng mã hóa không được ánh xạ (mở bằng cryptsetup luksOpen) tại thời điểm khởi động nên không /dev/mapper/<safe_vault or UUID>tồn tại, sau đó cố gắng gắn kết nó (fstab) không thành công.

CẬP NHẬT 2

Hóa ra tôi không có các tập lệnh cần thiết để gắn vào lúc khởi động. Xem ghi chú trong câu trả lời của @ MikhailMorfikov.


1
Mục tiêu mật mã có hiển thị sau khi bạn làm thủ công không luksOpen? Tôi hy vọng rằng nếu nó không ở đó, luksOpen cũng sẽ thất bại.
một CVn

Ok, sau khi sudo cryptsetup luksOpenhai mục tiêu mới xuất hiện cho sudo dmsetup targets: errorcrypt. Tôi đoán tôi cần thay đổi câu hỏi sau đó ...
pgpb.padilla

Nó là một phân vùng hoặc một tập tin chứa?
Mikhail Morfikov

/dev/mapper/<my-logical-volume>-safe_vaultlà một khối hợp lý được tạo bằng LVM và /dev/mapper/safe_vaultlà thiết bị được ánh xạ bằng cách thực hiện cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Bạn có biết nếu crypttablàm việc với khối lượng LVM?
pgpb.padilla

Tôi có lvm bên trong một phân vùng luks, thực sự tôi có toàn bộ đĩa 1,5TB được mã hóa (ngoại trừ /boot). Tất cả được gắn khi khởi động mà không có vấn đề. Bạn có chắc chắn rằng bạn đã cập nhật initramfssau khi chỉnh sửa /etc/crypttab? Bạn có thể hiển thị đầu ra lsblk -o name,uuid,mountpointkhi mọi thứ được gắn kết và hoạt động như bình thường không?
Mikhail Morfikov

Câu trả lời:


16

Bạn phải chú ý đến UUID. Ví dụ, đây là cấu hình của tôi:

# lsblk -o name,uuid,mountpoint
├─sda2                         727fa348-8804-4773-ae3d-f3e176d12dac
│ └─sda2_crypt (dm-0)          P1kvJI-5iqv-s9gJ-8V2H-2EEO-q4aK-sx4aDi
│   ├─debian_crypt-swap (dm-1) 3f9f24d7-86d1-4e21-93e9-f3c181d05cf0   [SWAP]
│   ├─debian_crypt-tmp (dm-2)  93fc8219-f985-45fb-bd5c-2c7940a7512d   /tmp
│   ├─debian_crypt-home (dm-3) 12e8566c-8f0f-45ec-8524-6d9d9ee91eae   /home
│   └─debian_crypt-root (dm-4) 9685570b-4c9e-43ea-815e-49d10dc7a1bf   /

Tôi có một phân vùng được mã hóa (sda2) với 4 tập (LVM). Điều tôi cần là đặt hai UUID vào đúng tệp. UUID sda2 đi đến /etc/crypttabvà UUID âm lượng (ví dụ: debian_crypt-root) đi đến /etc/fstab.

Vì vậy, nó sẽ là:

# cat /etc/crypttab
sda2_crypt              UUID=727fa348-8804-4773-ae3d-f3e176d12dac   none        luks

# cat /etc/fstab
UUID=9685570b-4c9e-43ea-815e-49d10dc7a1bf       /               ext4    defaults,errors=remount-ro              0 1

Sau khi thay đổi /etc/crypttabtệp, bạn phải xây dựng lại initramfs:

# update-initramfs -u -k all

GHI CHÚ

Gói cryptsetupphải được cài đặt vì nó có các tập lệnh khởi động cung cấp hỗ trợ cho việc tự động đếm khối lượng mã hóa khi khởi động.

Tại sao phải đề cập đến điều này? Vâng, nếu bạn thiết lập LVM trong khi cài đặt Debian Wheezy cài đặt gói cryptsetup-bin , libcryptsetup4lvm2nhưng không cryptsetup, do đó bạn có những công cụ để thiết bị thiết lập LVM & LUKS nhưng không phải là kịch bản cần thiết để gắn kết các thiết bị LUKS vào lúc khởi động. Những người đến trong gói cryptsetup .


Tôi đã thử sử dụng UUIDnhưng tôi gặp lỗi tương tự. Tôi sẽ cập nhật câu hỏi với các chi tiết.
pgpb.padilla

Xin chào, điều này sẽ hơi lâu, chúng ta có thể trò chuyện không?
pgpb.padilla

Bên cạnh đó, ngay cả khi bạn không chỉnh sửa / etc / crypttab, có vẻ như các đĩa sẽ chỉnh sửa nó cho bạn nếu bạn thay đổi một số cài đặt mã hóa nhất định. Câu trả lời này đã giúp tôi sửa chữa những lỗi tôi mắc phải với đĩa (và có lẽ còn nhiều lỗi hơn khi cố gắng hoàn tác đĩa).
hiền nhân

0

Có vẻ như câu trả lời của @Mikhail Morfikov bao gồm việc gắn kết trong giai đoạn initramfs . Một cách khác (nếu không phải là hệ thống tập tin gốc) là giải mã và tự động gắn kết phân vùng qua systemd , sau khi kernel linuz được tải. Tất nhiên điều này chỉ có thể nếu bạn đang chạy systemd . Tôi sẽ giải thích phương pháp ở đây:

Các /etc/crypttabentry:

crypt2 UUID=e412-blahblah /path/to/crypt2.key luks,noauto

Đây noautolà một hướng dẫn không cố gắng giải mã đĩa trong giai đoạn initramfs .

Ở trên, e412-blahblahlà UUID của phân vùng chứa hệ thống luks, trong trường hợp của tôi là phân vùng /dev/sdb2:

# blkid | grep sdb2
/dev/sdb2: UUID="e41274d8-fd83-4632-b560-ad0ba113ae75" TYPE="crypto_LUKS" PARTUUID="5673a908-02"

Trong quá trình khởi động kernel linuz, systemd sẽ đọc /etc/crypttabtệp và tạo tệp dịch vụ thời gian chạy /run/systemd/generator/systemd-cryptsetup@crypt2.service. Tuy nhiên, dịch vụ đó không tự động chạy. Bạn có thể chạy nó bằng tay

systemctl start systemd-cryptsetup@crypt2.service

nhưng để giải mã nó và sau đó gắn kết nó trong khi khởi động, /etc/fstabcó thể yêu cầu nó như sau:

/dev/mapper/crypt2--vg-data /media/crypt-data ext4 defaults,noauto,user,x-systemd.automount,x-systemd.requires=systemd-cryptsetup@crypt2.service 0 2

Đây x-systemd.automountlà một hướng dẫn để systemd gắn kết /media/crypt-data, và x-systemd.requires=systemd-cryptsetup@crypt2.servicelà một hướng dẫn để systemd giải mã crypt2được yêu cầu trước khi có thể.

Trong systemd sẽ không thực sự gắn kết thư mục cho đến khi nó được truy cập lần đầu tiên, ví dụ ls /media/crypt-data, sau đó nó sẽ gắn kết đúng lúc và xuất hiện sau đó /proc/mounts.


Liên quan

Bạn có thể hỏi "* tại sao có đĩa dữ liệu được mã hóa với khóa trong hệ thống tệp gốc?". Đó là bởi vì hệ thống tập tin gốc cũng được mã hóa, vì vậy khóa là an toàn. Hệ thống tập tin gốc được giải mã trong giai đoạn khởi động initramfs , câu trả lời của la Mikhail. Tôi có một mục khác trong /etc/crypttabtệp cho rằng:

crypt1 UUID=8cda-blahbalh none luks,discard,lvm=crypt1--vg-root

và tôi mô tả thiết lập đó và một USB khởi động ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.