Automatyzacja partycji LUKS kończy się niepowodzeniem przy rozruchu

3

Mam zaszyfrowaną konfigurację pulpitu Ubuntu 14.04. Zaszyfrowana partycja główna jest tworzona przy użyciu domyślnych parametrów instalatora Ubuntu (opcje „Wymaż dysk i zainstaluj Ubuntu” oraz „Szyfruj nową instalację Ubuntu”). Ta część działa poprawnie (prosi o hasło przy starcie i otwiera partycje root i swap).

Później dodałem drugi dysk, oddzielnie zaszyfrowany za pomocą pliku klucza przechowywanego na partycji głównej. Chodziło o to, aby otworzyć go automatycznie, gdy tylko partycja główna zostanie otwarta. W tym celu drugi dysk został dodany do crypttab (przez UUID), a jego zaszyfrowany system plików - do fstab (według etykiety, punkt montowania /stg ).

Po uruchomieniu, po wprowadzeniu głównego hasła deszyfrowania, otrzymuję to: Wystąpił błąd podczas montażu / stg. Naciśnij S, aby pominąć montaż lub M, aby odzyskać ręcznie .

Dziwną rzeczą jest, jeśli nacisnę M i po prostu biegnij mount -a, po prostu montuje się pomyślnie. Nie widzę niczego podejrzanego /var/log/syslog.

O co chodzi? Co mogę sprawdzić, aby zdiagnozować problem?


[UPD - dodano kilka szczegółów] Napęd sdb ma tablicę partycji MBR z jedną partycją. Zaszyfrowany system plików został zainicjowany za pomocą następujących poleceń:

cryptsetup luksFormat /dev/sdb1 /root/stg.key
cryptsetup luksOpen /dev/sdb1 stg_crypt -d/root/stg.key
mkfs.ext4 /dev/mapper/stg_crypt -Lstg-tmp

/ etc / crypttab (rzeczywiste uuidy zastąpione tekstem „uuid-of -...” dla zwięzłości):

# this entry was created by Ubuntu installer
sda5_crypt UUID=uuid-of-sda5 none luks,discard

# this entry was added by me
stg_crypt  UUID=uuid-of-sdb1 /root/stg.key luks,discard

/ etc / fstab :

# these entries were created by Ubuntu installer
/dev/mapper/ubuntu--vg-root   /      ext4 errors=remount-ro 0 1
UUID=uuid-of-sda1             /boot  ext2 defaults          0 2
/dev/mapper/ubuntu--vg-swap_1 none   swap sw                0 0

# this entry was added by me
LABEL=stg-tmp                 /stg   ext4 errors=remount-ro 1 2
atzz
źródło

Odpowiedzi:

1

Zabawne, zastępując referencję etykiety w fstab ze ścieżką urządzenia rozwiązuje problem! To znaczy.: LABEL=stg-tmp zmienić na /dev/mapper/stg_crypt.

Próbowałem także odniesienia UUID, to nie działa. Najwyraźniej odwołania LABEL i UUID podczas uruchamiania działają na partycje fizyczne, ale nie działają na zaszyfrowanych partycjach. Ale oni pracują mount -a dla dowolnych partycji.

Nie jest to zbyt satysfakcjonujące rozwiązanie (np. Brakuje mu wyjaśnienia), ale rozwiązuje problem, więc chyba na razie jest ok.

atzz
źródło
0

Pierwsza myśl jest taka, że ​​initramfs NIE widzi pliku (normalne zachowanie)

kilka poprawek obejmuje:

dodając / tworząc rezerwowe hasło dla / stg jak wspomniano tutaj

Dodawanie Fallback do Luksa (przewiń w dół do sekcji Dodawanie hasła zwrotnego)

dodawanie dd if = / dev / usbkey bs = 512 pomiń = 4 liczba = 8 | cryptsetup luksOpen / dev / md0 luksVolume --key-file = - & amp; & amp; mount / dev / mapper / luksVolume / mnt /

podczas tworzenia lub przy użyciu cryptsetup-reencrypt (w repozytoriach, ale nie domyślnie zainstalowany)

linuxdev2013
źródło
Ale to otwiera sdb1 wolumin automatycznie, więc musi być w stanie zobaczyć plik klucza. Po prostu nie montuje odszyfrowanego systemu plików, dopóki nie uruchomię mount -a w konsoli naprawczej. (Lub w tym celu naciśnij S zamiast M, zakończ rozruch i uruchom sudo mount -a w zwykłym terminalu).
atzz
tehn dodaj mount -a do skryptów montowania / uruchamiania (nawet cpio)
linuxdev2013
Gdzie? Potrzebowałbym miejsca po otwarciu partycji głównej, ale przed uruchomieniem kontrolera montowania (lub cokolwiek wyświetla błąd modalny podczas uruchamiania); czy mógłbyś zaproponować jeden? Dobrze byłoby również zrozumieć, dlaczego nie można go zamontować.
atzz
plik klucza zezwala tylko na sudo cryptsetup luksOpen {options} / dev / {by-uuid} {nazwa montażu} pragniesz, aby AND sudo mount / dev / mapper / {VGname-LVNAME} / stg} rzucając to w / etc / fstab powinno napraw to (jeśli jednak nie zostanie podłączony podczas rozruchu, spowoduje to błędy)
linuxdev2013
prawidłowy wiersz w / etc / fstab dla tego wyglądałby następująco: {$ UUID} / stg {$ fstype} brak luksa, noearly (noearly powiedziałoby to w zasadzie, jeśli nie jest obecny, ruszaj się, nie przestawaj)
linuxdev2013