GNU/Linux >> Znalost Linux >  >> Cent OS

Jak nainstalovat Fedora/RHEL/CentOS přes kickstart na stávající zařízení LUKS

Instalace Kickstart nám umožňují snadno skriptovat a replikovat bezobslužné nebo částečně bezobslužné instalace Fedory, Red Hat Enterprise Linux nebo CentOS. Pokyny potřebné k instalaci operačního systému jsou specifikovány s vyhrazenou syntaxí v souboru Kickstart, který je předán instalačnímu programu Anaconda. V tomto tutoriálu uvidíme, jak znovu použít již existující LUKS (Linux Unified Keys Setup) kontejner při provádění instalace Kickstart:to je něco, čeho nelze dosáhnout pouze pomocí pokynů Kickstart a vyžaduje to několik dalších kroků.

V tomto tutoriálu se naučíte:

  • Jak používat existující kontejner LUKS při provádění Kickstart instalace Fedory, RHEL nebo CentOS
  • Jak vytvořit a používat soubor updates.img pro použití s ​​instalačním programem Anaconda.

Jak nainstalovat Fedora/RHEL/CentOS přes kickstart na stávající zařízení LUKS

Požadavky na software a použité konvence

Softwarové požadavky a konvence příkazového řádku systému Linux
Kategorie Požadavky, konvence nebo použitá verze softwaru
Systém Fedora/Rhel/CentOS
Software K provedení tohoto výukového programu není potřeba žádný konkrétní software.
Jiné
  • Znalost syntaxe Kickstart
  • Znalost LUKS (Linux Unified Key Setup) a příkaz cryptsetup.
Konvence # – vyžaduje, aby dané linuxové příkazy byly spouštěny s právy root buď přímo jako uživatel root, nebo pomocí sudo příkaz
$ – vyžaduje, aby dané linuxové příkazy byly spouštěny jako běžný neprivilegovaný uživatel

Úvod

Kickstart nám umožňuje snadno replikovat a přizpůsobovat instalace operačního systému způsoby, kterých je jednoduše nemožné dosáhnout z grafického instalátoru Anaconda. Můžeme například deklarovat, které balíčky nebo skupiny balíčků by měly být nainstalovány v systému a které by naopak měly být vyloučeny.

Máme také možnost spouštět vlastní příkazy před nebo po provedení instalace a specifikovat je ve vyhrazeném %pre a %post oddíly souboru Kickstart. Tuto posledně zmíněnou funkci využijeme k použití již existujícího LUKS zařízení během procesu instalace.

Šifrování s nativní syntaxí Kickstart

Vytváření kontejnerů LUKS je poměrně snadné a lze jej provést pouze pomocí nativních pokynů pro kickstart. Zde je příklad:

part pv.01 --ondisk=sda --encrypted --luks-type=luks1 --cipher=aes-xts-plain64 --pbkdf-time=5000 --passphrase=secretpassphrase

Ve výše uvedeném příkladu pomocí část instrukci vytvoříme zašifrovaný lvm fyzický svazek na /dev/sda disk. Uvádíme LUKS verzi, kterou chcete použít (v tomto případě luks1 – alespoň v posledních verzích Fedory se luks2 stal výchozím), šifra a čas, vyjádřený v milisekundách, strávený pro PBKDF (Heslo-Based Key Derivation Function) zpracování přístupové fráze (je ekvivalentem použití --iter-time možnost cryptsetup ).

I když to není bezpečný zvyk, použili jsme také --passphrase poskytnout šifrovací přístupovou frázi:bez této možnosti by byl instalační proces přerušen a my bychom byli vyzváni, abychom ji poskytli interaktivně.

Jasně vidíme, jak pomocí Kickstartu získáme mnohem větší flexibilitu ve srovnání s tradiční instalací; proč bychom tedy museli provádět další kroky? Stále existují některé úkoly, které nemůžeme dosáhnout pouze pomocí standardní syntaxe Kickstart. Mimo jiné nemůžeme vytvořit LUKS kontejnery na nezpracovaných zařízeních (pouze na oddílech) nebo určit algoritmus hash, který se má použít pro LUKS nastavení klíče, které je ve výchozím nastavení nastaveno na sha256 (na tom není nic špatného).

Z těchto důvodů můžeme chtít vytvořit nastavení oddílu před provedením instalace, buď ručně, nebo pomocí nástrojů jako parted uvnitř %pre části samotného souboru kickstart. Můžeme také mít pouze existující LUKS nastavení, které nechceme zničit. Ve všech těchto případech musíme provést další kroky, které uvidíme za chvíli.

Sekce kickstart %pre

%pre sekce kickstart souboru je první, která má být analyzována, když je soubor načten. Používá se k provádění vlastních příkazů před zahájením instalace a musí být uzavřen explicitně pomocí %end instrukce.

V %pre , ve výchozím nastavení se používá interpret bash shell, ale další lze zadat pomocí --interpreter možnost (pro použití pythonu bychom napsali %pre --interpreter /usr/bin/python ). Tuto sekci můžeme použít ke spuštění příkazů potřebných k otevření existujícího LUKS kontejner. Zde je to, co můžeme napsat:

%pre
iotty="$(tty)"
exec > "${iotty}" 2> "${iotty}"

while true; do
  cryptsetup luksOpen /dev/sda1 cryptroot - && break
done
%end

Podívejme se na výše uvedený kód. Nejprve uložíme výsledek tty příkaz, který vypíše název souboru terminálu připojeného ke standardnímu vstupu do iotty proměnná.

Pomocí exec> "${iotty}" 2> "${iotty}" příkaz jsme přesměrovali standardní výstup a standardní chybu na stejný terminál:
takto budeme moci zadat heslo kontejneru při crytpsetup luksOpen bude proveden příkaz a na obrazovce se zobrazí výzva. Příkaz se spouští v nekonečné smyčce, která je přerušena pouze při LUKS kontejner je úspěšně otevřen.

Pokud chceme spustit zcela bezobslužnou instalaci, musíme předat přístupovou frázi přímo cryptsetup (opět se nedoporučuje). Napsali bychom:

%pre
echo -n "ourverysecretpassphrase" | cryptsetup luksOpen /dev/sda1 cryptroot -
%end

Ve výše uvedeném příkladu jsme předali přístupovou frázi do standardního vstupu příkazu cryptsetup pomocí roury | :použili jsme echo pomocí -n možnost vyhnout se přidání znaku nového řádku na konec přístupové fráze.

Oprava instalačního programu Fedora 31 anaconda

Pokud se pokusíme použít odemčený kontejner LUKS při instalaci Fedory 31 přes Kickstart, obdržíme následující
zprávu a proces bude přerušen:

Stávající odemčené zařízení LUKS nelze pro instalaci použít bez šifrovacího klíče zadaného pro toto
zařízení. Prosím, znovu prohledejte úložiště.

To se děje kvůli tomuto potvrzení zavedenému ve verzi Fedora 31 instalačního programu Anaconda. Kód v podstatě zkontroluje, zda má stávající zařízení LUKS registrovaný klíč, pokud tomu tak není, instalace se přeruší. Problém je v tom, že blivet , knihovna python, kterou Anaconda používá ke správě oddílu, získá klíč pouze v případě, že kontejner otevře:to lze provést z grafického instalátoru, ale v okamžiku psaní není k dispozici instrukce Kickstart pro odemknutí existujícího  LUKS kontejner. Osobně jsem komentoval commit vysvětlující situaci a byla otevřena chyba v red hat bugzille.

Vytvoření souboru updates.img

V tuto chvíli je jediným řešením (o kterém vím) záplata zdrojového kódu Anacondy a okomentování řádku, který provádí ovládací prvek zavedený výše uvedeným odevzdáním. Dobrou zprávou je, že ovládání je velmi jednoduché.

Jako první věc musíme naklonovat úložiště Anaconda git, konkrétně f31-release větev:

$ git clone https://github.com/rhinstaller/anaconda -b f31-release

Jakmile je repo naklonováno, zadáme anaconda a upravte adresář pyanaconda/storage/checker.py file:vše, co musíme udělat, je okomentovat řádek 619 :

def set_default_checks(self):
        """Set the default checks."""
        self.checks = list()
        self.add_check(verify_root)
        self.add_check(verify_s390_constraints)
        self.add_check(verify_partition_formatting)
        self.add_check(verify_partition_sizes)
        self.add_check(verify_partition_format_sizes)
        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)

Uložíme úpravu a z kořenového adresáře úložiště spustíme makeupdates skript, který se nachází v scripts adresář. Aby byl skript spuštěn, musíme mít python2 nainstalováno:

$ ./scripts/makeupdates

Skript vygeneruje updates.img soubor, který bude obsahovat naše úpravy. Pro kontrolu jeho obsahu můžeme použít lsinitrd příkaz:

$ lsinitrd updates.img
Image: updates.img: 8.0K
========================================================================
Version:

Arguments:
dracut modules:
========================================================================
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 .
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run/install
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run/install/updates
drwxr-xr-x   3 egdoc    egdoc           0 Jan 30 09:29 run/install/updates/pyanaconda
drwxr-xr-x   2 egdoc    egdoc           0 Jan 30 09:29 run/install/updates/pyanaconda/storage
-rw-r--r--   1 egdoc    egdoc       25443 Jan 30 09:29 run/install/updates/pyanaconda/storage/checker.py
========================================================================

Tento soubor použijeme k „záplatě“ instalátoru Fedory 31.

Použití opravy

Abychom mohli použít úpravy obsažené v souboru, který jsme právě vygenerovali, musíme jej umístit někam, kde k němu můžeme snadno přistupovat, například přes ftp nebo http, nebo dokonce na místní blokové zařízení, a použít inst.updates parametr, který na něj odkazuje z obrazu instalačního programu Fedory. Z nabídky grub zvýrazníme položku nabídky „Instalovat Fedoru“:



Nabídka instalačního programu Fedory 31

Jakmile je vybrán řádek nabídky, stiskneme klávesu Tab:příkazový řádek jádra spojený s položkou se zobrazí ve spodní části obrazovky:



Příkazový řádek jádra používaný položkou “Install Fedora” Vše, co nyní musíme udělat, je připojit inst.updates instrukci a zadejte cestu k updates.img soubor, který jsme vytvořili. Za předpokladu, že soubor Kickstart i soubor updates.img jsou přístupné přes http na místním serveru s IP 192.168.0.37, napsali bychom:
vmlinuz initrd=initrd.img inst.stage2=hd:LABEL=Fedora-S-dvd-x86_31-31 quiet
inst.updates=http://192.168.0.37/updates.img inst.ks=http://192.168.0.37/ks.cfg

V tomto okamžiku můžeme stisknout enter pro spuštění. S výše uvedenou úpravou si instalátor již nebude stěžovat na
odemčené LUKS zařízení a instalace proběhne bez problémů.

Závěry

V tomto článku jsme viděli, jak vyladit instalaci kickstart, aby bylo možné znovu použít již existující LUKS zařízení a odemkněte jej v %pre sekce kickstart souboru a jak použít malé řešení na instalační program Fedora 31 Anaconda, který by jinak selhal, když se pokusíte o takový typ instalace. Pokud vás zajímá syntaxe Kickstart, podívejte se prosím na online dokumentaci.


Cent OS
  1. Jak nainstalovat Google Chrome 17 na Fedora 16, CentOS 6 / RHEL 6

  2. Jak nainstalovat Python 3.5 na CentOS/RHEL a Fedoru

  3. Jak nainstalovat docker na CentOS / RHEL / Fedora

  1. Jak nainstalovat soubor RPM na OS Linux (CentOS, RHEL a Fedora)

  2. Jak nainstalovat phpMyAdmin na RHEL 8 / CentOS 8

  3. Jak extrahovat balíček 7z v CentOS/RHEL/Fedora?

  1. Jak nainstalovat P7Zip na RHEL 8 / CentOS 8

  2. Jak nainstalovat ntfs-3g na RHEL 8 / CentOS 8

  3. Jak nainstalovat PHP-mbstring na RHEL 8 / CentOS 8