Si applica a SUSE Linux Enterprise Server 12

23 Distribuzione automatizzata delle immagini precaricate

Con KIWI sarà possibile creare immagini del sistema operativo. Questo capitolo spiega come distribuire un'immagine di sistema su un computer client vuoto. A questo scopo, è necessario creare un'immagine di precaricamento contenente un'immagine RAW avviabile. Questo file contiene due componenti importanti: una tabella delle partizioni e il sistema operativo vero e proprio. Questa immagine RAW viene scritta nel disco rigido vuoto e il sistema operativo si estende al restante spazio su disco al primo avvio.

Per informazioni su come creare questa immagine, vedere http://doc.opensuse.org/projects/kiwi/doc/. Quando si crea l'immagine ISO, è possibile trovare il file RAW nella directory di destinazione. Ci sono molti modi per trasferire un'immagine raw su un disco.

  • Connettere il disco ad un server di distribuzione e copiare l'immagine nel dispositivo raw.

  • Fornire l'immagine raw tramite un server HTTP o FTP e trasferirla sul disco del computer client.

  • Creare un'immagine netboot per ottenere l'immagine e trasferirla sul disco. Questo metodo è valido per una distribuzione di massa.

  • Avviare un disco di ripristino ed eseguire manualmente il dump dall'immagine di ripristino.

Per un avvio rapido è consigliabile utilizzare uno dei metodi descritti nella Sezione 23.1, «Distribuzione manuale del sistema da un'immagine di ripristino».

23.1 Distribuzione manuale del sistema da un'immagine di ripristino

Distribuzione con file ISO generato da KIWI:
  1. Masterizzare l'immagine ISO ottenuta dal processo di creazione di KIWI sul CD/DVD.

  2. Eseguire l'avvio da questo supporto sul computer client.

  3. Selezionare il disco rigido per l'installazione.

  4. Riavviare il computer client ed effettuare l'avvio dal disco rigido.

Distribuzione su sistema di ripristino:
  1. Avviare il computer client con un sistema di salvataggio. Tali sistemi sono disponibili su tutti i CD o DVD di installazione di SUSE.

  2. Eseguire il login come root. Non immettere la password.

  3. Configurare la rete. Se nella rete è disponibile DHCP, sarà sufficiente il comando ifup-dhcp eth0. Se questa operazione deve essere eseguita manualmente, utilizzare il comando ip per configurare la rete. L'output che avvia DHCP fornisce inoltre l'indirizzo IP del computer.

  4. Rimanere in ascolto su una porta inutilizzata della rete come 1234 e trasferire i dati in entrata al disco utilizzando il seguente comando:

    netcat -l -p 1234 > /dev/sda
  5. Sul server di imaging, inviare l'immagine raw al computer client utilizzando il comando:

    netcat <IP of client> 1234 < $HOME/preload_image/<image_name>
  6. Dopo il trasferimento dell'immagine, rimuovere il sistema di salvataggio dall'unità CD o DVD e arrestare il computer client. Al riavvio, si dovrebbe avviare il boot loader GRUB sul client e il primo sistema firstboot dovrebbe assumere il controllo.

23.2 Distribuzione automatizzata con PXE Boot

Quando si effettuano più installazioni di un sistema operativo su hardware simile, è utile dedicare un po' di tempo alla preparazione di una distribuzione di massa del sistema operativo per ridurre al minimo il tempo necessario per l'effettiva distribuzione. Tale processo è descritto in questo capitolo. L'obiettivo è semplicemente collegare un computer, collegarlo alla rete, effettuare un'operazione di avvio dalla rete e attendere che il computer si arresti.

Per completare questo task, è necessario effettuare le seguenti azioni:

Configurare un server di avvio e di installazione

È necessario un computer dedicato, che dovrebbe essere preparato per offrire avvio PXE nonché un server ftp o Web per fornire un'immagine di precaricamento. È consigliabile fornire al computer sufficiente memoria in modo che possa contenere tutti i dati necessari all'installazione. Per un'installazione di default sono necessari almeno 4 GByte di memoria. Tutti i task necessari possono essere eseguiti con SUSE Linux Enterprise Server. Per ulteriori informazioni, vedere Sezione 23.2.1, «Configurare un server di avvio e di installazione».

Preparazione di un'immagine precaricata

L'installazione effettiva viene effettuata copiando un'immagine non elaborata del sistema operativo sul nuovo disco rigido. È necessario preparare e verificare con cura tutte le funzioni e le impostazioni. Per fornire questa immagine, è possibile usare KIWI (disponibile nell'SDK del sistema operativo SUSE Linux Enterprise). Ulteriori informazioni sulla creazione di un'immagine con KIWI sono disponibili all'indirizzo http://doc.opensuse.org/projects/kiwi/doc/. Per ulteriori dettagli sui requisiti dell'immagine precaricata, consultare Sezione 23.2.2, «Creazione di un'immagine di precaricamento».

L'SDK che include KIWI è un prodotto aggiuntivo per SUSE Linux Enterprise ed è disponibile per il download da http://download.suse.com/. Cercare SUSE Linux Enterprise Software Development Kit.

Creazione di un sistema iniziale per la distribuzione

Per effettuare questo task, è necessario avere delle conoscenze di Linux. Per una descrizione su come effettuare questa operazione utilizzando un'installazione di esempio, vedere Sezione 23.2.3, «Creazione di un sistema iniziale per distribuire un'immagine di precaricamento».

Configurazione del server di avvio per la distribuzione automatica

L'avvio PXE deve essere istruito per avviare il sistema di installazione, che prenderà invece l'immagine precaricata dal server e la copierà sul disco rigido.

23.2.1 Configurare un server di avvio e di installazione

Per eseguire questo task dopo l'installazione di SUSE Linux Enterprise Server, è necessario effettuare quattro passaggi:

  1. Configurare l'origine dell'installazione come descritto nella Sezione 14.2, «Configurazione del server contenente le origini dell'installazione». Scegliere un server di rete HTTP o FTP.

  2. Configurare un server TFTP per la memorizzazione dell'immagine di avvio (questa immagine verrà creata in un passaggio successivo). Questo passaggio viene descritto nella Sezione 14.3.2, «Configurazione di un server TFTP».

  3. Configurare un server DHCP per l'assegnazione degli indirizzi IP a tutti i computer e la trasmissione dell'ubicazione del server TFTP al sistema di destinazione. Questo passaggio viene descritto nella Sezione 14.3.1, «Configurazione di un server DHCP».

  4. Preparare l'avvio PXE per il server di installazione. Questo passaggio è descritto dettagliatamente nella Sezione 14.3.3, «Uso dell'avvio PXE».

Si noti che il processo effettivo di installazione risulta molto più veloce se il computer dispone di memoria sufficiente per contenere l'immagine di precaricamento. Anche l'uso di Gigabit Ethernet rende il processo di distribuzione significativamente più veloce rispetto alle reti più lente).

23.2.2 Creazione di un'immagine di precaricamento

Il processo di creazione di immagini con KIWI viene descritto in http://doc.opensuse.org/projects/kiwi/doc/. Tuttavia, per creare un'immagine utile per la distribuzione di massa, è necessario tener conto di varie considerazioni:

  • Una tipica immagine di precaricamento, sarà del tipo seguente:

    <type primary="true" filesystem="btrfs" boot="oemboot/suse-SLES12">vmx</type>
  • Durante l'impostazione di un'immagine di precaricamento, il processo di creazione dell'immagine viene eseguito più volte. Gli archivi necessari per creare l'immagine devono essere disponibili sul computer locale.

  • In relazione all'utilizzo del precaricamento, sarà necessario configurare attentamente firstboot. Ulteriori dettagli su firstboot sono disponibili nel Capitolo 20, Distribuzione di preinstallazioni personalizzate. Con questo metodo è anche possibile richiedere all'utente di eseguire la configurazione iniziale durante il primo avvio del sistema.

  • È possibile configurare numerose funzioni aggiuntive nell'immagine, come l'aggiunta di archivi di aggiornamento o l'esecuzione di un aggiornamento al momento dell'avvio iniziale. È tuttavia impossibile descrivere tutte le opzioni in questo documento. Inoltre, a seconda dei requisiti, occorre tenere presente che per creare un'immagine di precaricamento, è necessario possedere conoscenze approfondite sul sistema di imaging KIWI e sulle numerose altre tecnologie usate in SUSE Linux Enterprise Server.

L'immagine effettiva da distribuire deve essere disponibile sul server FTP or HTTP fornito sul server di installazione.

23.2.3 Creazione di un sistema iniziale per distribuire un'immagine di precaricamento

Per eseguire una distribuzione automatica, è necessario avviare un sistema Linux iniziale sul computer di destinazione. Durante un'installazione tipica, il kernel e il file system ram iniziale vengono letti da alcuni supporti di avvio e avviati dal Bios. La funzionalità necessaria può essere implementata nel file system RAM che funge da sistema iniziale insieme al kernel.

Le funzioni principali che devono essere fornite dal sistema iniziale sono l'abilitazione dell'accesso al disco rigido e la messa in disponibilità della connessione di rete. Entrambe queste funzioni dipendono dall'hardware che si prevede di utilizzare per la distribuzione. Benché sia teoricamente possibile creare un sistema iniziale completamente nuovo, per semplificare questo task è possibile anche modificare il file system RAM iniziale usato dal computer durante l'avvio.

La seguente procedura è solo un esempio di come creare il file system RAM iniziale necessario:

  1. Eseguire un'installazione standard di SUSE Linux Enterprise Server sul sistema di destinazione.

  2. Installare il pacchetto busybox nel sistema.

  3. Creare un nuovo file system RAM con il seguente comando:

    mkinitrd -f busybox -D eth0

    Si noti che eth0 rappresenta il dispositivo Ethernet a cui è collegato il cavo di rete. Il parametro -f busybox aggiunge il busybox binario multichiamata al file system RAM. In seguito a questa operazione molti comandi UNIX standard saranno disponibili nel sistema.

  4. Copiare il nuovo file system RAM e il kernel nel server di avvio con il comando:

    scp /boot/initrd /boot/vmlinuz pxe.example.com:

    Sostituire pxe.example.com con il nome del server di avvio locale o dell'indirizzo IP.

  5. Accedere al bootserver come utente root e creare una directory in cui sia possibile modificare il file system RAM:

    mkdir ~/bootimage
  6. Modificare la directory di lavoro impostandola sulla directory indicata tramite il comando cd ~/bootimage.

  7. Decomprimere il file system RAM iniziale copiato in precedenza con il comando:

    zcat ../initrd | cpio -i
  8. Modificare il file run_all.sh.

  9. Cercare la riga seguente, eliminarla ed eliminare il resto del file:

    [ "$debug" ] && echo preping 21-nfs.sh 
  10. Aggiungere le seguenti righe al termine del file run_all.sh:

    [ "$debug" ] && echo preping 92-install.sh
    [ "$debug" ] && echo running 92-install.sh
    source boot/92-install.sh
    [ "$modules" ] && load_modules
         
  11. Creare un nuovo script boot/92-install.sh con il seguente contenuto:

    #!/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
    
  12. Se si desidera visualizzare una shell di debug prima dello spegnimento del computer, rimuovere il segno di commento davanti a /bin/bash.

  13. Rendere lo script eseguibile con il comando chmod 755 boot/92-install.sh.

  14. Creare un nuovo file system RAM iniziale con i comandi:

    mkdir -p /srv/tftpboot
    find . | cpio --quiet -H newc -o | gzip -9 -n > \
    /srv/tftpboot/initrd.boot
  15. Copiare il kernel in questa directory:

    cp ../vmlinuz /srv/tftpboot/linux.boot

Il file system RAM iniziale è ora pronto per ricevere due nuovi parametri della riga di comando del kernel. Il parametro rawimage=<URL> viene utilizzato per identificare l'ubicazione dell'immagine di precaricamento. È possibile utilizzare qualsiasi URL comprensibile da parte di wget. Il parametro rawdevice=<device> viene utilizzato per identificare il dispositivo di blocco per il disco rigido sul computer di destinazione.

23.2.4 Configurazione del server di avvio

La configurazione del server di avvio viene descritta nei particolari in vari capitoli differenti, elencati nella Sezione 23.2.1, «Configurare un server di avvio e di installazione». Questa sezione fornisce un elenco di controllo con i passaggi necessari per configurare il sistema.

  • Configurare un server DHCP. La sottorete in cui sono installati i computer necessita delle righe addizionali:

    filename "pxelinux.0";
    next-server 192.168.1.115;

    In questo esempio 192.168.1.115 è l'indirizzo ip del server PXE pxe.example.com.

  • Configurare un server PXE come descritto nella Sezione 14.3.3, «Uso dell'avvio PXE». Quando si modifica /srv/tftpboot/pxelinux.cfg/default, aggiungere le voci seguenti:

    default bootinstall
    label bootinstall
      kernel linux.boot
      append initrd=initrd.boot \
      rawimage=ftp://192.168.1.115/preload/preloadimage.raw rawdevice=/dev/sda
  • Configurare un server ftp e copiare l'immagine di precaricamento preparata in /srv/ftp/preload/preloadimage.raw.

Verificare l'impostazione avviando il sistema di destinazione utilizzando l'avvio di rete PXE. In tal modo l'immagine di precaricamento preparata verrà copiata automaticamente sul disco rigido e al termine il computer si spegnerà.