Bereitstellen von SLE Micro mit Raw-Disk-Images auf virtuellen Maschinen
- WAS?
SLE Micro stellt Raw-Images (auch als vordefinierte Images bezeichnet) zur Verfügung, die Sie direkt auf Ihrer virtuellen Maschine bereitstellen können.
- WARUM?
Die virtualisierte Bereitstellung spart Hardwareressourcen.
- AUFWAND
Es dauert etwa 20 Minuten, den Artikel zu lesen.
- ZIEL
SLE Micro ist erfolgreich auf einer virtuellen Maschine installiert.
- ANFORDERUNGEN
Ein VM-Host-Server mit einer
libvirt
und einer installierten und laufenden KVM-Virtualisierungsumgebung.Mindestens 32 GB Speicherplatz für die Bereitstellung des Image.
Optional ein Konfigurationsmedium, zum Beispiel eine USB-Flash-Disk.
1 Informationen über vordefinierte Images #
Vordefinierte Images sind gebrauchsfertige Abbildungen eines laufenden Betriebssystems. Sie werden nicht auf herkömmliche Weise mit einem Installationsprogramm installiert, sondern auf die Festplatte des Zielhosts kopiert. Dieses Thema enthält grundlegende Informationen über diese vordefinierten Images.
Die vorbereiteten Images müssen beim ersten Booten mit den in den Images enthaltenen Tools konfiguriert werden. Der Bootloader erkennt den ersten Bootvorgang wie in Abschnitt 1.2, „Erkennung des ersten Startvorgangs“ beschrieben. Jedes Image wird mit standardmäßig gemounteten Subvolumes geliefert, die während der ersten Boot-Konfiguration geändert werden können. Einzelheiten zu den Subvolumes finden Sie in Abschnitt 1.1, „Standardpartitionierung“.
1.1 Standardpartitionierung #
Die vordefinierten Images werden mit einem standardmäßigen Partitionierungsschema geliefert. Dies können Sie beim ersten Starten mit Ignition oder Combustion ändern.
Wenn Sie Änderungen am standardmäßigen Partitionierungsschema vornehmen möchten, muss das Root-Dateisystem Btrfs verwendet werden.
Jedes Image enthält die folgenden Subvolumes:
/home /root /opt /srv /usr/local /var
Das Verzeichnis /etc
wird als overlayFS eingehängt, wobei das übergeordnete Verzeichnis /var/lib/overlay/1/etc/
lautet.
Sie können die standardmäßig eingehängten Subvolumes mit der Option x-initrd.mount
in /etc/fstab
ermitteln. Andere Subvolumes oder Partitionen müssen entweder mit Ignition oder mit Combustion konfiguriert werden.
1.2 Erkennung des ersten Startvorgangs #
Die Bereitstellungskonfiguration wird nur beim ersten Starten ausgeführt. Zur Unterscheidung zwischen dem ersten und den nachfolgenden Booten wird die Flag-Datei /boot/writable/firstboot_happened
nach Beendigung des ersten Boots erstellt. Wenn die Datei nicht im Dateisystem vorhanden ist, wird das Attribut ignition.firstboot
an die Kernel- Kommandozeile weitergegeben und damit die Ausführung von Ignition und Combustion (in der initrd) ausgelöst. Nach Abschluss des ersten Startvorgangs wird die Flag-Datei /boot/writable/firstboot_happened
erstellt.
Die Flag-Datei /boot/writable/firstboot_happened
wird selbst dann erstellt, wenn die Konfiguration nicht erfolgreich ist, beispielsweise weil Konfigurationsdateien fehlerhaft sind oder ganz fehlen.
1.2.1 Neukonfiguration des Systems bei einem späteren Start erzwingen #
Wenn Sie das System nach dem ersten Startvorgang neu konfigurieren müssen, können Sie die Neukonfiguration beim nächsten Startvorgang erzwingen. Hier haben Sie zwei Möglichkeiten.
Sie können das Attribut
ignition.firstboot=1
an die Kernel- Kommandozeile übergeben.Sie können die Flag-Datei
/boot/writable/firstboot_happened
löschen .
2 Vorbereiten des Konfigurationsgeräts #
Standardmäßig ist die root
-SSH-Anmeldung in SLE Micro mit dem SSH-Schlüssel zulässig. Wir empfehlen, während des Bereitstellens einen Benutzer ohne Rechte zu erstellen, mit dem Sie auf das installierte System zugreifen können. Sie können beim ersten Boot ein Konto für einen Benutzer ohne Rechte entweder mit Combustion oder Ignition erstellen. Wenn Sie bei der Systembereitstellung einen Benutzer ohne Rechte anlegen, können Sie damit auch auf die Weboberfläche des Cockpits zugreifen.
Gehen Sie zum Vorbereiten des Konfigurationsgeräts wie folgt vor:
Formatieren Sie den Datenträger mit einem Dateisystem, das von SLE Micro unterstützt wird: Ext3, Ext4 usw:
>
sudo mkfs.ext4 /dev/sdYLegen Sie als Gerätekennung entweder
ignition
(wenn entweder Ignition oder verwendet wird) odercombustion
combustion fest (wenn nur Combustion verwendet wird). Verwenden Sie bei Bedarf (z. B. auf einem Windows-Host) Großbuchstaben für die Bezeichnungen. Führen Sie zur Bezeichnung des Geräts folgendes Kommando aus:>
sudo e2label /dev/sdY ignitionSie können ein beliebiges Konfigurationsspeichermedium verwenden, das von Ihrem Virtualisierungssystem oder Ihrer Hardware unterstützt wird: ISO-Image, USB-Flash-Disk usw.
Hängen Sie das Gerät ein:
>
sudo mount /dev/sdY /mntErstellen Sie die Verzeichnisstruktur gemäß Abschnitt 2.1.1.1, „
config.ign
“ oder Abschnitt 2.2, „Konfigurieren der Bereitstellung von SLE Micro mit Combustion“, je nach dem verwendeten Konfigurationstool:>
sudo mkdir /mnt/ignition/oder:
>
sudo mkdir -p /mnt/combustion/Bereiten Sie alle Elemente der Konfiguration vor, die von Ignition oder Combustion verwendet wird.
2.1.1 Wie funktioniert Ignition? #
Wenn das System zum ersten Mal gebootet wird, wird Ignition als Teil einer initramfs
geladen und sucht nach einer Konfigurationsdatei in einem bestimmten Verzeichnis (auf einem USB-Flash- Disk, oder Sie können eine URL angeben). Alle Änderungen werden vorgenommen, bevor der Kernel vom temporären Dateisystem zum echten Root-Dateisystem wechselt (bevor der Befehl switch_root
ausgeführt wird).
Ignition nutzt eine Konfigurationsdatei im JSON-Format mit dem Namen config.ign
. Sie können die Kombination entweder manuell schreiben oder mit der Anwendung Fuel Ignition Web unter https://ignite.opensuse.org generieren lassen.
Fuel Ignition deckt noch nicht das gesamte Vokabular von Ignition ab, und die resultierende JSON-Datei muss möglicherweise noch manuell angepasst werden.
2.1.1.1
config.ign
#
Die Konfigurationsdatei config.ign
muss sich im ignition
-Unterverzeichnis auf dem Konfigurationsmedium befinden, zum Beispiel auf einem USB-Stick mit der Bezeichnung ignition
. Die Verzeichnisstruktur muss wie folgt aussehen:
<root directory> └── ignition └── config.ign
Ein Disk-Image mit der Ignition-Konfiguration können Sie mit der Anwendung Fuel Ignition Web application unter https://ignite.opensuse.org erstellen.
Die Datei config.ign
enthält mehrere Datentypen: Objekte, Zeichenketten, Ganzzahlen, Boolesche Werte und Listen von Objekten. Eine vollständige Spezifikation finden Sie unter Ignition
specification v3.3.0.
Das Attribut version
ist obligatorisch und im Falle von SLE Micro muss sein Wert entweder auf 3.3.0
oder auf eine niedrigere Version festgelegt werden. Ansonsten funktioniert Ignition nicht.
Wenn Sie sich als root
bei Ihrem System anmelden möchten, müssen Sie mindestens ein Passwort für root
angeben. Es wird allerdings empfohlen, den Zugriff mithilfe von SSH-Schlüsseln einzurichten. Wenn Sie ein Passwort konfigurieren möchten, müssen Sie ein sicheres Passwort verwenden. Falls Sie ein zufällig erzeugtes Passwort heranziehen, muss dieses Passwort mindestens 10 Zeichen enthalten. Wenn Sie Ihr Passwort manuell erstellen, sollten Sie sogar mehr als 10 Zeichen verwenden und Groß- und Kleinbuchstaben sowie Zahlen kombinieren.
2.1.2 Ignition-Konfigurationsbeispiele #
2.1.2.1 Konfigurationsbeispiele #
In diesem Abschnitt finden Sie einige Beispiele für die Ignition-Konfiguration im integrierten JSON-Format.
Abschnitt 1.1, „Standardpartitionierung“ enthält eine Liste der Subvolumes, die beim Ausführen des vordefinierten Image standardmäßig eingehängt werden. Möchten Sie einen neuen Benutzer hinzufügen oder eine Datei in einem Subvolume ändern, das nicht standardmäßig eingehängt wird, müssen Sie das betreffende Subvolume zunächst deklarieren, sodass es ebenfalls eingehängt wird. Weitere Informationen zum Einhängen von Dateisystemen finden Sie in Abschnitt 2.1.2.1.1.3, „Das Attribut filesystems
“.
version
ist obligatorisch
Jede config.fcc
muss die Version angeben (1.4.0 oder niedriger), die dann in die entsprechende Ignition-Spezifikation konvertiert wird.
2.1.2.1.1 Speicherkonfiguration #
Mit dem Attribut storage
können Sie Partitionen und RAID konfigurieren, Dateisysteme definieren, Dateien erstellen usw. Zum Definieren von Partitionen verwenden Sie das Attribut disks
. Das Attribut filesystems
wird verwendet, um Partitionen zu formatieren und Einhängepunkte für bestimmte Partitionen zu definieren. Mit dem Attribut files
können Sie Dateien im Dateisystem erstellen. Die genannten Attribute werden in den nachfolgenden Abschnitten beschrieben.
2.1.2.1.1.1 Das Attribut disks
#
Das Attribut disks
ist eine Liste mit Geräten, sodass Sie Partitionen auf diesen Geräten definieren können. Das Attribut disks
muss mindestens ein Gerät (device
) enthalten, andere Attribute sind optional. Das folgende Beispiel verwendet ein einzelnes virtuelles Gerät und unterteilt den Datenträger in vier Partitionen:
{ "ignition": { "version": "3.0.0" }, "storage": { "disks": [ { "device": "/dev/vda", "partitions": [ { "label": "root", "number": 1, "typeGuid": "4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709" }, { "label": "boot", "number": 2, "typeGuid": "BC13C2FF-59E6-4262-A352-B275FD6F7172" }, { "label": "swap", "number": 3, "typeGuid": "0657FD6D-A4AB-43C4-84E5-0933C84B4F4F" }, { "label": "home", "number": 4, "typeGuid": "933AC7E1-2EB4-4F13-B844-0E14E2AEF915" } ], "wipeTable": true } ] } }
2.1.2.1.1.2 Das Attribut raid
#
raid
ist eine Liste mit RAID-Arrays. Die folgenden Attribute für raid
sind obligatorisch:
- level
Ebene des jeweiligen RAID-Arrays (linear, raid0, raid1, raid2, raid3, raid4, raid5, raid6)
- devices
Liste mit Geräten im Array (anhand ihrer absoluten Pfade referenziert)
- name
Name für das md-Gerät
Beispiel:
{ "ignition": { "version": "3.0.0" }, "storage": { "raid": [ { "devices": [ "/dev/sda", "/dev/sdb" ], "level": "raid1", "name": "system" } ] } }
2.1.2.1.1.3 Das Attribut filesystems
#
filesystems
muss die folgenden Attribute enthalten:
- Gerät
Absoluter Pfad zum Gerät, bei physischen Festplatten in der Regel
/dev/sda
- Format
Dateisystemformat (btrfs, ext4, xfs, vfat oder swap)
AnmerkungFür SLE Micro muss das
root
-Dateisystem mit btrfs formatiert werden.
Das folgende Beispiel zeigt die Verwendung des Attributs filesystems
. Das Verzeichnis /opt
wird in der Partition /dev/sda1
eingehängt, die mit btrfs formatiert ist. Das Gerät wird nicht gelöscht.
Beispiel:
{ "ignition": { "version": "3.0.0" }, "storage": { "filesystems": [ { "device": "/dev/sda1", "format": "btrfs", "path": "/opt", "wipeFilesystem": false } ] } }
In der Regel befindet sich das Basisverzeichnis eines normalen Benutzers im Verzeichnis /home/USER_NAME
. Da /home
nicht standardmäßig in initrd eingehängt wird, muss das Einhängen explizit definiert werden, damit der Benutzer erfolgreich erstellt wird:
{ "ignition": { "version": "3.1.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH" ] } ] }, "storage": { "filesystems": [ { "device": "/dev/sda3", "format": "btrfs", "mountOptions": [ "subvol=/@/home" ], "path": "/home", "wipeFilesystem": false } ] } }
2.1.2.1.1.4 Das Attribut files
#
Mit dem Attribut files
können Sie beliebige Dateien auf Ihrem Computer erstellen. Falls Sie Dateien außerhalb des standardmäßigen Partitionierungsschemas erstellen möchten, müssen Sie die Verzeichnisse mit dem Attribut filesystems
definieren.
Im folgenden Beispiel wird ein Hostname mit dem Attribut files
erstellt. Die Datei /etc/hostname
wird mit dem Hostnamen sl-micro1 erstellt:
Denken Sie daran, dass JSON Dateimodi in Dezimalzahlen akzeptiert, zum Beispiel 420
.
JSON:
{ "ignition": { "version": "3.0.0" }, "storage": { "files": [ { "overwrite": true, "path": "/etc/hostname", "contents": { "source": "data:,sl-micro1" }, "mode": 420 } ] } }
2.1.2.1.1.5 Das Attribut directories
#
Das Attribut directories
ist eine Liste mit Verzeichnissen, die im Dateisystem erstellt werden. Das Attribut directories
muss mindestens ein Attribut path
enthalten.
Beispiel:
{ "ignition": { "version": "3.0.0" }, "storage": { "directories": [ { "path": "/home/tux", "user": { "name": "tux" } } ] } }
2.1.2.1.2 Benutzerverwaltung #
Mit dem Attribut passwd
können Sie Benutzer hinzufügen. Da einige Dienste, wie z. B. Cockpit, eine Anmeldung mit einem Nicht-Root-Benutzer erfordern, definieren Sie hier mindestens einen Benutzer ohne Rechte. Alternativ können Sie einen solchen Benutzer auch von einem laufenden System aus erstellen, wie in Abschnitt 5.3, „Hinzufügen von Benutzern“ beschrieben.
Erstellen Sie zum Anmelden in Ihrem System root
und einen regulären Benutzer und legen Sie deren Passwörter fest. Sie müssen einen Hash für die Passwörter generieren, z. B. mit dem Kommando openssl
:
openssl passwd -6
Der Befehl erstellt einen Hash für das ausgewählte Passwort. Tragen Sie diesen Hash als Wert für das Attribut password_hash
ein.
Beispiel:
{ "ignition": { "version": "3.0.0" }, "passwd": { "users": [ { "name": "root", "passwordHash": "PASSWORD_HASH", "sshAuthorizedKeys": [ "ssh-rsa SSH_KEY_HASH USER@HOST" ] } ] } }
Das Attribut users
muss mindestens ein Attribut name
enthalten. ssh_authorized_keys
ist eine Liste von SSH-Schlüsseln für den Benutzer.
2.1.2.1.3 Aktivieren von systemd
-Diensten #
Sollen systemd
-Dienste aktiviert werden, geben Sie diese Dienste im Attribut systemd
an.
Beispiel:
{ "ignition": { "version": "3.0.0" }, "systemd": { "units": [ { "enabled": true, "name": "sshd.service" } ] } }
2.2 Konfigurieren der Bereitstellung von SLE Micro mit Combustion #
Mit dem dracut-Modul Combustion können Sie Ihr System beim ersten Starten konfigurieren. Mit Combustion können Sie beispielsweise die Standardpartitionen ändern, die Passwörter der Benutzer festlegen, Dateien erstellen oder Pakete installieren.
2.2.1 Wie funktioniert Combustion? #
Combustion wird aufgerufen, sobald das Argument ignition.firstboot
an die Kernel-Kommandozeile übergeben wird. Combustion liest eine bereitgestellte Datei mit dem Namen script
, führt die darin enthaltenen Kommandos aus und nimmt so Änderungen am Dateisystem vor. Wenn script
das Netzwerk-Flag enthält, versucht Combustion, das Netzwerk zu konfigurieren. Nach dem Einhängen von /sysroot
versucht Combustion, alle Einhängepunkte in /etc/fstab
zu aktivieren und ruft dann transactional-update
auf, um andere Änderungen vorzunehmen, wie das root
-Passwort festzulegen oder Pakete zu installieren.
Die Konfigurationsdatei script
muss sich in dem combustion
-Unterverzeichnis auf dem Konfigurationsmedium mit der Bezeichnung combustion
befinden. Die Verzeichnisstruktur muss wie folgt aussehen:
<root directory> └── combustion └── script └── other files
Combustion kann zusammen mit Ignition genutzt werden. Wenn Sie dies tun möchten, bezeichnen Sie Ihr Konfigurationsmedium ignition
und fügen Sie das Verzeichnis ignition
mit dem config.ign
in Ihre Verzeichnisstruktur ein, wie unten gezeigt:
<root directory> └── combustion └── script └── other files └── ignition └── config.ign
In diesem Szenario wird Ignition vor Combustion ausgeführt.
2.2.2 Combustion-Konfigurationsbeispiele #
2.2.2.1 Die Konfigurationsdatei script
#
Die Konfigurationsdatei script
besteht aus einer Reihe von Kommandos, die von Combustion analysiert und in einer transactional-update
-Shell ausgeführt werden. In diesem Artikel finden Sie Beispiele für Konfigurationsaufgaben, die mit Combustion durchgeführt werden.
Da die Datei script
von der Shell interpretiert wird, beginnen Sie die Datei immer mit der Interpreter-Deklaration in der ersten Zeile. Zum Beispiel im Fall von Bash:
#!/bin/bash
Zum Anmelden bei Ihrem System 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. Für ein zufällig generiertes Passwort sollten Sie mindestens 10 Zeichen verwenden. Wenn Sie Ihr Passwort manuell erstellen, sollten Sie sogar mehr als 10 Zeichen verwenden und Groß- und Kleinbuchstaben sowie Zahlen kombinieren.
2.2.2.1.1 Netzwerkkonfiguration #
Um die Netzwerkverbindung während des ersten Bootens zu konfigurieren und zu verwenden, fügen Sie die folgende Anweisung zu script
hinzu:
# combustion: network
Diese Anweisung übergibt das Argument rd.neednet=1
an dracut. Die Netzwerkkonfiguration ist standardmäßig auf DHCP eingestellt. Wenn eine andere Netzwerkkonfiguration erforderlich ist, gehen Sie vor wie in Abschnitt 2.2.2.1.2, „Durchführen von Änderungen in initramfs“ beschrieben.
Wenn Sie die Anweisung nicht angeben, bleibt das System ohne Netzwerkverbindung konfiguriert.
2.2.2.1.2 Durchführen von Änderungen in initramfs #
Möglicherweise müssen Sie Änderungen an der initramfs-Umgebung vornehmen, zum Beispiel um eine benutzerdefinierte Netzwerkkonfiguration für NetworkManager in /etc/NetworkManager/system-connections/
zu schreiben. Verwenden Sie dazu die Anweisung prepare
.
Zum Beispiel, um eine Verbindung mit einer statischen IP-Adresse zu erstellen und DNS zu konfigurieren:
#!/bin/bash # combustion: network prepare set -euxo pipefail nm_config() { umask 077 # Required for NM config mkdir -p /etc/NetworkManager/system-connections/ cat >/etc/NetworkManager/system-connections/static.nmconnection <<-EOF [connection] id=static type=ethernet autoconnect=true [ipv4] method=manual dns=192.168.100.1 address1=192.168.100.42/24,192.168.100.1 EOF } if [ "${1-}" = "--prepare" ]; then nm_config # Configure NM in the initrd exit 0 fi # Redirect output to the console exec > >(exec tee -a /dev/tty0) 2>&1 nm_config # Configure NM in the system curl example.com # Leave a marker echo "Configured with combustion" > /etc/issue.d/combustion
2.2.2.1.3 Partitionierung #
SLE Micro-Raw-Images werden mit einem standardmäßigen Partitionierungsschema geliefert (siehe Abschnitt 1.1, „Standardpartitionierung“). Bei Bedarf können Sie eine andere Partitionierung verwenden. Mit den folgenden Beispiel-Codeausschnitten wird /home
in eine andere Partition verschoben.
Das folgende Skript nimmt Änderungen vor, die sich nicht in Snapshots befinden. Wenn das Skript fehlschlägt und der Snapshot verworfen wird, bleiben bestimmte Änderungen sichtbar und können nicht rückgängig gemacht werden, zum Beispiel die Änderungen am /dev/vdb
-Gerät.
Der folgende Codeausschnitt legt ein GPT-Partitionierungsschema 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
Das folgende Snippet entfernt 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
2.2.2.1.4 Erstellen neuer Benutzer #
Da einige Dienste, wie z. B. Cockpit, eine Anmeldung mit einem Nicht-Root-Benutzer erfordern, definieren Sie hier mindestens einen Benutzer ohne Rechte. Alternativ können Sie einen solchen Benutzer auch von einem laufenden System aus erstellen, wie in Abschnitt 5.3, „Hinzufügen von Benutzern“ beschrieben.
Zum Hinzufügen eines neuen Benutzerkontos erstellen Sie zunächst eine Hash-Zeichenkette, die das Passwort des Benutzers darstellt. Verwenden Sie dazu das Kommando openssl passwd -6
.
Wenn Sie den Passwort-Hash erhalten haben, fügen Sie die folgenden Zeilen der Datei script
hinzu:
mount /home useradd -m EXAMPLE_USER echo 'EXAMPLE_USER:PASSWORD_HASH' | chpasswd -e
2.2.2.1.5 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 die folgende Zeile in script
ein:
echo 'root:PASSWORD_HASH' | chpasswd -e
2.2.2.1.6 Hinzufügen von SSH-Schlüsseln #
Das folgende Snippet erstellt ein Verzeichnis zum Speichern des SSH-Schlüssels von root
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
Falls Sie die Fernanmeldung über SSH nutzen, muss der SSH-Dienst aktiviert sein. Detaillierte Informationen finden Sie in Abschnitt 2.2.2.1.7, „Aktivieren von Diensten“.
2.2.2.1.7 Aktivieren von Diensten #
Zum Aktivieren von Systemdiensten, z. B. des SSH-Dienstes, fügen Sie die folgende Zeile in script
ein:
systemctl enable sshd.service
2.2.2.1.8 Installieren von Paketen #
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
Denken Sie daran, dass Sie zypper
nicht mehr verwenden können, wenn die Konfiguration abgeschlossen ist und Sie in das konfigurierte System booten. Sollen nachträgliche Änderungen vorgenommen werden, müssen Sie mit dem Befehl transactional-update
einen geänderten Snapshot erstellen.
3 Vorbereiten der virtuellen Maschine #
In diesem Abschnitt wird beschrieben, wie Sie eine neue virtuelle Maschine vorbereiten und welche Schritte Sie unternehmen müssen, um SLE Micro auf dieser Maschine bereitzustellen.
Laden Sie das SLE Micro-Disk-Image auf den VM-Host-Server herunter, auf dem Sie das virtualisierte SLE Micro ausführen möchten.
Starten Sie den Virtual Machine Manager und wählen Sie
› aus.Wählen Sie
aus. Bestätigen Sie mit .Geben Sie den Pfad zum SLE Micro-Datenträger-Image an, das Sie zuvor heruntergeladen haben, sowie den Typ des Linux-Betriebssystems, das Sie bereitstellen, zum Beispiel
Generic Linux 2020
. Bestätigen Sie mit .Geben Sie die Größe des Arbeitsspeichers und die Anzahl der Prozessoren an, die Sie der virtuellen Maschine SLE Micro zuweisen möchten, und bestätigen Sie mit .
Geben Sie den Namen für die virtuelle Maschine und das zu verwendende Netzwerk an.
Wenn Sie ein verschlüsseltes SLE Micro-Image bereitstellen, führen Sie diese zusätzlichen Schritte aus:
Aktivieren Sie
und bestätigen Sie mit .Klicken Sie im linken Menü auf
und ändern Sie die Bootmethode von BIOS auf UEFI für sicheres Booten. Bestätigen Sie mit .Abbildung 1: Festlegen der UEFI-Firmware für das verschlüsselte SLE Micro-Image #Fügen Sie ein TPM-Gerät (Trusted Platform Module) hinzu. Klicken Sie auf
, wählen Sie aus dem linken Menü und dann den Typ aus.Abbildung 2: Emuliertes TPM-Gerät hinzufügen #Bestätigen Sie mit SLE Micro, indem Sie im oberen Menü auf klicken.
und starten Sie die Bereitstellung von
4 Konfigurieren mit JeOS Firstboot #
Wenn Sie SLE Micro zum ersten Mal booten, ohne ein Konfigurationsgerät bereitzustellen, können Sie mit JeOS Firstboot eine minimale Konfiguration Ihres Systems vornehmen. Wenn Sie mehr Kontrolle über den Bereitstellungsprozess benötigen, verwenden Sie ein Konfigurationsgerät mit Ignition- oder Combustion-Konfiguration. Weitere Informationen finden Sie in Abschnitt 2.1, „Konfigurieren der Bereitstellung von SLE Micro mit Ignition“ und Abschnitt 2.2, „Konfigurieren der Bereitstellung von SLE Micro mit Combustion“.
Gehen Sie wie folgt vor, um das System mit JeOS Firstboot zu konfigurieren:
Eingabetaste.
zeigt einen Begrüßungsbildschirm an. Bestätigen Sie mitWählen Sie auf den nächsten Bildschirmen die Tastatur aus, bestätigen Sie die Lizenzvereinbarung und wählen Sie die Zeitzone.
Geben Sie im Dialogfenster
ein Passwort fürroot
ein und bestätigen Sie es.Abbildung 3: Root-Passwort eingeben #Bei verschlüsselten Bereitstellungen geht JeOS Firstboot wie folgt vor:
Es wird nach einem Passwortsatz gefragt, der den Standard-Passwortsatz ersetzt.
Erzeugt einen neuen LUKS-Schlüssel und verschlüsselt die Partition erneut.
Fügt dem LUKS-Header einen zweiten Schlüsselsteckplatz hinzu und versiegelt ihn mit dem TPM-Gerät.
Wenn Sie ein verschlüsseltes Image bereitstellen, führen Sie folgende Schritte aus:
Wählen Sie die gewünschte Schutzmethode aus und bestätigen Sie mit
.Geben Sie ein Passwort zur Wiederherstellung der LUKS-Verschlüsselung ein und tippen Sie es erneut ein. Die erneute Verschlüsselung des Root-Dateisystems beginnt.
Abbildung 4: Methode für die Verschlüsselung auswählen #Nach erfolgreicher Bereitstellung registrieren Sie Ihr System und erstellen einen Benutzer ohne Rechte, wie in Abschnitt 5.4, „Registrieren von SLE Micro über CLI“ beschrieben.
5 Schritte nach der Bereitstellung #
5.1 Erweitern von verschlüsselten Datenträger-Images #
Verschlüsselte Raw-Disk-Images von SLE Micro werden nicht automatisch auf die volle Kapazität der Festplatte erweitert. Dieses Verfahren beschreibt die Schritte zur Erweiterung auf die gewünschte Größe.
Erweitern Sie das Datenträger-Image mit dem Kommando
qemu-img
auf die gewünschte Größe.Ändern Sie die Größe der Partition, auf der sich das LUKS-Gerät befindet (z. B. Partition Nummer 3) mit dem Kommando
parted
in die gewünschte Größe.Führen Sie das Kommando
cryptsetup resize luks
aus. Geben Sie auf Aufforderung den Passwortsatz ein, um die Größe des verschlüsselten Geräts zu ändern.Öffnen Sie mit dem Kommando
transactional-update shell
eine schreibgeschützte Shell im aktuellen Datenträger-Snapshot. Ändern Sie dann das Btrfs-Dateisystem in die gewünschte Größe, beispielsweise:#
btrfs fi resize max /Verlassen Sie die Shell mit
exit
und starten Sie das System neu mitreboot
.
5.2 Erneutes Verschlüsseln des verschlüsselten Systems #
Das System ist nicht gesichert. Speichern Sie also keine sensiblen Daten darin, solange die Neuverschlüsselung des Datenträgers nicht abgeschlossen ist.
JeOS Firstboot fordert Sie während der Bereitstellungsphase zur Eingabe eines neuen Passwortsatzes auf. Nachdem Sie ihn eingegeben haben, wird das System automatisch wieder verschlüsselt, so dass keine weiteren Maßnahmen erforderlich sind.
Die verschlüsselten SLE Micro-Images werden mit einem standardmäßigen LUKS-Passwortsatz ausgeliefert. Zur Absicherung Ihres Systems sollten Sie ihn nach dem Bereitstellen des Systems ändern. Gehen Sie dazu wie unten beschrieben vor. Führen Sie die Schritte in der gleichen Shell-Sitzung aus.
Importieren Sie die benötigten Funktionen in Ihre Shell:
#
source /usr/share/fde/luksIdentifizieren Sie das zugrunde liegende LUKS-Gerät und definieren Sie weitere verwendete Variablen:
#
luks_name=$(expr "`df --output=source / | grep /dev/`" : ".*/\(.*\)")und:
#
luks_dev=$(luks_get_underlying_device "$luks_name")Erstellen Sie eine Schlüsseldatei, in der der Standard-Passwortsatz 1234 gespeichert ist, sowie eine weitere Schlüsseldatei mit dem neuen Passwortsatz.
Ändern Sie das Passwort für die Wiederherstellung:
#
cryptsetup luksChangeKey --key-file PATH_TO_DEFAULT --pbkdf pbkdf2 "${luks_dev}" PATH_TO_NEWPATH_TO_DEFAULT ist ein Pfad zur Schlüsseldatei mit dem Standard-Passwortsatz. PATH_TO_NEW ist ein Pfad zur Schlüsseldatei mit dem neuen Passwortsatz.
Verschlüsseln Sie das LUKS-Gerät erneut:
#
cryptsetup reencrypt --key-file PATH_TO_NEW ${luks_dev}Erstellen Sie einen neuen Zufallsschlüssel und versiegeln Sie ihn mit dem TPM:
>
sudo
fdectl regenerate-key --passfile PATH_TO_NEWEntfernen Sie beide Schlüsseldateien, die Sie in Schritt 3 erstellt haben.
Aktualisieren Sie die Datei
grub.cfg
mit folgendem Kommando:>
sudo
transactional-update grub.cfgBooten Sie das System neu.
5.3 Hinzufügen von Benutzern #
Da sich bei SLE Micro ein Benutzer ohne Rechte über SSH anmelden oder auf Cockpit zugreifen muss, müssen Sie ein solches Konto erstellen.
Dieser Schritt ist optional, wenn Sie einen Benutzer ohne Rechte in Ignition oder Combustion definiert haben. Wenn Sie Ihr System mit JeOS Firstboot bereitgestellt haben, haben Sie nur das root
-Passwort festgelegt und müssen das Konto ohne Rechte manuell erstellen, wie unten beschrieben:
Führen Sie das Kommando
useradd
wie folgt aus:#
useradd -m USER_NAME
Legen Sie ein Passwort für dieses Konto fest:
#
passwd USER_NAMEFügen Sie bei Bedarf den Benutzer zur
wheel
-Gruppe hinzu:#
usermod -aG wheel USER_NAME
5.4 Registrieren von SLE Micro über CLI #
Nach erfolgreicher Bereitstellung müssen Sie das System registrieren, um technischen Support und Aktualisierungen zu erhalten. Mit dem Befehl transactional-update
register
können Sie das System über die Befehlszeile registrieren.
Gehen Sie wie folgt vor, um SLE Micro beim SUSE Customer Center zu registrieren:
Führen Sie
transactional-update register
wie folgt aus:#
transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESSSoll die Registrierung über einen lokalen Registrierungsserver erfolgen, geben Sie zusätzlich die URL des Servers an:
#
transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESS \ --url "https://suse_register.example.com/"Ersetzen Sie REGISTRATION_CODE durch den Registrierungscode, den Sie mit der Version von SLE Micro erhalten haben. Ersetzen Sie EMAIL_ADDRESS durch die E-Mail-Adresse für das SUSE-Konto, mit dem Sie oder Ihr Unternehmen die Abonnements verwalten.
Booten Sie Ihr System neu, um zum neuesten Snapshot zu wechseln.
SLE Micro ist nun registriert.
Informationen, die über den Umfang dieses Abschnitts hinausgehen, finden Sie in der Inline-Dokumentation zu SUSEConnect --help
.
6 Rechtliche Hinweise #
Copyright © 2006–2024 SUSE LLC und Mitwirkende. Alle Rechte vorbehalten.
Es wird die Genehmigung erteilt, dieses Dokument unter den Bedingungen der GNU Free Documentation License, Version 1.2 oder (optional) Version 1.3 zu vervielfältigen, zu verbreiten und/oder zu verändern; die unveränderlichen Abschnitte hierbei sind der Urheberrechtshinweis und die Lizenzbedingungen. Eine Kopie dieser Lizenz (Version 1.2) finden Sie im Abschnitt „GNU Free Documentation License“.
Die SUSE Marken finden Sie im https://www.suse.com/company/legal/. Alle anderen Marken von Drittanbietern sind Besitz ihrer jeweiligen Eigentümer. Markensymbole (®, ™ usw.) kennzeichnen Marken von SUSE und ihren Tochtergesellschaften. Sternchen (*) kennzeichnen Marken von Drittanbietern.
Alle Informationen in diesem Buch wurden mit größter Sorgfalt zusammengestellt. Auch hierdurch kann jedoch keine hundertprozentige Richtigkeit gewährleistet werden. Weder SUSE LLC noch ihre Tochtergesellschaften noch die Autoren noch die Übersetzer können für mögliche Fehler und deren Folgen haftbar gemacht werden.