G.4 Aggiornamento del File Delle Risorse di imaging di ZENworks

Può talvolta essere necessario modificare una distribuzione di imaging aggiungendo file personalizzati. Tali file possono essere, ad esempio, programmi, script, file di dati o driver Linux aggiornati.

I metodi disponibili per aggiornare i file delle risorse di imaging sono i seguenti:

Le seguenti sezioni descrivono vari metodi che possono essere utilizzati per modificare i file delle risorse di imaging:

G.4.1 Aggiunta di file a un CD di avvio del processo di imaging

Se si hanno file che si desidera aggiungere al CD di avvio del processo di imaging in modo che possano essere usati quando si avvia il processo di imaging (ad esempio, script, ma non generalmente moduli di driver), è possibile copiarli nel file della directory /addfiles sul CD di imaging. Ciò offre un metodo semplice per inserire lo script o altri file nella distribuzione senza modificare i file system initrd o root. Questi file non saranno tuttavia disponibili durante le fasi di avvio e di caricamento del modulo.

Il CD di avvio del processo di imaging contiene una directory denominata/addfiles in cui è possibile aggiungere i file. Devono essere collocati in questa directory sotto ai nomi di directory corrispondenti. In questo modo saranno disponibili in questa directory durante il processo di imaging.

Esempio di aggiunta di file:

  1. Per eseguire uno script personale anziché usare il normale processo di imaging, creare uno script denominato myscript.s e copiarlo sul CD di avvio. Ad esempio, /addfiles/bin/myscript.s.

    IMPORTANTE:il file dello script deve avere le terminazioni di riga LF richieste per Linux, ossia non deve contenere i caratteri di fine riga CR e LF di DOS. In altre parole non è possibile usare Notepad.exe per creare lo script, ma solo un editor di testo compatibile con Linux o Unix come TextPad.

  2. Per inserire la seguente riga nel file settings.txt, immettere:

    export IMGCMD="/bin/myscript.s"
    

    Al momento dell'esecuzione, il processo di imaging esegue /bin/myscript.s anziché usare il comando img ‑auto normale.

G.4.2 Aggiunta di file ai file system Initrd o Root

Questo è il metodo preferito per aggiornare i file delle risorse di imaging e deve essere eseguito in un ambiente Linux.

Prima di eseguire le procedure descritte di seguito, verificare di aver creato le copie di backup di tutti i file che si prevede di modificare e in particolare del file /srv/tftp/boot/initrd. Per modificare i file su un CD di imaging, è necessario usare un editor ISO o un altro processo per estrarre e sostituire il file nel file di immagine bootcd.iso.

IMPORTANTE:quando si aggiornano o si aggiungono i file e i driver Linux nei file system initrd o root, è necessario prendere nota delle modifiche apportate. I file delle risorse aggiornati forniti da Novell non contengono le modifiche personalizzate. Se la versione del kernel è stata modificata dai file delle risorse più recenti di Novell, è necessario aggiornare i driver aggiunti in precedenza richiedendo una versione più recente al produttore oppure ricompilare il driver utilizzando l'origine della versione del kernel Linux.

Per aggiungere file al file system root, è possibile usare anche il metodo per il file driverupdate descritto in Sezione G.4.3, Uso del metodo basato sul file Driverupdate.

Aggiunta a Initrd

Per modificare il file system initrd:

  1. Utilizzando un dispositivo Linux, creare la directory di lavoro e selezionarla.

  2. Per copiare initrd dal server PXE o dal CD di avvio nella nuova directory di lavoro:

    • Per PXE, copiare \tftp\boot\initrd nella directory di lavoro della workstation Linux.

    • Per il CD, estrarre initrd dalla directory /boot/i386/loader e copiarlo sul CD di avvio, quindi copiare il file initrd estratto nella directory di lavoro della workstation Linux.

  3. Per rinominare initrd in initrd.gz, immettere:

    mv initrd initrd.gz
    
  4. Per decomprimere il file initrd.gz, immettere:

    gunzip initrd.gz
    
  5. Per creare un'altra directory di lavoro da usare come punto di installazione nei passaggi successivi, immettere:

    mkdir work
    
    cd work
    
  6. Per estrarre initrd nella directory /work, immettere:

    cpio -idmuv <../initrd >/dev/null 2>&1
    
  7. Per copiare i file o il driver estratto nel file system root installato, immettere:

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

    dove percorso_personale è il percorso del file module.ko e modulo è il nome del modulo.

    Gli altri file da includere nel file system initrd devono essere copiati nella directory appropriata.

  8. Per comprimere nuovamente il file system initrd, immettere:

    find . | cpio --quiet -o -H newc > ../initrd
    
    cd ..
    
  9. Per comprimere (.zip) il nuovo file initrd, immettere:

    gzip -v9c initrd > initrd.gz
    
  10. Per rinominare initrd.gz in initrd, immettere:

    mv initrd.gz initrd
    
  11. Per copiare il file nella posizione originale:

    • Per PXE, copiare il file initrd aggiornato nella directory /tftp/boot sul server PXE.

    • Per il CD, copiare il file initrd aggiornato nella directory /boot/i386/loader sul CD di avvio.

Aggiunta a radice

Per modificare il file system root:

  1. Utilizzando un dispositivo Linux, creare la directory di lavoro e selezionarla.

  2. Per copiare initrd dal server PXE o dal CD di avvio nella nuova directory di lavoro:

    • Per PXE, copiare \tftp\boot\initrd nella directory di lavoro della workstation Linux.

    • Per il CD, estrarre root dalla directory /boot/i386/ e copiarlo sul CD di avvio, quindi copiare il file root estratto nella directory di lavoro della workstation Linux.

  3. Per rinominare root in root.gz, immettere:

    mv root root.gz
    
  4. Per decomprimere il file root.gz, immettere:

    gunzip root.gz
    
  5. Per creare un'altra directory di lavoro da usare come punto di installazione nei passaggi successivi, immettere:

    mkdir work
    
  6. Per installare il file system initrd nella directory /work, immettere:

    mount -o loop root work
    
  7. Per copiare i file o il driver aggiornato nel file system root installato, immettere:

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

    dove percorso_personale è il percorso del file module.ko e modulo è il nome del modulo.

    Gli altri file da includere nel file system initrd devono essere copiati nella directory appropriata.

  8. Per disinstallare il file system root, immettere:

    umount work
    
  9. Per comprimere (.zip) il nuovo file root, immettere:

    gzip -v9c root > root.gz
    
  10. Per rinominare root.gz in root, immettere:

    mv root.gz root
    
  11. Per copiare il file nella posizione originale:

    • Per PXE, copiare il file root aggiornato nella directory /tftp/boot sul server PXE.

    • Per il CD, copiare il file root aggiornato nella directory /boot/i386/ sul cd di avvio.

G.4.3 Uso del metodo basato sul file Driverupdate

Un altro modo per personalizzare la distribuzione di imaging di Novell consiste nell'utilizzare il meccanismo di aggiornamento dei driver incorporato in tutte le distribuzioni SUSE. Ciò comporta la modifica del file denominato driverupdate, ubicato nella directory /srv/tftp/boot sul server di imaging o nella radice (/) di un CD di avvio del processo di imaging.

Questo metodo è meno intrusivo rispetto alla modifica dei file system initrd o root. In questo caso infatti è sufficiente creare un file aggiuntivo e inserirlo nel sistema operativo usato per l'imaging al momento dell'avvio.

Sono disponibili tre tipi di operazioni di aggiornamento dei driver:

  • Installazione dei moduli del kernel o dei driver hardware

  • Installazione dei file ed esecuzione dello script

  • Inserimento dei file nel sistema operativo

Questa sezione spiega come installare i file ed eseguire uno script. Per ulteriori informazioni sugli altri due metodi, vedere “Tech Talk n. #3 - Spitting' Image” in Novell Connection Magazine. Per ulteriori informazioni, vedere "Aggiornamenti dei driver di SUSE Linux" e "Aggiunta di file al file distro "root" in questo articolo.

Nell'esempio descritto in questa sezione verrà utilizzato il programma “tree” che non è attualmente disponibile nella distribuzione di imaging e che viene installato al momento dell'avvio.

Il meccanismo di aggiornamento dei driver ricerca il file driverupdate che contiene una struttura di directory che simula quella del sistema operativo dopo che il dispositivo è stato avviato con la distribuzione ZENworks. Se presente, linuxrc lo scarica durante l'avvio e lo inserisce dinamicamente nel sistema operativo.

Il file driverupdate è un file di tipo file system che può essere di qualunque tipo; ad esempio, EXT3 o REISER. Per semplicità nel seguente esempio verrà usato il file system CRAMFS.

Per inserire il programma tree nel file driverupdate:

  1. Creare una directory di lavoro sul server di imaging, ad esempio /work.

  2. Se si sta utilizzando il file driverupdate, scaricare il file driverupdate.tgz nella directory /work, quindi eseguire il comando untar immettendo:

    mkdir work
    cd work
    wget http://www.novell.com/connectionmagazine/2005/11/download/driverupdate.tgz
    tar -xzvf driverupdate.tgz
    

    Il file driverupdate.tgz contiene la stessa struttura di directory creata in Passaggio 3.

  3. Se si creano manualmente le directory, è necessario creare la seguente struttura di directory nella directory /work:

    `-- linux
        `-- suse
            |-- i386-sles10
                |-- dud.config
                |-- inst-sys
                    `-- lib
                    `-- bin
                |-- adddir.s
    

    Il file dud.config deve contenere righe simili a quelle indicate di seguito. È opportuno mantenere le parole chiave specificando dati personali. Tuttavia, è possibile usare anche i valori presenti nell'elenco:

    UpdateName:     ZENworks 10 Patch 1
    UpdateID:       a37f92556e4dd99e
    UpdatePriority: 100
    

    Il file adddir.s deve essere uno script eseguibile contenente le seguenti righe:

    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. Per copiare il programma tree nella directory /bin, immettere:

    cp /usr/bin/tree dirstruct/linux/suse/i386-9.2/inst-sys/bin/
    
  5. Per creare il file CRAMFS, immettere:

    mkfs.cramfs work/ driverupdate
    

    Il file CRAMFS è necessario per la distribuzione SUSE.

  6. Per copiare il file driverupdate in /srv/tftp/boot, immettere:

    cp driverupdate /srv/tftp/boot
    
  7. Aggiungere le seguenti righe alla fine del file /srv/tftp/boot/settings.txt:

    # SUSE driver update
    for i in /update/[0?9]*/install/adddir.s ; do
         [ -x "$i" ] && "$i"
         rm $i
    done
    

    Ciò provoca l'esecuzione dello script adddir.s, che crea i collegamenti temporanei a tutti i nuovi file che si stanno copiando.

    È possibile che il file settings.txt contenga già queste righe.

  8. Riavviare il dispositivo abilitato per PXE.

    Dopo l'avvio del sistema operativo, il prompt della modalità di manutenzione imaging visualizza generalmente il testo "ZENworks 10 Patch 1.

  9. Eseguire il programma tree.

Dopo l'avvio, tutti i file inseriti nel file driverupdate si trovano nella directory /update del sistema operativo. Successivamente, lo script adddir.s (o il codice aggiunto al file settings.txt in Passaggio 7) crea i collegamenti temporanei nel file system radice. Tali collegamenti puntano ai file corrispondenti nella struttura della directory /update. Ciò può essere verificato eseguendo:

/# which tree
/bin/tree
/# ll /bin/tree
lrwxrwxrwx  1 root root 29 Aug 31 21:45 /bin/tree -> /update/000/inst-sys/bin/tree

Se si desidera includere semplicemente un nuovo driver hardware o modulo kernel nel sistema operativo di imaging, è più semplice copiare il file .ko nella directory /dirstruct/linux/suse/i386-9.2/modules/. Successivamente il sistema operativo carica automaticamente tutti i file .ko presenti nella directory.