_____ _   _ _    _    ___      _
 / ____| \ | | |  | |  / / |    (_)
| |  __|  \| | |  | | / /| |     _ _ __  _   ___  __
| | |_ | . ` | |  | |/ / | |    | | '_ \| | | \ \/ /
| |__| | |\  | |__| / /  | |____| | | | | |_| |>  <
 \_____|_| \_|\____/_/   |______|_|_| |_|\__,_/_/\_\

Szyfrowany rootfs na greenOSTe

Chcąc przetestować greenOSTe na starym laptopie z Core2Duo stwierdziłem, że jeśli ma być to hackerska instalacja to dysk powinien być szyfrowany. Z racji tego, że Trisquel jest oparty na Ubuntu, a Ubuntu na Debianie, to może zadziała sposób wykorzystywany przy greenOS. Niestety, nie. Podczas bootowania właściwego systemu nie zostaliśmy zapytani o hasło, a system zatrzymywał się przy próbie montowania głownego systemu plików, którego nie było bo dysk nie został odszyfrowany. Program typu init przerwał ładowanie systemu zrzucając tym samym powłokę BusyBox obrazu initramfs.

Problem leżał w tym, że do archiwum initramfs, nie został skopiowany program cryptsetup mimo iż instalator pakietu aktualizował to archiwum. Niezbędne jest również dopisanie dwóch dodatkowych opcji w pliku /etc/crypttab. Najpierw musimy wymusić załadowanie programu cryptsetup do archiwum. W pliku /usr/share/initramfs-tools/conf-hooks.d/forcecryptsetup zapisujemy poniższą linię:

export CRYPTSETUP=y

Teraz należy zaktualizować archiwum z initramfs, przy czym zapiszemy zwracane przez polecenie informacje do pliku, dzięki czemu będzie mogli się upewnić że program cryptsetup został rzeczywiście dodany do archiwum.

# update-initramfs -c -k all -v > ~/upd-initramfs.log
# cat ~/upd-initramfs.log | grep "crypt"

Na wyściu drugiego polecenia należy szukać ścieżki /sbin/cryptsetup, powinna być oznaczona komunikatem Adding binary. Teraz możemy przejść do utworzenia odpowiedniego wpisu w pliku /etc/crypttab. Podobnie jak w materiale dotyczącym greenOS, jednak obecny wpis różni się od poprzedniego materiału o podobnej tematyce. Ma dwie dodatkowe opcje oraz UUID nie może znajdować się między cudzysłowami. UUID najlepiej pobrać za pomocą powyższego polecenia:

# blkid | grep "LUKS" | awk '{printf $2}' >> /etc/crypttab

Z kolei wpis w pliku /etc/crypttab wygląda w następujący sposób

cryptroot UUID=...  none  nofail,luks,initramfs

Po zapisaniu zmian, należy ponownie zaktualizować initramfs oraz upewnić się cryptsetup nadal tam jest.

# update-initramfs -c -k all -v > ~/upd-initramfs.log

Po wykonaniu tych czynności możemy powrócić do pozostałych standardowych czynności instalacyjnych. Uwaga! po każdym aktualizowaniu initramfs, należy jeszcze raz go zaktualizować tak jak robiliśmy to w tym materiale, ponieważ może okazać się, że cryptsetup zostało usunięte z archiwum, co spowoduje unieruchomienie systemu po restarcie.

Źródło:

  1. Github Gist: gvtulder/encrypting-without-reinstalling-ubuntu.txt

~xf0r3m