Jak zainstalować Fedora/Rhel/Centos za pośrednictwem Kickstart na istniejącym urządzeniu LUKS

Jak zainstalować Fedora/Rhel/Centos za pośrednictwem Kickstart na istniejącym urządzeniu LUKS

Instalacje KICKSTART pozwól nam łatwo skryptować i replikuj instalacje bez opieki lub częściowo nieporządkowane Fedory, Red Hat Enterprise Linux lub Centos. Instrukcje potrzebne do zainstalowania systemu operacyjnego są określone z dedykowaną składnią, wewnątrz pliku Kickstart, który jest przekazywany do instalatora AnaConda. W tym samouczku zobaczymy, jak ponownie użyć już istniejącego Luks (Linux Unified Keys Setup) Pojemnik podczas wykonywania instalacji Kickstart: Jest to coś, czego nie można osiągnąć tylko za pomocą instrukcji Kickstart i wymaga dodatkowych kroków.

W tym samouczku nauczysz się:

  • Jak korzystać z istniejącego kontenera LUKS podczas wykonywania instalacji Fedory, Rhel lub Centos
  • Jak tworzyć i korzystać z aktualizacji.plik IMG do użycia z instalatorem Anaconda.
Jak zainstalować Fedora/Rhel/Centos za pośrednictwem Kickstart na istniejącym urządzeniu LUKS

Zastosowane wymagania i konwencje oprogramowania

Wymagania oprogramowania i konwencje linii poleceń Linux
Kategoria Wymagania, konwencje lub wersja oprogramowania
System Fedora/Rhel/Centos
Oprogramowanie Nie jest potrzebne konkretne oprogramowanie do śledzenia tego samouczka.
Inny
  • Znajomość składni Kickstart
  • Znajomość LUKS (konfiguracja klawiszu Linux) i polecenie CryptsetUp.
Konwencje # - Wymaga, aby podane polecenia Linux są wykonywane z uprawnieniami root bezpośrednio jako użytkownik root lub za pomocą sudo Komenda
$ - Wymaga, aby podane polecenia Linux zostały wykonane jako zwykły użytkownik niepewny

Wstęp

KINGSTART pozwól nam łatwo powtórzyć i dostosować instalacje systemu operacyjnego w sposób, który po prostu nie można osiągnąć od instalatora graficznego Anaconda. Możemy na przykład zadeklarować, jakie pakiety lub grupy pakietów powinny być zainstalowane w systemie i co należy wykluczyć.

Mamy również szansę na wykonanie niestandardowych poleceń przed lub po wykonaniu instalacji, określając je w dedykowanym %przed I %post Odpowiednio sekcje pliku Kickstart. Skorzystamy z tej ostatniej wymienionej funkcji, aby użyć już istniejącego Luks urządzenie podczas procesu instalacji.

Szyfrowanie z natywną składnią Kickstart

Tworzenie kontenerów LUKS jest dość łatwe i można je wykonać za pomocą natywnych instrukcji Kickstart. Oto przykład:



Część PV.01 -ondisk = sda-encrypted--luks-type = luks1--cipher = aes -xts-pllain64--pbkdf-time = 5000 --passphraza = secretPasphraze

W powyższym przykładzie, używając część Instrukcja, tworzymy szyfrowane LVM objętość fizyczna na /dev/sda dysk. Określamy Luks Wersja do użycia (LUKS1 W tym przypadku - przynajmniej w ostatnich wersjach Fedora Luks2 stała się domyślnie), szyfr, i czas, wyrażony w milisekundach, do wydania PBKDF (Funkcja wyprowadzania klucza opartego na hasłach) Przetwarzanie paliw (jest to odpowiednik używania --czas iter opcja CryptsetUp).

Nawet jeśli nie jest to bezpieczny nawyk, użyliśmy również --fraza Aby zapewnić hasło szyfrowania: bez tej opcji proces instalacji zostanie przerwany i zostalibyśmy poproszeni o dostarczenie jednego interaktywnego.

Widzimy wyraźnie, w jaki sposób, używając Kickstart, uzyskujemy znacznie większą elastyczność w porównaniu z tradycyjną instalacją; Dlaczego musielibyśmy wykonać dodatkowe kroki? Nadal jest pewne zadania, których nie możemy osiągnąć za pomocą standardowej składni Kickstart. Między innymi nie możemy stworzyć Luks kontenery na surowych urządzeniach (tylko na partycjach) lub określ algorytm mieszania Luks Konfiguracja klucza, która domyślnie jest ustawiona SHA256 (nic w tym złego).

Z tych powodów możemy chcieć utworzyć naszą konfigurację partycji przed wykonaniem instalacji, ręcznie lub za pomocą narzędzi takich jak rozstanie się w %przed sekcja samego pliku Kickstart. Możemy również mieć istniejący Luks konfiguracja nie chcemy niszczyć. We wszystkich tych przypadkach musimy wykonać dodatkowe kroki, które zobaczymy za chwilę.

Kickstart %przed

%przed Sekcja pliku Kickstart jest pierwszą, która została przeanalizowana po pobraniu pliku. Służy do wykonywania niestandardowych poleceń przed rozpoczęciem instalacji i musi być wyraźnie zamknięta %koniec instrukcja.

W %przed, Interpreter skorupy bash jest używany domyślnie, ale inne można określić za pośrednictwem --interpretator opcja (aby użyć Pythona, które pisalibyśmy %Pre -interpreter/USR/Bin/Python). Możemy użyć tej sekcji do uruchamiania poleceń wymaganych do otwarcia egzystencji Luks pojemnik. Oto, co możemy napisać:

%pre iotty = "$ (tty)" exec> "$ iOTTY" 2> "$ iOTTY" podczas gdy true; Do CryptsetUp Luksopen /Dev /Sda1 Cyptroot - && Break Done %End
Kopiuj

Spójrzmy na powyższy kod. Po pierwsze, przechowujemy wynik tty polecenie, które drukuje nazwę pliku terminal podłączonego do standardowego wejścia, do IOTTY zmienny.

Z exec> "$ iOTTY" 2> "$ iOTTY" Polecenie przekierowaliśmy standardowe wyjście i błąd standardowy do tego samego terminala:
W ten sposób będziemy mogli wprowadzić hasło kontenera, gdy CrytpsetUp Luksopen Polecenie zostanie wykonane, a monit zostanie wyświetlony na ekranie. Polecenie jest uruchamiane w nieskończonej pętli, która jest przerywana tylko wtedy, gdy Luks Pojemnik jest pomyślnie otwierany.

Jeśli chcemy uruchomić całkowicie bez nadzoru instalacji, musimy przekazać hasło bezpośrednio do CryptsetUp (ponownie nie jest to zalecane). Napisalibyśmy:

%pre echo -n „OurverySecretPassPhraze” | CryptsetUp Luksopen /Dev /SDA1 Cyptroot - %END

W powyższym przykładzie przekazaliśmy hasło do standardowego wejścia polecenia CryptsetUp za pomocą rury |: użyliśmy Echo polecenie z -N opcja, aby uniknąć nowej postaci, która ma zostać dołączona na końcu hasła.

Łatanie instalatora Fedora 31 Anaconda

Jeśli spróbujemy użyć odblokowanego kontenera LUKS podczas instalowania Fedora 31 za pośrednictwem Kickstart, otrzymamy następujące informacje
wiadomość, a proces zostanie przerwany:

Istniejącego odblokowanego urządzenia LUKS nie może być używane do instalacji bez określonego klucza szyfrowania
urządzenie. Proszę ,canuj przechowywanie.

Dzieje się tak z powodu tego zobowiązania wprowadzonego w wersji Fedora 31 instalatora Anaconda. Kod w zasadzie sprawdza, czy istniejące urządzenie LUKS ma zarejestrowany klucz, jeśli nie instalacja jest przerywana. Problemem jest Blivet, Biblioteka Python używana przez Anacondę do zarządzania partycją nabywa klucz Luks pojemnik. Osobiście skomentowałem zatwierdzenie wyjaśniające sytuację, a błąd został otwarty na Red Hat Bugzilla.

Tworzenie aktualizacji.plik IMG

W tej chwili jedynym obejściem (znam) jest załatanie kodu źródłowego Anaconda, komentowanie linii, która wykonuje kontrolę wprowadzoną z zatwierdzeniem, o którym wspomniano powyżej. Dobra wiadomość jest taka, że ​​jest to bardzo proste do działania.

Jako pierwszą rzeczą musimy sklonować repozytorium Anaconda Git, w szczególności F31-uwalnianie oddział:

$ git clone https: // github.COM/RHINSTALLER/ANACONDA -B F31 -Release


Po sklonowaniu repozytorium wchodzimy do anakonda katalog i modyfikuj Pyanaconda/Storage/Checker.py Plik: Wszystko, co musimy zrobić, to komentować linię 619:

def set_default_checks (self): „” „Ustaw domyślne czeki.""" samego siebie.checks = lista () self.add_check (verify_root) self.add_check (verify_s390_constraints) self.add_check (verify_partition_formatting) self.add_check (verify_partition_size) self.add_check (verify_partition_format_size) self.add_check (verify_bootloader) self.add_check (verify_gpt_biosboot) self.add_check (verify_swap) self.add_check (verify_swap_uuid) self.add_check (verify_mountpoints_on_linuxfs) self.add_check (Verify_Mountpoints_ON_ROOT) #Self.add_check (verify_unlocked_devices_have_key) self.add_check (verify_luks_devices_have_key) self.add_check (verify_luks2_memory_requirements) self.add_check (verify_mounted_partitions)
Kopiuj

Zapisujemy modyfikację i, z korzenia repozytorium, uruchamiamy makijażu skrypt, który znajduje się w Skrypty informator. Aby skrypt mógł zostać wykonany Python2 Zainstalowane:

$ ./Skrypty/makijaż

Skrypt wygeneruje aktualizacje.img plik, który będzie zawierał nasze modyfikacje. Aby sprawdzić jego zawartość, możemy użyć lsinitrd Komenda:

Aktualizacje $ lsinitrd.IMG Obraz: aktualizacje.IMG: 8.0k =================================================== ======================= Wersja: Argumenty: Moduły Dracut: ==================================================================================================================== ================================================== == DRWXR-XR-X 3 EGDOC EGDOC 0 stycznia 30 09:29 . drwxr-xr-x 3 EGDOC EGDOC 0 30 stycznia 09:29 Uruchom DRWXR-XR-X 3 EGDOC EGDOC 0 30 stycznia 09:29 Uruchom/zainstaluj DRWXR-XR-X 3 EGDOC EGDOC 0 stycznia 30 09:29 Uruchom/zainstaluj/zainstaluj/instalację Aktualizacje DRWXR-XR-X 3 EGDOC EGDOC 0 stycznia 09:29 Uruchom/instalację/aktualizacje/Pyanaconda Drwxr-xr-x 2 EGDOC EGDOC 0 stycznia 30 09:29 Uruchom/instalację/aktualizacje/Pyanaconda/Storage -Rw-R- -R-- 1 EGDOC EGDOC 25443 30 stycznia 09:29 Uruchom/zainstaluj/aktualizacje/Pyanaconda/Storage/Checker.PY ================================================== ======================== 

Użyjemy tego pliku, aby „załatać” instalator Fedora 31.

Zastosowanie łatki

Aby zastosować modyfikacje zawarte w pliku, który właśnie wygenerowaliśmy, musimy umieścić je gdzieś, gdzie możemy łatwo uzyskać do niego dostęp, być może za pośrednictwem FTP lub HTTP, a nawet na lokalnym urządzeniu blokowym, i użyć inst.aktualizacje parametr, aby odnieść się do niego z obrazu instalatora Fedora. Z menu Grub wyróżniamy wpis menu „Zainstaluj Fedora”:



Menu instalatora Fedora 31

Po wybraniu linii menu nacisrzymy klawisz TAB: Wiersz polecenia jądra powiązany z wpisem jest wyświetlany na dole ekranu:



Wiersz poleceń jądra używany przez wpis „Instaluj Fedora” Wszystko, co musimy teraz zrobić, to dołączyć inst.aktualizacje instruktaż i podaj ścieżkę do aktualizacje.img Plik, który utworzyliśmy. Przypuśćmy zarówno aktualizację, jak i aktualizacje.Plik IMG jest dostępny za pośrednictwem HTTP na serwerze lokalnym z IP 192.168.0.37, napisalibyśmy:
vmlinuz initrd = initrd.IMG Inst.scena2 = hd: etykieta = fedora-s-dvd-x86_31-31 cisza inst.Aktualizacje = http: // 192.168.0.37/aktualizacje.IMG Inst.ks = http: // 192.168.0.37/ks.CFG

W tym momencie możemy nacisnąć Enter, aby uruchomić. Z powyższą modyfikacją instalator nie będzie już narzekać
odblokowane Luks urządzenie, a instalacja będzie kontynuowana bez problemów.

Wnioski

W tym artykule zobaczyliśmy, jak dostroić instalację Kickstart, aby ponownie użyć już istniejącego Luks urządzenie, odblokowanie go w %przed Sekcja pliku Kickstart i sposób zastosowania niewielkiego obejścia do instalatora Anaconda Fedora 31, który w innym przypadku nie powiódłby się, gdy próba tego rodzaju instalacji jest próbą instalacji. Jeśli jesteś ciekawy składni Kickstart, spójrz na dokumentację online.

Powiązane samouczki Linux:

  • Rzeczy do zainstalowania na Ubuntu 20.04
  • Jak zainstalować Debiana na istniejącym kontenerze Luksa
  • Jak zainstalować Python Computing Computing Computing Computing…
  • Jak wykonywać instalacje bez opieki Linux z Kickstart
  • Jak używać pliku jako klucza urządzenia LUKS
  • Oracle Linux vs Red Hat (RHEL)
  • Pobierz Linux
  • Rzeczy do zrobienia po zainstalowaniu Ubuntu 20.04 Focal Fossa Linux
  • Wprowadzenie do automatyzacji, narzędzi i technik Linuksa
  • Rzeczy do zainstalowania na Ubuntu 22.04