Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / SUSE Linux Enterprise Micro – Dokumentation  / Implementierungsleitfaden / Bereitstellung von vordefinierten Images / Konfiguration mit Combustion
Gilt für SUSE Linux Enterprise Micro 5.2

9 Konfiguration mit Combustion

In diesem Kapitel wird Combustion beschrieben, das Tool, mit dem Sie Ihr System beim ersten Starten gemäß Ihrer Konfiguration konfigurieren.

9.1 Informationen zu Combustion

Mit dem dracut-Modul Combustion können Sie Ihr System beim ersten Starten konfigurieren. Combustion liest eine bereitgestellte Datei (script), führt die Befehle darin aus und nimmt damit Änderungen am Dateisystem vor. Mit Combustion können Sie die Standardpartitionen ändern, die Passwörter der Benutzer festlegen, Dateien erstellen, Pakete installieren usw

Das dracut-Modul Combustion wird aufgerufen, sobald das Argument ignition.firstboot an die Kernel-Befehlszeile übergeben wird. Combustion liest dann die Konfiguration aus script. Wenn das Netzwerk-Flag in script gefunden wird, versucht Combustion, das Netzwerk zu konfigurieren. Sobald /sysroot eingehängt wurde, versucht Combustion, alle Einhängepunkte in /etc/fstab zu aktivieren und dann transactional-update aufzurufen und damit weitere Änderungen anzuwenden (z. B. das root-Passwort festlegen oder Pakete installieren).

Wenn Sie Combustion verwenden, müssen Sie dem Konfigurationsgerät die Kennung combustion zuweisen, eine bestimmte Verzeichnisstruktur auf diesem Konfigurationsmedium erstellen und die Konfigurationsdatei script einfügen. Erstellen Sie im Root-Verzeichnis des Konfigurationsmediums das Verzeichnis combustion und platzieren Sie script zusammen mit anderen Dateien in dieses Verzeichnis – SSH-Schlüssel, Konfigurationsdateien usw. Die Verzeichnisstruktur sollte dann wie folgt aussehen:

<root directory>
└── combustion
    └── script
    └── other files

Mit Combustion können Sie Ihren virtuellen QEMU-/KVM-Computer konfigurieren. In diesem Fall übergeben Sie den Speicherort der Datei script mithilfe des Parameters fw_cfg des Befehls qemu:

	-fw_cfg name=opt/org.opensuse.combustion/script,file=/var/combustion-script

Combustion kann zusammen mit Ignition genutzt werden. In diesem Fall legen Sie für das Konfigurationsmedium den Namen ignition fest und nehmen das Verzeichnis ignition mit der Datei config.ign wie folgt in die Verzeichnissstruktur auf:

<root directory>
└── combustion
    └── script
    └── other files
└── ignition 
    └── config.ign

In diesem Szenario wird Ignition vor Combustion ausgeführt.

9.2 Die Konfigurationsdatei script

Die Konfigurationsdatei script enthält eine Reihe von Befehlen, die in einer Transaktionsaktualisierungs-Shell auf Ihrem System ausgeführt werden. In diesem Abschnitt finden Sie Beispiele für die Ausführung verschiedener Konfigurationsaufgaben mit Combustion.

Wichtig
Wichtig: Interpreter-Deklaration

Die Datei script wird mit Bash interpretiert und muss daher die Interpreter-Deklaration in der ersten Zeile enthalten:

 #!/bin/bash

Wenn Sie sich bei Ihrem System anmelden möchten, geben Sie mindestens das root-Passwort an. Es wird allerdings empfohlen, die Authentifizierung mithilfe von SSH-Schlüsseln einzurichten. Wenn Sie ein root-Passwort benötigen, müssen Sie ein sicheres Passwort konfigurieren. Falls Sie ein zufällig erzeugtes Passwort heranziehen, muss dieses Passwort mindestens 10 Zeichen enthalten. Wenn Sie Ihr Passwort manuell erstellen, verwenden Sie mehr als 10 Zeichen und kombinieren Sie Großbuchstaben, Kleinbuchstaben und Ziffern.

9.2.1 Netzwerkkonfiguration

Soll die Netzwerkverbindung beim ersten Starten konfiguriert und verwendet werden, fügen Sie die folgende Anweisung in script ein:

 # combustion: network

Diese Anweisung übergibt das Argument rd.neednet=1 an dracut. Wenn Sie die Anweisung nicht angeben, wird das System ohne Netzwerkverbindung konfiguriert.

9.2.2 Partitionierung

SLE Micro-Raw-Images werden mit einem standardmäßigen Partitionierungsschema geliefert (siehe Abschnitt 5.1, „Standardpartitionierung“). Bei Bedarf können Sie eine andere Partitionierung verwenden. Mit den folgenden Beispiel-Codeausschnitten wird /home in eine andere Partition verschoben.

Anmerkung
Anmerkung: Änderungen außerhalb der in Snapshots enthaltenen Verzeichnisse

Das folgende Skript nimmt Änderungen vor, die sich nicht in Snapshots befinden. Wenn das Skript fehlschlägt und der Snapshot verworfen wird, bleiben einige Änderungen sichtbar und können nicht rückgängig gemacht werden (z. B. die Änderungen am Gerät /dev/vdb).

Der folgende Codeausschnitt legt eine GPT mit einer einzelnen Partition auf dem Gerät /dev/vdb an:

sfdisk /dev/vdb <<EOF
label: gpt
type=linux
EOF 

partition=/dev/vdb1

Diese Partition wird für BTRFS formatiert:

wipefs --all ${partition}
mkfs.btrfs ${partition}

Der Inhalt von /home (falls vorhanden) wird mit dem folgenden Codeausschnitt in den neuen Speicherort des Ordners /home verschoben:

mount /home
mount ${partition} /mnt 
rsync -aAXP /home/ /mnt/
umount /home /mnt

Der nachfolgende Codeausschnitt verschiebt einen alten Eintrag in /etc/fstab und erstellt einen neuen Eintrag:

awk -i inplace '$2 != "/home"' /etc/fstab
echo "$(blkid -o export ${partition} | grep ^UUID=) /home btrfs defaults 0 0" >>/etc/fstab

9.2.3 Festlegen eines Passworts für root

Bevor Sie das root-Passwort festlegen, generieren Sie einen Hash des Passworts, z. B. mit openssl passwd -6. Zum Festlegen des Passworts fügen Sie Folgendes in script ein:

 echo 'root:$5$.wn2BZHlEJ5R3B1C$TAHEchlU.h2tvfOpOki54NaHpGYKwdNhjaBuSpDotD7' | chpasswd -e

9.2.4 Hinzufügen von SSH-Schlüsseln

Der folgende Codeausschnitt erstellt ein Verzeichnis, in dem der SSH-Schlüssel für root gespeichert wird, und kopiert dann den öffentlichen SSH-Schlüssel, der sich auf dem Konfigurationsgerät befindet, in die Datei authorized_keys.

 mkdir -pm700 /root/.ssh/
cat id_rsa_new.pub >> /root/.ssh/authorized_keys
Anmerkung
Anmerkung

Falls Sie die Fernanmeldung über SSH nutzen, muss der SSH-Dienst aktiviert sein. Detaillierte Informationen finden Sie in Abschnitt 9.2.5, „Aktivieren von Diensten“.

9.2.5 Aktivieren von Diensten

Sie müssen ggf. bestimmte Dienste aktivieren, z. B. den SSH-Dienst. Zum Aktivieren des SSH-Dienstes fügen Sie die folgende Zeile in script ein:

 systemctl enable sshd.service

9.2.6 Installieren von Paketen

Wichtig
Wichtig: Ggf. sind eine Netzwerkverbindung und die Registrierung Ihres Systems erforderlich.

Einige Pakete erfordern möglicherweise ein zusätzliches Abonnement; in diesem Fall müssen Sie Ihr System zuvor registrieren. Bei der Installation von zusätzlichen Paketen wird eventuell auch eine verfügbare Netzwerkverbindung benötigt.

Im Rahmen der Konfiguration beim ersten Starten können Sie zusätzliche Pakete auf Ihrem System installieren. Zur Installation des vim-Editors fügen Sie beispielsweise Folgendes ein:

zypper --non-interactive install vim-small
Anmerkung
Anmerkung

Sie können zypper nicht mehr nutzen, sobald Sie die Konfiguration abgeschlossen haben und das konfigurierte System starten. Sollen nachträgliche Änderungen vorgenommen werden, müssen Sie mit dem Befehl transactional-update einen geänderten Snapshot erstellen. Detaillierte Informationen finden Sie in Section 2, “Administration using transactional updates”.