Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
documentation.suse.com / Bereitstellen von SUSE Linux Micro mithilfe des Netzwerk-PXE-Boots

Bereitstellen von SUSE Linux Micro mithilfe des Netzwerk-PXE-Boots

Veröffentlicht: 20.03.2025
WAS?

SUSE Linux Micro stellt Images zur Verfügung, die über den PXE-Boot des Zielgeräts remote bereitgestellt werden können.

WARUM?

Sie möchten SUSE Linux Micro remote bereitstellen.

AUFWAND

Es dauert etwa 15 Minuten, um den Artikel zu lesen.

ZIEL

Eine ordnungsgemäß konfigurierte Instanz von SUSE Linux Micro.

ANFORDERUNGEN
  • Ein ordnungsgemäß konfigurierter DHCP-Server

  • Ein installierter TFTP-Server

1 Einführung in die PXE-Installation von SUSE Linux Micro

SUSE Linux Micro kann über PXE (Preboot Execution Environment) installiert werden. Die Client-Hardware muss das Booten über PXE unterstützen. Das Netzwerk muss einen DHCP-Server und einen TFTP-Server umfassen, die den Clients die erforderlichen Daten bereitstellen.

Das Implementierungsverfahren lässt sich in den folgenden Schritten zusammenfassen:

  1. (Optional) Um eine komplexere Firstboot-Konfiguration oder -Installation ohne Benutzerinteraktion durchzuführen, bereiten Sie die Firstboot-Konfiguration vor, die von Combustion oder Ignition verwendet wird. Sie können beispielsweise Benutzer des Systems definieren, Pakete installieren, den Hostnamen konfigurieren, das System registrieren und viele andere Aufgaben ausführen. Detaillierte Informationen finden Sie in Abschnitt 2.2, „Konfigurieren der Bereitstellung von SUSE Linux Micro mit Combustion“ oder Abschnitt 2.3, „Konfigurieren der Bereitstellung von SUSE Linux Micro mit Ignition“.

  2. Stellen Sie sicher, dass der DHCP-Server ordnungsgemäß konfiguriert ist.

  3. Bereiten Sie den TFTP-Server vor, indem Sie das Installations-Image hinzufügen, die Boot-Einstellungen konfigurieren und die Combustion/Ignition-Konfiguration auf dem TFTP-Server platzieren. Detaillierte Informationen finden Sie in Abschnitt 3, „Vorbereiten des TFTP-Servers“.

  4. Wählen Sie auf dem Zielrechner „PXE-Boot“ aus und starten Sie den Rechner. Detaillierte Informationen finden Sie in Abschnitt 4, „Remote-Bereitstellen des Image“.

2 Erstellen der Firstboot-Konfiguration

In den folgenden Abschnitten finden Sie Informationen zu zwei Tools, mit denen Sie SUSE Linux Micro beim ersten Boot konfigurieren können. Sie können entweder Combustion verwenden und ein BASH-Konfigurationsskript schreiben, oder Sie können Ignition und JSON verwenden. Wenn Sie keine komplexe Konfiguration oder unbeaufsichtigte Konfiguration benötigen, können Sie diesen Schritt überspringen, da die Grundkonfiguration mit JeOS Firstboot durchgeführt werden kann, wie in Abschnitt 4.1, „Konfigurieren von SUSE Linux Micro mit JeOS Firstboot“ beschrieben.

2.1 Erkennung des ersten Startvorgangs

Die Bereitstellungskonfiguration wird nur beim ersten Starten ausgeführt. Zur Unterscheidung zwischen dem ersten Starten und nachfolgenden Startvorgängen wird die Datei /etc/machine-id nach dem ersten Booten erstellt. Wenn die Datei nicht im Dateisystem vorhanden ist, geht das System davon aus, dass es sich um einen ersten Bootvorgang handelt, und stößt den Konfigurationsprozess an. Nach Abschluss des ersten Boots wird die Datei /etc/machine-id erstellt.

Anmerkung
Anmerkung: Die Datei /etc/machine-id wird immer erstellt.

Die Datei /etc/machine-id wird selbst dann erstellt, wenn die Konfiguration nicht erfolgreich ist, beispielsweise weil Konfigurationsdateien fehlerhaft sind oder ganz fehlen.

2.1.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 oder combustion.firstboot an die Kernel-Kommandozeile übergeben.

  • Sie können die Datei /etc/machine-id löschen und das System neu starten.

2.2 Konfigurieren der Bereitstellung von SUSE Linux 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 (script), führt die Kommandos darin aus und nimmt damit Änderungen am Dateisystem vor. Wenn script das Netzwerk-Flag enthält, versucht Combustion, das Netzwerk zu konfigurieren. Sobald /sysroot eingehängt wurde, versucht Combustion, alle Einhängepunkte in /etc/fstab zu aktivieren, und ruft dann transactional-update auf, um weitere Änderungen anzuwenden (z. B. das root-Passwort festlegen oder Pakete installieren).

Das Konfigurationsskript muss sich auf dem TFTP-Server befinden, und während des Bootvorgangs muss seine URL mit dem Parameter combustion.url an den Kernel weitergegeben werden. Detaillierte Informationen finden Sie in Abschnitt 3, „Vorbereiten des TFTP-Servers“.

Tipp
Tipp: Gemeinsame Verwendung von Combustion und Ignition

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 enthält eine 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.

Tipp
Tipp: Verwenden Sie Fuel Ignition, um das Combustion-Skript zu generieren

Um das Combustion-Skript zu erstellen, können Sie die Webanwendung Fuel Ignition verwenden. Dort können Sie geeignete Parameter auswählen, und die Anwendung generiert ein Combustion-Skript, das Sie herunterladen können.

Wichtig
Wichtig: Interpreter-Deklaration

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 Standardpartitionierung

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.

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.

2.2.2.1.2 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.3, „Durchführen von Änderungen in initramfs“ beschrieben.

Wenn Sie die Anweisung nicht angeben, bleibt das System ohne Netzwerkverbindung konfiguriert.

2.2.2.1.3 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

# Close outputs and wait for tee to finish
exec 1>&- 2>&-; wait;

# Leave a marker
echo "Configured with combustion" > /etc/issue.d/combustion
2.2.2.1.4 Warten auf den Abschluss der Aufgabe

Einige Prozesse können im Hintergrund ausgeführt werden, z. B. der Prozess tee, der die Ausgabe an das Terminal umleitet. Um sicherzustellen, dass alle ausgeführten Prozesse abgeschlossen sind, bevor die Ausführung von scriptfertiggestellt ist, fügen Sie die folgende Zeile hinzu:

exec 1>&- 2>&-; wait;
2.2.2.1.5 Partitionierung

SUSE Linux Micro-Raw-Images werden mit einem standardmäßigen Partitionierungsschema geliefert. 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 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
sleep 1
label: gpt
type=linux
EOF

partition=/dev/vdb1

Da es länger dauern kann, bis das Kommando sfdiskausgeführt wird, verschieben Sie label mit dem Kommando sleep nach sfdisk.

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.6 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.2, „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.7 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.8 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
Anmerkung
Anmerkung

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

2.2.2.1.9 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.10 Installieren von Paketen
Wichtig
Wichtig: Eine Netzwerkverbindung und die Registrierung Ihres Systems können erforderlich sein

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 Kommando transactional-update einen geänderten Snapshot erstellen.

2.3 Konfigurieren der Bereitstellung von SUSE Linux Micro mit Ignition

Mit dem Bereitstellungstool Ignition können Sie ein System beim ersten Starten gemäß Ihrer Spezifikation konfigurieren.

2.3.1 Wie funktioniert Ignition?

Wenn das System erstmalig gestartet wird, wird Ignition als Teil von initramfs geladen und sucht eine Konfigurationsdatei in einem bestimmten Verzeichnis (auf einem USB-Speicherstick; alternativ können Sie eine URL angeben). Alle Änderungen werden vorgenommen, bevor der Kernel vom temporären Dateisystem zum echten Root-Dateisystem wechselt (bevor das Kommando 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.

Wichtig
Wichtig

Fuel Ignition deckt noch nicht das gesamte Vokabular von Ignition ab, und die resultierende JSON-Datei muss möglicherweise noch manuell angepasst werden.

2.3.1.1 config.ign

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 SUSE Linux Micro muss sein Wert entweder auf 3.4.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.3.2 Ignition-Konfigurationsbeispiele

In diesem Abschnitt finden Sie einige Beispiele für die Ignition-Konfiguration im integrierten JSON-Format.

Anmerkung
Anmerkung: Das Attribut version ist obligatorisch

Jede config.ign muss die Version angeben (3.4.0 oder niedriger), die dann in die entsprechende Ignition-Spezifikation konvertiert wird.

2.3.2.1 Standardpartitionierung

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.

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.

2.3.2.2 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 zum Formatieren von Partitionen verwendet. Mit dem Attribut files können Sie Dateien im Dateisystem erstellen. Die genannten Attribute werden in den nachfolgenden Abschnitten beschrieben.

2.3.2.2.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.3.2.2.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.3.2.2.3 Das Attribut filesystems
Anmerkung
Anmerkung: Ignition führt keine Modifikationen an den Einhängeeinheiten durch

Das Attribut filesystems ändert keine Einhängeeinheiten. Wenn Sie eine neue Partition hinzufügen oder eine vorhandene Partition entfernen, müssen Sie die Einhängeeinheiten manuell anpassen.

filesystems muss die folgenden Attribute enthalten:

device

Absoluter Pfad zum Gerät, bei physischen Festplatten in der Regel /dev/sda

format

Dateisystemformat (btrfs, ext4, xfs, vfat oder swap)

Anmerkung
Anmerkung

Für SUSE Linux 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 gemountet, 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.3.2.2.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:

Wichtig
Wichtig

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.3.2.2.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.3.2.3 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.2, „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

Das Kommando 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.3.2.4 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"
      }
    ]
  }
}

3 Vorbereiten des TFTP-Servers

Um SUSE Linux Micro mit dem PXE-Client bereitzustellen, müssen Sie die folgenden Schritte ausführen:

  1. Überprüfen Sie die tftpd-Konfiguration in /etc/sysconfig/tftp, und fügen Sie nach Bedarf Optionen hinzu oder ändern Sie diese. Weitere Informationen finden Sie im man 8 tftpd. Beim TFTP-Daemon muss die Konfiguration nicht geändert werden. Das Standard-Stammverzeichnis für die Dateien lautet /srv/tftpboot.

  2. tftpd muss beim Booten gestartet werden; starten Sie es zum Einlesen der neuen Konfiguration erneut.

              > 
              sudo
              systemctl enable tftp.socket
              > 
              sudo
              systemctl restart tftp.socket

    Stellen Sie sicher, dass tftp.socket während des gesamten Bereitstellungsprozesses, der mehrere Minuten dauern kann, aktiv bleibt.

  3. Bereiten Sie die Verzeichnisstruktur vor:

    > sudo mkdir /srv/tftpboot/sl-micro
  4. Navigieren Sie zum Verzeichnis:

              > 
              cd /srv/tftpboot/sl-micro
  5. Laden Sie SL-Micro.ARCHITECTURE-6.1-IMAGE_TYPE-GM.install.tar auf den TFTP-Server herunter.

  6. Entpacken Sie die TAR-Datei:

              > 
              sudo
              tar xvf IMAGE_TAR -C .

    Stellen Sie sicher, dass alle erforderlichen Dateien in /srv/tftpboot/sl-micro vorhanden sind:

    > ls
    
    pxeboot.SL-Micro.ARCH-VERSION.kernel
    pxeboot.SL-Micro.ARCH-VERSION.initrd
    SL-Micro.ARCH-VERSION.append 
    SL-Micro.ARCH-VERSION.config.bootoptions
    SL-Micro.ARCH-VERSION.initrd
    SL-Micro.ARCH-VERSION.kernel
    SL-Micro.ARCH-VERSION.md5
    SL-Micro.ARCH-VERSION.xz
  7. Erstellen Sie symbolische Verknüpfungen wie folgt:

              > 
              sudo
              ln -s pxeboot.*.kernel linux
              > 
              sudo
              ln -s pxeboot.*.initrd initrd
  8. (Optional) Erstellen Sie Verzeichnisse für die erste Boot-Konfiguration: für die Combustion- und/oder Ignition-Konfiguration:

    1. für die Combustion-Konfiguration:

                    # 
                    mkdir combustion
    2. für die Ignition-Konfiguration:

                    # 
                    mkdir ignition
  9. Platzieren Sie die Combustion- und/oder Ignition-Konfiguration in den entsprechenden Verzeichnissen.

  10. Passen Sie die folgenden Parameter in der Datei SL-Micro.ARCH-6.1.append an oder fügen Sie sie hinzu:

    • rd.kiwi.install.image: Geben Sie den Pfad zum Installation-Image SL-Micro.ARCH6.1.xz an. Der Pfad muss das Protokoll, die IP-Adresse und den relativen Pfad zum Installations-Image enthalten:

      tftp://TFTP_SERVER/sl-micro/IMAGE_NAME

      Wenn das TFTP-Stammverzeichnis definiert ist, muss es unbedingt im Pfad weggelassen werden. Das Standardverzeichnis /srv/tftboot kann in /etc/sysconfig/tftp konfiguriert werden, oder Sie können das Verzeichnis in einem Service-Unit-Dateiattribut angeben, das die Binärdatei definiert, die mit der Option ‑s ausgeführt werden soll.

    • rd.kiwi.oem.installdevice: Ermöglicht die Durchführung einer unbeaufsichtigten Installation.

    • rd.kiwi.install.pass.bootparam: Nachdem das Image auf den Zieldatenträger kopiert wurde, führt kiwi einen kexec aus. Dieser Parameter weist kiwi an, zusätzliche Parameter an den Kernel zu übergeben. Zum Beispiel die unten beschriebenen.

    • combustion.url: Geben Sie bei Bedarf eine vollständige URL für das Combustion-Skript an, das an die Kernel-CLI übergeben wird.

    • ignition.config.url: Geben Sie bei Bedarf eine vollständige URL zur Ignition-Konfigurationsdatei an, die an die Kernel-CLI übergeben wird. Kann zusammen mit Combustion genutzt werden.

  11. Passen Sie die Datei /srv/tftpboot/pxelinux.cfg/default so an, dass sie SUSE Linux Micro enthält.

    LABEL Install SUSE Linux Micro
        LINUX sl-micro/linux
        INITRD sl-micro/initrd
        APPEND PATH_TO_APPEND_FILE

4 Remote-Bereitstellen des Image

Nachdem Sie die DHCP- und TFTP-Server vorbereitet haben, können Sie mit der Bereitstellung von SUSE Linux Micro auf dem Zielrechner beginnen.

  1. Schalten Sie den Zielrechner ein.

  2. Rufen Sie das UEFI-Bootmenü auf, und wählen Sie „PXE-Boot“ aus.

  3. Der Rechner sollte die Bereitstellung starten. Kernel und initrd werden vom TFTP heruntergeladen. Der Bootloader wird gestartet.

  4. Auswählen Install SUSE Linux Micro. Dieses Element kann anders sein, wenn Sie einen anderen LABEL-Wert in /srv/tftpboot/pxelinux.cfg/default verwendet haben.

  5. Wählen Sie einen Datenträger aus, auf dem SUSE Linux Micro bereitgestellt werden soll, und bestätigen Sie, dass die Daten auf diesem Gerät gelöscht werden. Das Image wird dann auf den Datenträger kopiert.

  6. Mithilfe von Kexec wird Ihr System neu gestartet und anschließend für den Konfigurationsprozess vorbereitet.

  7. Starten Sie den Konfigurationsprozess, indem Sie SL Micro auswählen. Wenn die Ignition- oder Combustion-Anweisungen nicht bereitgestellt wurden, wird JeOS Firstboot ausgelöst. Detaillierte Informationen finden Sie in Abschnitt 4.1, „Konfigurieren von SUSE Linux Micro mit JeOS Firstboot“.

4.1 Konfigurieren von SUSE Linux Micro mit JeOS Firstboot

Gehen Sie wie folgt vor, um das System mit JeOS Firstboot zu konfigurieren:

  1. JeOS Firstboot zeigt einen Begrüßungsbildschirm an. Bestätigen Sie mit Eingabetaste.

  2. Wählen Sie auf den nächsten Bildschirmen die Tastatur aus, bestätigen Sie die Lizenzvereinbarung und wählen Sie die Zeitzone.

  3. Geben Sie im Dialogfeld Enter root password ein Passwort für root ein und bestätigen Sie es.

    Root-Passwort eingeben
    Abbildung 1: Root-Passwort eingeben
  4. (Optional) Um SSH-Schlüssel für den Zugriff zu registrieren, drücken Sie Ja. Wenn Sie JA gedrückt haben, gehen Sie wie folgt vor:

    1. Verbinden Sie sich per SSH mit der angezeigten IP-Adresse.

    2. Wenn Sie einen öffentlichen Schlüssel ordnungsgemäß erhalten haben, bestätigen Sie ihn im nächsten Bildschirm.

    3. Es wird eine Aufforderung zum Importieren eines SSH-Schlüssels angezeigt. Wählen Sie die Option nach Ihren Wünschen.

  5. (Optional) Falls gewünscht, können Sie einen nicht privilegierten Benutzer im Formular User Creation erstellen. Geben Sie den Benutzernamen, den vollständigen Namen und ein Passwort zweimal ein. Bestätigen Sie Ihre Auswahl mit OK.

  6. (Optional) Um MFA für den Zugriff auf Cockpit einzurichten, öffnen Sie eine TOTP-Anwendung und scannen Sie den QR-Code. Geben Sie den von der Anwendung bereitgestellten OTP-Wert ein. Bestätigen Sie Ihre Einstellungen mit OK.

  7. Registrieren Sie Ihr System nach erfolgreicher Bereitstellung wie unter Abschnitt 5.1, „Registrieren von SUSE Linux Micro über CLI“ beschrieben.

5 Schritte nach der Bereitstellung

5.1 Registrieren von SUSE Linux Micro über CLI

Nach erfolgreicher Bereitstellung müssen Sie das System registrieren, um technischen Support und Aktualisierungen zu erhalten. Mit dem Kommando transactional-update register können Sie das System über die Befehlszeile registrieren.

Gehen Sie wie folgt vor, um SUSE Linux Micro beim SUSE Customer Center zu registrieren:

  1. Führen Sie transactional-update register wie folgt aus:

    # transactional-update register -r REGISTRATION_CODE -e EMAIL_ADDRESS

    Soll 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 SUSE Linux 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.

  2. Booten Sie Ihr System neu, um zum neuesten Snapshot zu wechseln.

  3. SUSE Linux Micro ist nun registriert.

Anmerkung
Anmerkung: Weitere Möglichkeiten der Registrierung

Informationen, die über den Umfang dieses Abschnitts hinausgehen, finden Sie in der Inline-Dokumentation zu SUSEConnect --help.

5.2 Hinzufügen von Benutzern

Da SUSE Linux Micro standardmäßig einen nicht privilegierten Benutzer benötigt, um sich über SSH anzumelden oder auf Cockpit zuzugreifen, empfehlen wir, ein solches Konto zu erstellen.

Dieser Schritt ist optional, wenn Sie während der Implementierung des Systems einen nicht privilegierten Benutzer definiert haben. Wenn nicht, können Sie wie unten beschrieben vorgehen:

  1. Führen Sie das Kommando useradd wie folgt aus:

                # 
                useradd -m USER_NAME
  2. Legen Sie ein Passwort für dieses Konto fest:

    # passwd USER_NAME
  3. Fügen Sie bei Bedarf den Benutzer zur wheel-Gruppe hinzu:

    # usermod -aG wheel USER_NAME