Dlaczego mój zaszyfrowany wolumin LVM (urządzenie LUKS) nie chce się zamontować podczas uruchamiania?


15

Próbuję skonfigurować zaszyfrowany wolumin zgodnie z tym przewodnikiem

Wszystko jest skonfigurowane, ale instalacja zaszyfrowanego woluminu kończy się niepowodzeniem podczas uruchamiania z błędem:

fsck.ext4: Brak takiego pliku lub katalogu podczas próby otwarcia / dev / mapper / safe_vault Prawdopodobnie nieistniejące urządzenie?

To jest moja konfiguracja:

crypttab

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

UWAGA:

uuidPochodzi z:

$ 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

Co ja zrobiłem...

Poszedłem więc na stronę dewelopera i w często zadawanych pytaniach często mówią:

Sprawdź, czy w jądrze znajduje się program mapujący urządzenia i cel szyfrowania. Dane wyjściowe „obiektów docelowych dmsetup” powinny zawierać listę obiektów docelowych „krypt”. Jeśli go nie ma lub polecenie nie powiedzie się, dodaj maper urządzeń i cel szyfrowania do jądra.

Tak zrobiłem, okazuje się, że nie mam cryptcelu:

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

Problem polega na tym, że nie wiem, jak dodać taki cel.

Myślę, że to (nie posiadające cryptcelu) może powodować crypttabignorowanie konfiguracji podczas uruchamiania, a zatem próba zamontowania wpisu fstabkończy się niepowodzeniem, ponieważ cryptsetupnie zamapowałem mojego zaszyfrowanego woluminu /dev/mapper/safe_vault.

UWAGA:

Zaszyfrowany wolumin można z powodzeniem ręcznie zmapować, zamontować i zapisać:

$ 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

Tak to wygląda po zmapowaniu i zamontowaniu:

$ 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  

AKTUALIZACJA

  • Okazuje się, że mam cryptcel, ale żeby się pokazać dmsetup targets, musiałem najpierwcryptsetup luksOpen <my-device>
  • Próbowałem za pomocą UUIDS zamiast według @Mikhail Morfikov za odpowiedź ale jeszcze nie w czasie startu systemu.

Nadal uważam, że problem polega na tym, że w jakiś sposób zaszyfrowany wolumin nie jest mapowany (otwierany cryptsetup luksOpen) w czasie uruchamiania, więc nie /dev/mapper/<safe_vault or UUID>istnieje, a następnie próba zamontowania go (fstab) kończy się niepowodzeniem.

AKTUALIZACJA 2

Okazuje się, że nie miałem niezbędnych skryptów do zamontowania w czasie rozruchu. Zobacz notatkę w odpowiedzi @ MikhailMorfikov.


1
Czy cel krypty pojawia się po ręcznym wykonaniu luksOpen? Spodziewałbym się, że gdyby go nie było, luksOpen też by zawiodł.
CVn

Ok, po sudo cryptsetup luksOpenpojawieniu się dwóch nowych celów dla sudo dmsetup targets: errori crypt. Chyba muszę zmienić to pytanie ...
pgpb.padilla

Czy to partycja czy kontener plików?
Michaił Morfikow

/dev/mapper/<my-logical-volume>-safe_vaultjest logicznym woluminem utworzonym za pomocą LVM i /dev/mapper/safe_vaultjest urządzeniem, na które jest mapowany cryptsetup luksOpen /dev/mapper/<my-logical-volume>-safe_vault. Czy wiesz, czy crypttabdziała z woluminami LVM?
pgpb.padilla

Mam lvm wewnątrz partycji Luks, tak naprawdę mam cały dysk 1,5 TB zaszyfrowany (oprócz /boot). Wszystko zamontowane przy rozruchu bez problemu. Czy jesteś pewien, że zaktualizowałeś initramfspo edycji /etc/crypttab? Czy możesz pokazać, lsblk -o name,uuid,mountpointkiedy wszystko jest zamontowane i działa tak, jak powinno?
Michaił Morfikow

Odpowiedzi:


16

Musisz zwrócić uwagę na UUID. Na przykład jest to moja konfiguracja:

# 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   /

Mam jedną zaszyfrowaną partycję (sda2) z 4 woluminami (LVM). Potrzebuję ustawić dwa identyfikatory UUID w odpowiednich plikach. Identyfikator UUID sda2 idzie do, /etc/crypttaba identyfikator UUID woluminu (na przykład debian_crypt-root) /etc/fstab.

Byłoby to:

# 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

Po zmianie /etc/crypttabpliku musisz odbudować initramfs:

# update-initramfs -u -k all

UWAGA

Pakiet cryptsetupmusi zostać zainstalowany, ponieważ zawiera skrypty startowe, które zapewniają obsługę automatycznego montowania zaszyfrowanych woluminów podczas rozruchu.

Po co zawracać sobie tym głowę? Cóż, jeśli konfiguracja LVM podczas instalacji Debiana wheezy instaluje pakiety cryptsetup-bin , libcryptsetup4a lvm2jednak nie cryptsetup, więc masz narzędzia do konfiguracji urządzeń LVM i luks, ale nie skrypty niezbędne do zamontowania urządzeń LUKS w czasie startu. Są one dostarczane w pakiecie cryptsetup .


Próbowałem użyć, UUIDale pojawia się ten sam błąd. Zaktualizuję pytanie o szczegóły.
pgpb.padilla

Cześć, robi się to trochę za długo, możemy porozmawiać ?
pgpb.padilla

Nawiasem mówiąc, nawet jeśli nie edytujesz / etc / crypttab, wydaje się, że dyski będą go edytować, jeśli zmienisz pewne ustawienia szyfrowania. Ta odpowiedź pomogła mi naprawić błędy, które popełniłem przy dyskach (i być może większy błąd przy próbie cofnięcia dysków).
mędrzec

0

Wydaje się, że @Mikhail Morfikov za odpowiedź obejmuje montaż podczas initramfs etapie. Alternatywą (jeśli nie jest to główny system plików) jest odszyfrowanie i zamontowanie partycji automatycznie przez systemd po załadowaniu jądra Linuz. Oczywiście jest to możliwe tylko wtedy, gdy używasz systemd . Wyjaśnię tę metodę tutaj:

/etc/crypttabWpis:

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

Oto noautoinstrukcja, aby nie próbować odszyfrować dysku podczas etapu initramfs .

Powyżej e412-blahblahznajduje się identyfikator UUID partycji zawierającej system Luks, w moim przypadku partycja /dev/sdb2:

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

Podczas uruchamiania jądra Linuz systemd odczyta /etc/crypttabplik i utworzy plik usługi wykonawczej /run/systemd/generator/systemd-cryptsetup@crypt2.service. Jednak usługa ta nie jest uruchamiana automatycznie. Możesz uruchomić go ręcznie

systemctl start systemd-cryptsetup@crypt2.service

ale aby go odszyfrować, a następnie zamontować podczas uruchamiania, /etc/fstabmoże wymagać tego w następujący sposób:

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

Oto x-systemd.automountinstrukcja systemd do zamontowania /media/crypt-datai x-systemd.requires=systemd-cryptsetup@crypt2.serviceinstrukcja systemd, że odszyfrowanie crypt2jest wymagane, zanim będzie to możliwe.

W systemd nie zainstaluje katalogu aż do pierwszego dostępu, np. ls /media/crypt-dataWtedy zamontuje się dokładnie w czasie i pojawi się później /proc/mounts.


Związane z

Możesz zapytać „* dlaczego masz zaszyfrowany dysk z kluczem w głównym systemie plików?”. Dzieje się tak, ponieważ główny system plików jest również szyfrowany, więc klucz jest bezpieczny. System plików root jest odszyfrowywany na etapie bootowania initramfs , odpowiedź la Mikhaila. W tym /etc/crypttabpliku mam inny wpis :

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

i opiszę konfigurowania że i USB rozruchu tutaj

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.