G.4 Ändern von ZENworks Imaging-Ressourcendateien

Es kann vorkommen, dass Sie eine Imaging-Verteilung durch Hinzufügen Ihrer eigenen Dateien verändern möchten. Zu diesen zählen zusätzliche Programme, Skripten, Datendateien bzw. aktualisierte Linux-Treiber.

Sie können mit folgenden Methoden die Imaging-Ressourcendateien aktualisieren:

Die folgenden Abschnitte behandeln die verschiedenen Methoden zur Bearbeitung von Imaging-Ressourcendateien.

G.4.1 Hinzufügen von Dateien zu einer Imaging-Start-CD

Wenn Sie der Imaging-Start-CD Dateien hinzufügen möchten, damit sie im späteren Imaging-Prozess zur Verfügung stehen (beispielsweise Skripts, jedoch normalerweise keine Treibermodule), können Sie die Dateien in das Verzeichnis /addfiles auf der Imaging-CD kopieren. Auf diese Weise können Sie Ihre Skriptdatei und andere Dateien problemlos in die Distribution einfügen, ohne dass die Dateisysteme initrd bzw. root geändert werden müssen. Diese Dateien stehen jedoch während den Start- und Modulladephasen nicht zur Verfügung.

Die Imaging-Start-CD besitzt das Verzeichnis /addfiles, zu dem Sie Dateien hinzufügen können. Diese Dateien werden unterhalb dieses Verzeichnis in einem eigenen Verzeichnis abgelegt. Sie stehen dann während des Imaging-Vorgangs innerhalb dieser Verzeichnisstruktur zur Verfügung.

Nachfolgendes Beispiel zeigt, wie Sie Dateien hinzufügen können:

  1. Wenn Sie statt eines normalen Imaging-Vorgangs Ihr eigenes Skript ausführen möchten, müssen Sie ein Skript mit dem Namen myscript.s erstellen und auf die Start-CD kopieren. Zum Beispiel: /addfiles/bin/myscript.s.

    WICHTIG:Die Skriptdatei muss die ordnungsgemäßen, für Linux erforderlichen LF-Zeilenbegrenzer und darf keine DOS CR- und LF-Zeilenendzeichen enthalten. Das heißt, Sie können Notepad.exe nicht zum Erstellen des Skripts verwenden. Sie müssen einen Texteditor verwenden, der mit Linux kompatibel ist (z. B. TextPad).

  2. Geben Sie zum Einfügen der folgenden Zeile in die Datei settings.txt Folgendes ein:

    export IMGCMD="/bin/myscript.s"
    

    Während des Imaging-Vorgangs wird /bin/myscript.s anstelle des üblichen Befehls img ‑auto ausgeführt.

G.4.2 Hinzufügen von Dateien zu den Initrd- oder Root-Dateisystemen

Diese Methode ist vorzugsweise für die Aktualisierung von Imaging-Ressourcendateien zu verwenden und in einer Linux-Umgebung auszuführen.

Stellen Sie vor dem Ausführen der unten aufgeführten Prozeduren 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 einen ISO-Editor oder andere Verfahren für das Extrahieren und Ersetzen der Datei in der Imagedatei bootcd.iso.

WICHTIG:Dokumentieren Sie beim Aktualisieren oder Hinzufügen von Dateien und Linux-Treibern die in den Dateisystemen initrd oder root vorgenommenen Änderungen. Die von Novell gelieferten aktualisierten Ressourcendateien enthalten nicht Ihre benutzerdefinierten Änderungen. Wenn sich bei neueren Ressourcendateien von Novell die Kernel-Version geändert hat, müssen bereits hinzugefügte Treiber aktualisiert werden, indem entweder eine neue Version vom Hersteller bezogen oder der Treiber mit der Quelle der korrekten Linux-Kernel-Version neu kompiliert wird.

Um dem root-Dateisystem Dateien hinzuzufügen, können Sie auch die Methode mit der Datei driverupdate verwenden. Weitere Informationen dazu finden Sie in Abschnitt G.4.3, Verwenden der Dateimethode „Driverupdate“.

Hinzufügen zu Initrd

So ändern Sie das initrd-Dateisystem:

  1. Erstellen Sie an einem Linux-Rechner ein Arbeitsverzeichnis und wechseln Sie in dieses Verzeichnis.

  2. Führen Sie die folgenden Schritte aus, um initrd vom PXE-Server oder von der Start-CD in das neue Arbeitsverzeichnis zu kopieren:

    • Beim PXE-Server müssen Sie /tftp/boot/initrd in das Arbeitsverzeichnis des Linux-Arbeitsplatzrechners kopieren.

    • Extrahieren Sie für die CD die Datei initrd aus dem Verzeichnis /boot/i386/loader auf der Start-CD, kopieren Sie dann die extrahierte Datei initrd in das Arbeitsverzeichnis des Linux-Arbeitsplatzrechners.

  3. Geben Sie zum Umbenennen von initrd in initrd.gz Folgendes ein:

    mv initrd initrd.gz
    
  4. Geben Sie zum Dekomprimieren der Datei initrd.gz Folgendes ein:

    gunzip initrd.gz
    
  5. Um ein anderes Arbeitsverzeichnis als Einhängepunkt bei den anschließenden Schritten zu erstellen, geben Sie Folgendes ein:

    mkdir work
    
    cd work
    
  6. Geben Sie Folgendes ein, um initrd in das Verzeichnis /work zu extrahieren:

    cpio -idmuv <../initrd >/dev/null 2>&1
    
  7. Um Ihre Dateien oder den aktualisierten Treiber in das extrahierte initrd-Dateisystem zu kopieren, geben Sie Folgendes ein:

    cp /your_path/module.ko lib/modules/2.6.5-override-default/initrd
    

    Dabei ist your_path der Pfad für die Datei module.ko und module ist der Name des Moduls.

    Andere Dateien, die im initrd-Dateisystem aufzunehmen sind, müssen in das entsprechende Verzeichnis kopiert werden.

  8. Geben Sie zum erneuten Packen des initrd-Dateisystems Folgendes ein:

    find . | cpio --quiet -o -H newc > ../initrd
    
    cd ..
    
  9. Geben Sie zum Komprimieren der neuen initrd-Datei Folgendes ein:

    gzip -v9c initrd > initrd.gz
    
  10. Geben Sie zum Umbenennen von initrd.gz zurück in initrd Folgendes ein:

    mv initrd.gz initrd
    
  11. So kopieren Sie die Datei zurück:

    • Kopieren Sie für PXE die aktualisierte Datei initrd in das Verzeichnis /tftp/boot auf dem PXE-Server.

    • Kopieren Sie für die CD die aktualisierte Datei initrd in das Verzeichnis /boot/i386/loader auf der Start-CD.

Hinzufügen zum Root

So ändern Sie das root-Dateisystem:

  1. Erstellen Sie an einem Linux-Rechner ein Arbeitsverzeichnis und wechseln Sie in dieses Verzeichnis.

  2. So kopieren Sie „root“ vom PXE-Server oder von der Start-CD in das neue Arbeitsverzeichnis:

    • Vom PXE-Server: Kopieren Sie das /tftp/boot/root in das Arbeitsverzeichnis des Linux-Arbeitsplatzrechners.

    • Von der Start-CD: Extrahieren Sie root aus dem Verzeichnis /boot/i386/ der Start-CD und kopieren Sie das extrahierte root dann in das Arbeitsverzeichnis des Linux-Arbeitsplatzrechners.

  3. Geben Sie Folgendes ein, um die Datei root in root.gz umzubenennen:

    mv root root.gz
    
  4. Geben Sie Folgendes ein, um die Datei root.gz zu entpacken:

    gunzip root.gz
    
  5. Um ein anderes Arbeitsverzeichnis als Einhängepunkt bei den anschließenden Schritten zu erstellen, geben Sie Folgendes ein:

    mkdir work
    
  6. Geben Sie zum Einhängen des root-Dateisystems im Verzeichnis /work Folgendes ein:

    mount -o loop root work
    
  7. Nehmen Sie die gewünschten Änderungen am Verzeichnis /work vor.

  8. Geben Sie Folgendes ein, um das root-Dateisystem auszuhängen:

    umount work
    
  9. Geben Sie Folgendes ein, um die neue root-Datei zu packen:

    gzip -v9c root > root.gz
    
  10. Geben Sie Folgendes ein, um die Datei root.gz zurück in root umzubenennen:

    mv root.gz root
    
  11. So kopieren Sie die Datei zurück:

    • Kopieren Sie für PXE die aktualisierte root-Datei in das Verzeichnis /tftp/boot auf dem PXE-Server.

    • Kopieren Sie für die CD die aktualisierte root-Datei in das Verzeichnis /boot/i386/ auf der Start-CD.

G.4.3 Verwenden der Dateimethode „Driverupdate“

Eine andere Möglichkeit, die Novell Imaging-Verteilung anzupassen, besteht in der Nutzung des Mechanismus zur Treiberaktualisierung, der in allen SUSE-Verteilungen integriert ist. Dazu gehört das Ändern der Datei driverupdate, die sich im Verzeichnis /srv/tftp/boot auf Ihrem Imaging-Server oder im Root-Verzeichnis (/) 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:

  • Installieren der Kernel-Module oder Hardware-Treiber

  • Installieren der Dateien und Ausführen eines Skripts

  • Einfaches Platzieren von Dateien in das Betriebssystem

In diesem Abschnitt wird erläutert, wie Sie Dateien installieren und ein Skript ausführen. Weitere Informationen über die anderen zwei Verfahren finden Sie unter „Tech Talk #3 - Spittin’ Image“ im Novell Connection Magazine. Lesen Sie sich in dem Artikel insbesondere die Abschnitte „SUSE Linux Updates“ und „Adding files to the distro “root„ file“ durch.

Das Beispiel in diesem Abschnitt nimmt das Programm „tree“, das derzeit nicht in der Imaging-Verteilung 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-Verteilung 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:

  1. Legen Sie auf Ihrem Imaging-Server ein Arbeitsverzeichnis, wie z. B. /work, an.

  2. Wenn Sie die Datei driverupdate verwenden, laden Sie die Datei driverupdate.tgz in das Verzeichnis /work herunter und dekomprimieren Sie diese, 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 Schritt 3 erstellt wurde.

  3. Wenn Sie die Verzeichnisse manuell erstellen, legen Sie die folgende Verzeichnisstruktur unter dem Verzeichnis /work an:

    `-- linux
        `-- suse
            |-- i386-sles10
                |-- 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 10 Patch 
    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
    
  4. 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/
    
  5. Um die Datei CRAMFS anzulegen, geben Sie Folgendes ein:

    mkfs.cramfs work/ driverupdate
    

    Die SUSE-Verteilung erfordert die CRAMFS-Datei.

  6. Um die Datei driverupdate in /srv/tftp/boot zu kopieren, geben Sie Folgendes ein:

    cp driverupdate /srv/tftp/boot
    
  7. Fügen Sie die folgenden Zeilen dem Ende der Datei /srv/tftp/boot/settings.txt hinzu:

    # 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.

  8. Starten Sie das PXE-fähige Gerät neu.

    Nach dem Start des Betriebssystems sollte an der Imaging-Wartungsmodus-Eingabeaufforderung der Text „ZENworks 10 Patch“ angezeigt werden.

  9. Führen Sie das Programm tree aus.

Alle Dateien, die Sie in die Datei driverupdate aufnehmen, befinden sich nun nach dem Booten unter dem Verzeichnis /update im Betriebssystem. Anschließend erstellt das Skript adddir.s script (bzw. der Code, den Sie unter in die Datei settings.txt Schritt 7 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.