So installieren Sie Fedora/Rhel/CentOS über Kickstart auf einem vorhandenen Luks -Gerät

So installieren Sie Fedora/Rhel/CentOS über Kickstart auf einem vorhandenen Luks -Gerät

KickStart-Installationen lassen uns leicht ein Skript und replizieren unbeaufsichtigte oder halbgebundene Installationen von Fedora, Red Hat Enterprise Linux oder CentOS. Die zur Installation des Betriebssystems erforderlichen Anweisungen werden mit einer dedizierten Syntax in einer Kickstart -Datei angegeben, die an das Anaconda -Installateur weitergegeben wird. In diesem Tutorial werden wir sehen, wie man einen bereits vorhandenen wiederverwendet Luks (Linux Unified Keys -Setup) Container Bei der Durchführung einer Kickstart -Installation: Dies ist etwas, das mit Kickstart -Anweisungen nicht nur erreicht werden kann und einige zusätzliche Schritte erfordert.

In diesem Tutorial lernen Sie:

  • So verwenden Sie einen vorhandenen Luks -Container bei der Durchführung einer Kickstart -Installation von Fedora, Rhel oder CentOS
  • So erstellen und verwenden Sie eine Aktualisierung.IMG -Datei, die mit dem Anaconda -Installateur verwendet werden soll.
So installieren Sie Fedora/Rhel/CentOS über Kickstart auf einem vorhandenen Luks -Gerät

Softwareanforderungen und Konventionen verwendet

Softwareanforderungen und Linux -Befehlszeilenkonventionen
Kategorie Anforderungen, Konventionen oder Softwareversion verwendet
System Fedora/Rhel/Centos
Software Es ist keine spezifische Software erforderlich, um diesem Tutorial zu folgen.
Andere
  • Kenntnis der Kickstart -Syntax
  • Kenntnis von Luks (Linux Unified Key Setup) und den Befehl cryptsetup.
Konventionen # - erfordert, dass gegebene Linux -Befehle mit Root -Berechtigungen entweder direkt als Stammbenutzer oder mit Verwendung von ausgeführt werden können sudo Befehl
$ - Erfordert, dass die angegebenen Linux-Befehle als regelmäßiger nicht privilegierter Benutzer ausgeführt werden können

Einführung

Kickstart lassen Sie uns leicht replizieren und das Betriebssysteminstallationen auf eine Weise anpassen, die einfach unmöglich aus dem grafischen Installationsprogramm Anaconda zu erreichen ist. Wir können zum Beispiel erklären, welche Pakete oder Paketgruppen auf dem System installiert werden sollen und was stattdessen ausgeschlossen werden sollte.

Wir haben auch die Möglichkeit, benutzerdefinierte Befehle vor oder nach der Installation auszuführen, um sie innerhalb des Dedizierten anzugeben %Vor Und %Post Abschnitte der Kickstart -Datei jeweils. Wir werden diese letzte erwähnte Funktion nutzen, um eine bereits vorhandene zu verwenden Luks Gerät während des Installationsprozesses.

Verschlüsselung mit native Kickstart -Syntax

Das Erstellen von Luks -Containern ist ziemlich einfach und kann nur durch die Verwendung von nativen Kickstart -Anweisungen durchgeführt werden. Hier ist ein Beispiel:



Teil PV.01-Dondisk = sda --crypted--luks-type = luks1--cipher = aes-texts-plain64--pbkdf-time = 5000-Passphrase = SecretPasPhrase

Im obigen Beispiel mit der Verwendung der Teil Anweisungen erstellen wir eine verschlüsselte LVM physisches Volumen auf dem /dev/sda Scheibe. Wir geben die an Luks Version zu verwenden (luks1 in diesem Fall - zumindest in den letzten Versionen von Fedora luks2 ist der Standard geworden) Chiffre, und die Zeit, die in Millisekunden ausdrückt, um dafür auszugeben Pbkdf (Kennwortbasierte Schlüsselabendungsfunktion) Passphrase-Verarbeitung (es entspricht der Verwendung der Verwendung des --ITER-Zeit Option von Cryptsetup).

Auch wenn es keine sichere Angewohnheit ist, haben wir auch die benutzt --Passphrase Um die Verschlüsselungspassphrase bereitzustellen: Ohne diese Option würde der Installationsprozess unterbrochen, und wir würden aufgefordert, eine interaktiv zu liefern.

Wir können deutlich sehen, wie wir mit Kickstart im Vergleich zu einer traditionellen Installation viel mehr Flexibilität erhalten. Warum sollten wir dann zusätzliche Schritte ausführen müssen?? Es gibt noch einige Aufgaben, die wir nicht nur mit der Standard -Kickstart -Syntax mit der Standard -Kickstart. Unter anderem können wir nicht erschaffen Luks Container auf Rohgeräten (nur auf Partitionen) oder den Hashing -Algorithmus für die verwenden Luks Schlüsseleinrichtung, die standardmäßig auf eingestellt ist SHA256 (Nichts falsch daran).

Aus diesen Gründen möchten wir vor der Durchführung der Installation entweder manuell oder durch die Verwendung von Tools wie dem Inneren der Innenstadt unsere Partitions -Setup erstellen, die die Installation durchführen %Vor Abschnitt der Kickstart -Datei selbst. Wir können auch nur ein bestehendes haben Luks Setup wollen wir nicht zerstören. In all diesen Fällen müssen wir die zusätzlichen Schritte ausführen, die wir gleich sehen werden.

Der Kickstart %Pre -Abschnitt

Der %Vor Der Abschnitt einer Kickstart -Datei ist die erste, die beim Abnehmen der Datei analysiert wird. Es wird verwendet, um benutzerdefinierte Befehle durchzuführen, bevor die Installation startet, und muss explizit mit dem geschlossen werden %Ende Anweisung.

In %Vor, Der Bash -Shell -Dolmetscher wird standardmäßig verwendet, andere können jedoch über die angegeben werden --Dolmetscher Option (Um Python zu verwenden, würden wir schreiben %Pre -Interpreter/USR/bin/python). Wir können mit diesem Abschnitt die Befehle ausführen Luks Container. Hier ist, was wir schreiben können:

%pre iotty = "$ (tty)" exec> "$ iotty" 2> "$ iotty", während wahr; Do Cryptsetup Luksopen /dev /sda1 cryptroot - && break %End
Kopieren

Schauen wir uns den obigen Code an. Zunächst speichern wir das Ergebnis der tty Befehl, der den Dateinamen des an Standardeingangs verbundenen Terminals in die druckt, in die Iotty Variable.

Mit dem exec> "$ iotty" 2> "$ iotty" Befehl Wir haben die Standardausgabe und den Standardfehler an denselben Terminal umgeleitet:
Auf diese Weise können wir das Containerkennwort eingeben, wenn die CryTpsetup Luksopen Der Befehl wird ausgeführt und die Eingabeaufforderung wird auf dem Bildschirm angezeigt. Der Befehl wird in einer unendlichen Schleife gestartet, die nur dann unterbrochen wird, wenn der Luks Der Container wird erfolgreich geöffnet.

Wenn wir eine völlig unbeaufsichtigte Installation ausführen müssen, müssen wir die Passphrase direkt an CryptSetup übergeben (dies wird erneut nicht empfohlen). Wir würden schreiben:

%Pre Echo -n "OurverysecretpassPhrase" | Cryptsetup Luksopen /Dev /SDA1 Cryptroot - %Ende

Im obigen Beispiel haben wir die Passphrase an die Standardeingabe des CryptsetUp -Befehls über eine Rohre übergeben |: Wir haben die benutzt Echo Befehl mit dem -N Option, um zu vermeiden, dass ein neuer Zeilenzeichen am Ende der Passphrase angehängt wird.

Patching Fedora 31 Anaconda Installer

Wenn wir versuchen, einen entsperrten Luks -Container bei der Installation von Fedora 31 über Kickstart zu verwenden, erhalten wir Folgendes
Nachricht, und der Prozess wird abgebrochen:

Das vorhandene entsperrte Luks -Gerät kann nicht für die Installation verwendet werden, ohne dass ein Verschlüsselungsschlüssel dafür angegeben ist
Gerät. Bitte rescan the Storage.

Dies geschieht aufgrund dieses in der Fedora 31 -Version des Anaconda Installers eingeführten Commits. Der Code prüft im Grunde, dass ein vorhandenes Luks -Gerät über einen registrierten Schlüssel verfügt, wenn dies nicht die Installation abgebrochen wird. Das Problem ist, dass Blivet, Die von Anaconda zur Verwaltung von Anaconda verwendete Python -Bibliothek erfasst den Schlüssel nur, wenn der Container von ihm geöffnet wird: Dies kann vom grafischen Installateur erfolgen Luks Container. Ich persönlich kommentierte das Komitee und erklärte die Situation, und ein Fehler wurde auf Red Hat Bugzilla geöffnet.

Erstellen von Updates.IMG -Datei

Im Moment besteht die einzige Problemumgehung (die ich kenne) darin, den Anaconda -Quellcode zu patchen und die Zeile zu kommentieren, die die mit dem oben erwähnte Steuerung ausführt. Die gute Nachricht ist, dass es sehr einfach zu operieren ist.

Als erstes müssen wir das Anaconda Git -Repository klonen, insbesondere das F31-Release Zweig:

$ git klone https: // github.COM/Rhinstaller/Anaconda -B F31 -Release


Sobald das Repo kloniert ist, betreten wir die Anakonda Verzeichnis und ändern Sie die Pyanaconda/Speicher/Checker.py Datei: Alles, was wir tun müssen, ist eine Kommentarzeile zu kommentieren 619:

Def set_default_checks (self): "" "Setzen Sie die Standardprüfungen."" selbst.prüfungen = list () self.add_check (verify_root) self.add_check (verify_s390_constraints) self self.add_check (verify_partition_formatting) self self.add_check (verify_partition_sizes) self self.add_check (verify_partition_format_sizes) self self.add_check (verify_bootloader) self self.add_check (verify_gpt_biosboot) self self.add_check (verify_swap) self.add_check (verify_swap_uuid) self.add_check (verify_mountpoints_on_linuxfs) self self.add_check (verify_mountpoints_on_root) #self.add_check (verify_unlocked_devices_have_key) self self.add_check (verify_luks_devices_have_key) self self.add_check (verify_luks2_memory_requirements) self self.add_check (verify_mounted_Partitions)
Kopieren

Wir speichern die Änderung und starten vor der Wurzel des Repositorys die Make -updates Skript, das in der gefunden wird Skripte Verzeichnis. Damit das Skript ausgeführt werden muss, müssen wir haben Python2 Eingerichtet:

$ ./Skripte/Makeupdaten

Das Skript erzeugt die Aktualisierung.img Datei, die unsere Änderungen enthalten. Um den Inhalt zu überprüfen, können wir die verwenden lsinitrd Befehl:

$ lsinitrd Updates.IMG -Bild: Updates.IMG: 8.0K ================================================= =================ieben ====================================================== == DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 . DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Rennen drwxr-xr-x 3 EGDOC EGDOC 0 Jan 30 09:29 Rennen/Installation DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Run/install/install/install/install/install/install/install/install/ Aktualisierungen DRWXR-XR-X 3 EGDOC EGDOC 0 Jan 30 09:29 Ausführen/Installation/Updates/Pyanaconda Drwxr-XR-X 2 EGDOC EGDOC 0 Jan 30 09:29 Ausführen/Installation/Updates/Pyanaconda/Storage -rw-r- -R-- 1 EGDOC EGDOC 25443 Jan 30 09:29 Ausführen/Installation/Updates/Pyanaconda/Speicher/Checker.py ================================================= ======================== 

Wir werden diese Datei verwenden, um den Installationsprogramm von Fedora 31 zu „Patch“.

Auftragen des Patchs

Um die in der gerade generierten Datei enthaltenen Änderungen anzuwenden, müssen wir sie an einen Ort platzieren, an dem wir leicht darauf zugreifen können, möglicherweise über FTP oder HTTP oder sogar auf einem lokalen Blockgerät, und die Verwendung des Inst.Aktualisierung Parameter, um es aus dem Fedora -Installationsprogramm zu verweisen. Im Grub -Menü zeigen wir den Menü „Fedora installieren“:



Fedora 31 Installermenü

Sobald die Menüzeile ausgewählt ist, drücken wir die Registerkarte Taste: Die mit dem Eintrag zugeordnete Kernel -Befehlszeile wird unten auf dem Bildschirm angezeigt:



Die Kernel -Befehlszeile, die von der Eintrag „Installation Fedora“ verwendet wird, müssen wir jetzt die angehängt haben Inst.Aktualisierung Anweisungen und den Weg zum Weg zur Aktualisierung.img Datei, die wir erstellt haben. Angenommen, sowohl den Kickstart als auch die Updates.Die IMG -Datei ist über HTTP auf einem lokalen Server mit IP 192 zugegriffen.168.0.37, wir würden schreiben:
vmlinuz initrd = initrd.IMG Inst.Stufe 2 = 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

Zu diesem Zeitpunkt können wir die Eingabetaste zum Booten drücken. Mit der obigen Änderung beschwert sich der Installateur nicht mehr darüber
die freigeschalteten Luks Gerät, und die Installation wird ohne Probleme fortgesetzt.

Schlussfolgerungen

In diesem Artikel haben wir gesehen, wie eine Kickstart -Installation eingestellt werden kann, um eine bereits vorhanden Luks Gerät, entsperren es in der %Vor Abschnitt der KickStart -Datei und der Anwendung einer kleinen Problemumgehung auf das Anaconda -Installateur von Fedora 31, das ansonsten fehlschlagen würde, wenn eine solche Installationsart versucht wird. Wenn Sie neugierig auf die Kickstart -Syntax sind, sehen Sie sich bitte die Online -Dokumentation an.

Verwandte Linux -Tutorials:

  • Dinge zu installieren auf Ubuntu 20.04
  • So installieren Sie Debian in einem vorhandenen Luks -Container
  • So installieren Sie Anaconda Scientific Computing Python…
  • So führen Sie unbeaufsichtigte Linux -Installationen mit Kickstart durch
  • So verwenden Sie eine Datei als Luks -Geräteschlüssel
  • Oracle Linux gegen Red Hat (Rhel)
  • Linux -Download
  • Dinge zu tun nach der Installation Ubuntu 20.04 fokale Fossa Linux
  • Eine Einführung in Linux -Automatisierung, Tools und Techniken
  • Dinge zu installieren auf Ubuntu 22.04