Von Zeit zu Zeit möchten Sie vielleicht eine Imaging-Distribution ändern, indem Sie Ihre eigenen Dateien hinzufügen. Dabei kann es sich um zusätzliche Programme, Datendateien oder aktualisierte Linux-Treiber handeln.
Anhand der folgenden Methoden können Sie Imaging-Ressourcendateien aktualisieren:
Diese Methode wird im aktuellen Abschnitt behandelt.
Die folgenden Abschnitte bieten zahlreiche Methoden zum Ändern von Imaging-Ressourcendateien:
Wenn Sie der Imaging-Start-CD Dateien hinzufügen möchten, damit sie im späteren Imaging-Prozess zur Verfügung stehen (beispielsweise Skripten, jedoch normalerweise keine Treibermodule), können Sie die Dateien in das Verzeichnis /addfiles auf der Imaging-CD kopieren. Dies ist eine einfache Methode, Ihr Skript oder andere Dateien ohne Ändern des initrd- oder root-Dateisystems in die Verteilung aufzunehmen. Diese Dateien sind jedoch nicht während des Starts und des Ladens der Module verfügbar.
Dateien sollten unterhalb des Verzeichnisses /addfiles auf der Imaging-Start-CD in ihren korrekten Verzeichnissen eingefügt werden. Sie stehen dann in dieser Verzeichnisstruktur während des Imaging-Vorgangs zur Verfügung.
Beispiel für das Hinzufügen von Dateien:
Wenn Sie ein eigenes Skript anstelle des üblichen Imaging-Vorgangs ausführen möchten, erstellen Sie eine Skriptdatei mit dem Namen myscript.s und platzieren Sie sie auf der Start-CD. Zum Beispiel: /addfiles/bin/myscript.s.
IMPORTANT:Die Skriptdatei muss über die passenden LF-Zeilenenden verfügen, die Linux verlangt, nicht die DOS-CR- und -LF-Zeilenendezeichen. Das bedeutet, Sie können das Skript nicht mit Notepad.exe erstellen. Sie müssen einen Texteditor verwenden, der mit Linux oder UNIX kompatibel ist, beispielsweise TextPad.
Um die folgende Zeile in die Datei settings.txt einzufügen, schreiben Sie:
export IMGCMD=/bin/myscript.s
Während des Imaging-Vorgangs wird /bin/myscript.s anstelle des üblichen Befehls img auto ausgeführt.
Dies ist die bevorzugte Methode zur Aktualisierung von Imaging-Ressourcendateien. Sie muss in einer Linux-Umgebung ausgeführt werden.
Stellen Sie vor dem Ausführen der unten aufgeführten Prozedur sicher, dass Sie Sicherungskopien von allen Dateien angelegt haben, die Sie ändern möchten, insbesondere von der Datei /srv/tftp/boot/initrd. Wenn Sie die Dateien auf einer Imaging-CD ändern möchten, benötigen Sie ein Programm, wie winiso, oder einen anderen Prozess zum Extrahieren und Ersetzen der Datei in der Image-Datei bootcd.iso.
IMPORTANT:Dokumentieren Sie Ihre Änderungen beim Aktualisieren oder Hinzufügen von Dateien und Linux-Treibern im initrd- oder root-Dateisystem. Wenn Sie aktualisierte Ressourcendateien von Novell bekommen, enthalten diese nicht Ihre angepassten Änderungen. Wenn die Kernel-Version mit den neueren Ressourcendateien von Novell geändert wurde, müssen Sie zuvor hinzugefügte Treiber aktualisieren, indem Sie eine neue Version vom Hersteller beziehen oder den Treiber mit dem Quellcode der korrekten Linux-Kernel-Version neu kompilieren.
Sie können die folgende Prozedur für das root-Dateisystem verwenden, indem Sie in den Arbeitsschritten einfach “initrd” durch “root” ersetzen. Jedoch sollten Linux-Treiber stets in das initrd-Dateisystem platziert werden, nicht in das root-Dateisystem.
Um dem root-Dateisystem Dateien hinzuzufügen, können Sie auch die Methode mit der Datei driverupdate verwenden. Weitere Informationen dazu finden Sie in Section E.4.3, Methode mit der Datei "Driverupdate".
So fügen Sie dem initrd- oder root-Dateisystem Dateien hinzu:
Erstellen Sie an einem Linux-Rechner ein Arbeitsverzeichnis und wechseln Sie in dieses Verzeichnis.
So kopieren Sie initrd vom PXE-Server oder die Start-CD in das neue Arbeitsverzeichnis:
Geben Sie Folgendes ein, um initrd in initrd.gz umzubenennen:
cp initrd initrd.gz
Geben Sie Folgendes ein, um initrd.gz zu entpacken:
gunzip initrd.gz
Um ein weiteres Arbeitsverzeichnis zur Verwendung als Einhängepunkt in den nachfolgenden Schritten anzulegen, geben Sie Folgendes ein:
mkdir work
Um das initrd-Dateisystem in das Verzeichnnis /work einzuhängen, geben Sie Folgendes ein:
mount -o loop initrd work
Um Ihre Dateien oder den aktualisierten Treiber in das eingehängte initrd-Dateisystem zu kopieren, geben Sie Folgendes ein:
cp /ihr_pfad/modul.ko work/lib/modules/2.6.5-override-default/initrd
wobei ihr_pfad den Pfad zur Datei modul.ko angibt und "modul" für den Namen des Moduls steht.
Andere Dateien, die Sie in das initrd-Dateisystem aufnehmen möchten, müssen in das entsprechende Verzeichnis kopiert werden.
Um das initrd-Dateisystem auszuhängen, geben Sie Folgendes ein:
umount work
Um das initrd-Dateisystem zu packen, geben Sie Folgendes ein:
gzip -v9c initrd > initrd.gz
Geben Sie Folgendes ein, um initrd.gz zurück in initrd umzubenennen:
cp initrd.gz initrd
So kopieren Sie die Datei zurück:
Eine andere Möglichkeit, die Imaging-Distribution anzupassen, besteht in der Nutzung des Mechanismus zur Treiberaktualisierung, der in allen SUSE-Distributionen integriert ist. Dazu gehört das Ändern der Datei driverupdate, die sich im Verzeichnis /srv/tftp/boot auf Ihrem Imaging-Server oder im Stammverzeichnis (/) einer Imaging-Start-CD befindet.
Diese Methode verlangt weniger Eingriffe als beim Ändern des initrd- oder root-Dateisystems. Sie erstellen einfach eine zusätzliche Datei, die beim Start in das Imaging-Betriebssystem inkorporiert wird.
Die Aktualisierung von Treibern kann auf drei Arten erfolgen:
Dieser Abschnitt behandelt das zweite Verfahren. Weitere Informationen über die übrigen Verfahren finden Sie unter “Tech Talk #3 - Spittin’ Image” im Novell Connection Magazine.
Das Beispiel in diesem Abschnitt nimmt das Programm “tree”, das derzeit nicht in der Imaging-Distribution verfügbar ist, und installiert es beim Start.
Der Treiberaktualisierungsmechanismus sucht die Datei driverupdate, die eine Verzeichnisstruktur enthält, welche die Verzeichnisstruktur des Betriebssystems imitiert, nachdem ein Gerät mit der ZENworks-Distribution gestartet wurde. Wenn die Datei vorhanden ist, lädt linuxrc sie beim Start herunter und inkorporiert sie dynamisch in das Betriebssystem.
Die Datei driverupdate ist eine Dateisystemdatei eines beliebigen Dateisystemtyps, beispielsweise EXT3 oder REISER. Der Einfachheit halber verwenden wir in unserem Beispiel das CRAMFS-Dateisystem.
So platzieren Sie das Programm tree in die Datei driverupdate:
Legen Sie auf Ihrem Imaging-Server ein Arbeitsverzeichnis, wie z. B. /work, an.
(Bedingt) Wenn Sie die Datei "driverupdate" verwenden, laden Sie die Datei driverupdate.tgz in das Verzeichnis /work herunter und dekomprimieren Sie es mit "untar", indem Sie Folgendes eingeben:
mkdir work cd work wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz tar -xzvf driverupdate.tgz
Die Verzeichnisstruktur in der Datei driverupdate.tgz ist identisch mit derjenigen, die in Step 3 erstellt wurde.
(Bedingt) Wenn Sie die Verzeichnisse manuell erstellen, legen Sie die folgende Verzeichnisstruktur unter dem Verzeichnis /work an:
`-- dirstruct `-- linux `-- suse |-- i386-9.2 |-- dud.config |-- inst-sys `-- lib `-- bin |-- adddir.s
Der Inhalt der Datei dud.config sollte ähnliche Zeilen wie unten aufgelistet enthalten. Verwalten Sie die Schlüsselwörter, indem Sie Ihre eigenen Daten eingeben. Sie können jedoch auch die aufgeführten Werte verwenden:
UpdateName: ZENworks 7 Patch 1 UpdateID: a37f92556e4dd99e UpdatePriority: 100
Die Datei adddir.s muss ein ausführbares Skript sein, das die folgenden Zeilen enthält:
echo "Processing: adddir.s" > /dev/tty3 2>&1 # driver update: add files to inst-sys for i in /update/[0-9]*/inst-sys ; do [ -d "$i" ] && adddir "$i" / done
# driver update: run update.pre scripts for i in /update/[0?9]*/install/update.pre ; do echo "Processing: $i" > /dev/tty3 2>&1 [ -x "$i" ] && "$i" done
Um das Programm tree in das Verzeichnis /bin zu kopieren, geben Sie Folgendes ein:
cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
Um die Datei CRAMFS anzulegen, geben Sie Folgendes ein:
mkfs.cramfs dirstruct/ driverupdate
Um die Datei driverupdate in /srv/tftp/boot zu kopieren, geben Sie Folgendes ein:
cp driverupdate /srv/tftp/boot
Fügen Sie die folgenden Zeilen an das Ende der Datei /srv/tftp/boot/settings.txt ein:
# SUSE driver update for i in /update/[0?9]*/install/adddir.s ; do [ -x "$i" ] && "$i" rm $i done
Damit wird das Skript adddir.s ausgeführt, das Softlinks zu allen neuen Dateien anlegt, die kopiert werden.
Eventuell sind diese Zeilen bereits in der Datei settings.txt vorhanden.
Starten Sie das PXE-fähige Gerät neu.
Nach dem Start des Betriebssystems sollte an der Bash-Eingabeaufforderung der Text “ZENworks 7 Patch 1” angezeigt werden.
Führen Sie das Programm tree aus.
Alle Dateien, die Sie in die Datei driverupdate aufnehmen, befinden sich nun nach dem Start unter dem Verzeichnis /update im Betriebssystem. Anschließend erstellt das Skript adddir.s script (bzw. der Code, den Sie unter Step 7 in die Datei settings.txt eingegeben haben) Softlinks unter dem root-Dateisystem, die auf die entsprechenden Dateien unter der Verzeichnisstruktur /update verweisen. Sie können dies prüfen, indem Sie Folgendes ausführen:
/# which tree /bin/tree /# ll /bin/tree lrwxrwxrwx 1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree
Wenn Sie einfach einen neuen Hardware-Treiber oder ein neues Kernel-Modul in das Imaging-Betriebssystem aufnehmen möchten, ist es eventuell einfacher, die Datei .ko in das Verzeichnis /dirstruct/linux/suse/i386-9.2/modules/ zu kopieren. Anschließend lädt das Imaging-Betriebssystem automatisch sämtliche .ko-Dateien, die sich in diesem Verzeichnis befinden.