Mit KIWI können Sie Betriebssystem-Images erstellen. Dieses Kapitel beschreibt, wie ein System-Image auf einem leeren Client-Computer bereitgestellt wird. Dazu müssen Sie ein Preload-Image erstellen, das ein bootfähiges RAW-Image enthält. Diese Datei enthält zwei wichtige Teile: eine Partitionstabelle und das eigentliche Betriebssystem. Dieses RAW-Image wird auf die leere Festplatte geschrieben, und beim ersten Bootvorgang dehnt sich das Betriebssystem auf den verbleibenden Plattenspeicher aus.
Weitere Informationen zum Erstellen eines solchen Image finden Sie unter http://doc.opensuse.org/projects/kiwi/doc/. Beim Aufbauen des ISO-Images finden Sie die RAW-Datei im Zielverzeichnis. Es gibt viele Möglichkeiten, ein RAW-Image auf einer Festplatte abzulegen.
Anschließen der Platte an einen Bereitstellungsserver und Kopieren des Images auf das Raw-Gerät.
Bereitstellen des RAW-Images über einen HTTP- oder FTP-Server und Ablegen auf der Festplatte des Client-Computers.
Erstellen eines Netboot-Image zum Abrufen und Ablegen des Image auf der Platte; dies ist eine gute Methode zur Massenimplementierung.
Booten eines Rettungsdatenträgers und manuelle Speicherung vom Rettungs-Image aus.
Für einen schnellen Start empfiehlt es sich, eine der in Abschnitt 19.1, „Manuelles Implementieren des Systems vom Rettungs-Image“ beschriebenen Methoden zu verwenden.
Brennen Sie das ISO-Image, das Sie vom KIWI-Erstellungsprozess auf CD/DVD erhalten.
Booten Sie von diesem Medium aus auf dem Client-Computer.
Wählen Sie die Festplatte für die Installation aus.
Starten Sie den Client-Computer neu und booten Sie von der Festplatte.
Booten Sie den Client-Computer mit einem Rettungssystem. Solche Systeme stehen auf allen SUSE-Installations-CDs oder -DVDs zur Verfügung.
Melden Sie sich als root-Benutzer an. Geben Sie kein Passwort ein.
Konfigurieren Sie Ihr Netzwerk. Wenn in Ihrem Netzwerk DHCP verfügbar ist, ist dies lediglich das Kommando ifup-dhcp eth0. Wenn dies manuell durchgeführt werden muss, verwenden Sie das Kommando ip zur Konfigurierung Ihres Netzwerks. Die Ausgabe, mit der DHCP startet, teilt Ihnen auch die IP-Adresse des Computers mit.
Überwachen Sie einen unbenutzten Port Ihres Netzwerks wie 1234 und legen Sie die eingehenden Daten mit dem folgenden Kommando auf der Platte ab:
netcat -l -p 1234 > /dev/sda
Senden Sie auf dem Imaging-Server das RAW-Image mit dem folgenden Kommando an den Client-Computer:
netcat <IP of client> 1234 < $HOME/preload_image/<image_name>
Entfernen Sie nach der Übertragung des Images das Rettungssystem aus Ihrem CD- oder DVD-Laufwerk, und fahren Sie den Client-Computer herunter. Beim erneuten Booten sollte der Boot-Loader GRUB auf dem Client gestartet werden. Das Firstboot-System übernimmt dann.
Beim Durchführen mehrerer Installationen eines Betriebssystems auf ähnlicher Hardware ist es nützlich, eine Massenbereitstellung des Betriebssystems gründlich vorzubereiten und die erforderliche Zeit für die tatsächliche Bereitstellung zu minimieren. In diesem Kapitel wird dieser Vorgang beschrieben. Ziel ist es, den Computer einfach anzuschließen, ihn mit einem Netzwerk zu verbinden, einen Netzwerk-Boot zu starten und zu warten, bis er herunterfährt.
Die folgenden Aktionen müssen ausgeführt werden, um diese Aufgabe zu erfüllen:
Ein dedizierter Computer ist erforderlich, der so eingerichtet ist, dass er PXE-Boot sowie einen FTP- oder Webserver für die Bereitstellung eines Preload-Images bietet. Der Computer sollte über genügend Arbeitsspeicher verfügen, um alle erforderlichen Installationsdaten bereitzuhalten. Für eine Standardinstallation benötigen Sie mindestens 4 GB Arbeitsspeicher. Alle erforderlichen Aufgaben können mit SUSE Linux Enterprise Server erledigt werden. Weitere Informationen finden Sie unter Abschnitt 19.2.1, „Einrichten eines Boot- und Installationsservers“.
Die tatsächliche Installation erfolgt durch das Kopieren eines RAW-Image des Betriebssystems auf eine neue Festplatte. Alle Funktionen und Einstellungen müssen sorgfältig vorbereitet und geprüft werden. Für die Bereitstellung eines solchen Images kann KIWI verwendet werden (verfügbar im SDK des SUSE Linux Enterprise-Betriebssystems). Weitere Informationen über die Image-Erstellung mit KIWI finden Sie unter http://doc.opensuse.org/projects/kiwi/doc/. Weitere Details über die Anforderungen des Preload-Image finden Sie in Abschnitt 19.2.2, „Erstellen eines Preload-Images“.
Das SDK mit KIWI ist ein Zusatzprodukt für SUSE Linux Enterprise und ist unter http://download.suse.com/ als Download verfügbar. Suchen Sie nach SUSE Linux Enterprise Software Development Kit.
Für diese Aufgabe sind einige Linux-Kenntnisse erforderlich. Eine Beschreibung anhand einer Beispielinstallation finden Sie unter Abschnitt 19.2.3, „Erstellen eines ersten Systems zur Implementierung eines Preload-Images“.
PXE-Boot muss angewiesen werden, das Installationssystem zu starten, das wiederum das Preload-Image vom Server übernimmt und es auf die Festplatte kopiert.
Es müssen vier Schritte ausgeführt werden, um diese Aufgabe nach der Installation von SUSE Linux Enterprise Server ausführen zu können:
Richten Sie die Installationsquelle ein wie in Abschnitt 11.2, „Einrichten des Servers, auf dem sich die Installationsquellen befinden“ beschrieben. Wählen Sie einen HTTP- oder FTP-Netzwerkserver.
Richten Sie einen TFTP-Server so ein, dass er ein Boot-Image enthält (dieses Image wird in einem späteren Schritt erstellt). Die Konfiguration eines solchen Servers wird in Abschnitt 11.3.2, „Einrichten eines TFTP-Servers“ beschrieben.
Richten Sie einen DHCP-Server ein, um allen Computern IP-Adressen zuzuweisen und dem Zielsystem den Speicherort des TFTP-Servers bekannt zu geben. Die Konfiguration eines solchen Servers wird in Abschnitt 11.3.1, „Einrichten eines DHCP-Servers“ beschrieben.
Bereiten Sie den PXE-Boot des Installationsservers vor. Dies wird ausführlich in Abschnitt 11.3.3, „Verwenden von PXE Boot“ beschrieben.
Beachten Sie, dass es für den eigentlichen Installationsvorgang sehr vorteilhaft ist, wenn Sie diesem Computer genügend Arbeitsspeicher zur Verfügung stellen, in dem das Preload-Image gespeichert werden kann. Durch Verwendung von Gigabit-Ethernet wird der Bereitstellungsvorgang erheblich beschleunigt (im Vergleich zu langsameren Netzwerken).
Das Verfahren der Image-Erstellung mit KIWI wird unter http://doc.opensuse.org/projects/kiwi/doc/ beschrieben. Jedoch müssen bei der Image-Erstellung für Massenbereitstellungen mehrere Punkte berücksichtigt werden:
Ein typisches Preload-Image verwendet den folgenden Typ:
<type primary="true" filesystem="btrfs" boot="oemboot/suse-SLES12">vmx</type>
Beim Einrichten eines Preload-Images wird der Image-Erstellungsvorgang mehrmals ausgeführt. Die erforderlichen Repositorys für die Image-Erstellung sollten auf dem lokalen Computer verfügbar sein.
Abhängig von der gewünschten Nutzung des Preloads sollten einige Mühen in die Konfiguration von Firstboot investiert werden. Weitere Details über Firstboot finden Sie in Kapitel 17, Installieren von benutzerdefinierten Vorinstallationen. Mit dieser Methode können Sie auch festlegen, dass der Benutzer beim ersten Boot des Systems anfängliche Konfigurationen angeben muss.
Viele zusätzliche Funktionen können im Image konfiguriert werden, z. B. das Hinzufügen von Aktualisierungs-Repositorys oder das Ausführen einer Aktualisierung beim ersten Booten. Jedoch können in diesem Dokument nicht alle Möglichkeiten beschrieben werden. Abhängig von den Anforderungen erfordert die Erstellung des Preload-Images eingehende Kenntnisse des Imaging-Systems KIWI sowie mehrerer anderer Techniken, die in SUSE Linux Enterprise Desktop verwendet werden.
Das eigentliche Image, das bereitgestellt werden soll, muss auf dem FTP- oder HTTP-Server verfügbar sein, den Sie auf dem Installationsserver bereitgestellt haben.
Für die Ausführung einer automatischen Bereitstellung muss ein erstes Linux-System auf dem Zielcomputer gestartet werden. Während einer typischen Installation werden der Kernel und das erste RAM-Dateisystem von einem Bootmedium gelesen und durch das BIOS gestartet. Die benötigte Funktionalität kann im RAM-Dateisystem bereitgestellt werden, das zusammen mit dem Kernel als erstes System dient.
Zu den Hauptfunktionen, die vom ersten System bereitgestellt werden müssen, gehören das Aktivieren des Zugriffs auf die Festplatte und das Herstellen der Netzwerkverbindung. Beide Funktionen hängen von der Hardware ab, auf der die Bereitstellung vorgenommen werden soll. Theoretisch ist es möglich, ein erstes System von Grund auf neu zu erstellen; zur Vereinfachung dieser Aufgabe ist es aber auch möglich, das anfängliche RAM-Dateisystem, das der Computer beim Booten verwendet, zu ändern.
Die folgende Vorgehensweise ist nur ein Beispiel dafür, wie das erforderliche erste RAM-Dateisystem erstellt werden kann:
Führen Sie eine Standardinstallation von SUSE Linux Enterprise Desktop auf dem Zielsystem durch.
Installieren Sie das Paket busybox auf dem System.
Erstellen Sie mit dem folgenden Kommando ein neues RAM-Dateisystem:
mkinitrd -f busybox -D eth0
Beachten Sie, dass eth0 das Ethernet-Gerät darstellt, an das Ihr Netzwerkkabel angeschlossen ist. Der Parameter -f busybox fügt dem RAM-Dateisystem das ausführbare Programm busybox hinzu, das mehrfach aufgerufen werden kann. Danach stehen in diesem System viele UNIX-Standardkommandos zur Verfügung.
Kopieren Sie das neue RAM-Dateisystem und den Kernel mit dem folgenden Kommando auf Ihren Boot-Server:
scp /boot/initrd /boot/vmlinuz pxe.example.com:
Ersetzen Sie pxe.example.com durch den Namen Ihres lokalen Boot-Servers oder die IP-Adresse.
Melden Sie sich bei Ihrem Boot-Server als root-Benutzer an, und erstellen Sie ein Verzeichnis, in dem Sie das RAM-Dateisystem ändern können:
mkdir ~/bootimage
Ändern Sie Ihr Arbeitsverzeichnis mithilfe des Kommandos cd ~/bootimage in dieses Verzeichnis.
Entpacken Sie mithilfe des folgenden Kommandos das zuvor kopierte erste RAM-Dateisystem:
zcat ../initrd | cpio -i
Bearbeiten Sie die Datei run_all.sh.
Suchen Sie die folgende Zeile, löschen Sie sie und den Rest der Datei:
[ "$debug" ] && echo preping 21-nfs.sh
Fügen Sie die folgenden Zeilen an das Ende der Dateien run_all.sh:
[ "$debug" ] && echo preping 92-install.sh
[ "$debug" ] && echo running 92-install.sh
source boot/92-install.sh
[ "$modules" ] && load_modules
Erstellen Sie ein neues Skript mit dem Namen boot/92-install.sh und dem folgenden Inhalt:
#!/bin/bash
if [ "$(get_param rawimage)" ]; then
rawimage=$(get_param rawimage)
if [ "$(get_param rawdevice)" ]; then
rawdevice=$(get_param rawdevice)
echo "wget -O ${rawdevice} ${rawimage}"
wget -O ${rawdevice} ${rawimage}
sync
sleep 5
echo "DONE"
fi
fi
# /bin/bash
/bin/poweroff -f
Wenn Sie vor dem Abschalten des Computers eine Debug-Shell wünschen, entfernen Sie das Kommentarzeichen vor /bin/bash.
Machen Sie dieses Skript ausführbar mithilfe des Kommandos chmod 755 boot/92-install.sh.
Erstellen Sie ein neues erstes RAM-Dateisystem mit den folgenden Kommandos:
mkdir -p /srv/tftpboot find . | cpio --quiet -H newc -o | gzip -9 -n > \ /srv/tftpboot/initrd.boot
Kopieren Sie den Kernel in dieses Verzeichnis.
cp ../vmlinuz /srv/tftpboot/linux.boot
Das erste RAM-Dateisystem ist nun für zwei neue Kernel-Kommandozeilenparameter vorbereitet. Der Parameter rawimage=<URL> wird benutzt, um den Speicherort des Preload-Image zu identifizieren. Jede URL, die von wget verstanden wird, ist verwendbar. Der Parameter rawdevice=<device> wird verwendet, um das Block-Gerät für die Festplatte auf dem Zielcomputer zu identifizieren.
Die Konfiguration des Boot-Servers wird ausführlich in mehreren Kapiteln behandelt. Siehe dazu die Liste in Abschnitt 19.2.1, „Einrichten eines Boot- und Installationsservers“. Dieser Abschnitt enthält eine Prüfliste mit den Schritten, die zur Konfiguration des Systems erforderlich sind.
Richten Sie einen DHCP-Server ein. Das Subnetz, in dem die Computer installiert sind, benötigt die folgenden Zeilen:
filename "pxelinux.0"; next-server 192.168.1.115;
In diesem Beispiel ist 192.168.1.115 die IP-Adresse des PXE-Servers pxe.example.com.
Konfigurieren Sie einen PXE-Server wie in Abschnitt 11.3.3, „Verwenden von PXE Boot“ beschrieben. Fügen Sie beim Bearbeiten von /srv/tftpboot/pxelinux.cfg/default die folgenden Einträge hinzu:
default bootinstall label bootinstall kernel linux.boot append initrd=initrd.boot \ rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
Richten Sie einen FTP-Server ein, und kopieren Sie Ihre vorbereiteten Preload-Images nach /srv/ftp/preload/preloadimage.raw.
Testen Sie Ihr Setup, indem Sie das Zielsystem mit dem PXE-Netzwerk-Boot starten. Damit wird das vorbereitete Preload-Image automatisch auf die Festplatte kopiert und der Computer zum Schluss abgeschaltet.