Gentoo Logo

Guida a Genkernel in Gentoo Linux

Indice:

1.  Introduzione

In generale

Per gli utenti che non vogliono compilare il kernel, genkernel è uno strumento che automatizza questo processo. Può aiutare a creare un'immagine del kernel simile a quelle disponibili sui CD di installazione Gentoo, che sono progettate per rilevare automaticamente la configurazione hardware del sistema. Alcuni utenti possono anche essere interessati ad usare genkernel per quel genere di hardware che richiede una inizializzazione e un kernel funzionante prima di essere usato.

A chi si rivolge genkernel

Se si è incerti su come compilare un kernel, o semplicemente non si ha familiarità con la propria configurazione hardware, genkernel può essere molto utile. È progettato per eliminare il disagio della compilazione del kernel, e supporta in modo predefinito gran parte dell'hardware.

Tuttavia, se si conoscono i driver richiesti dal proprio sistema, è possibile ridurre ulteriormente il tempo necessario per compilare il kernel. Questo è possibile configurando genkernel in modo che compili solo i driver necessari per il proprio hardware. Spesso, il numero di driver richiesti dal proprio sistema è minore (con conseguente minore tempo di compilazione) di quello fornito con la configurazione predefinita.

Installare genkernel

Per ottenere genkernel, eseguire emerge genkernel dalla linea di comando. Consultare genkernel --help per ottenere aiuto su come usare la versione di genkernel installata nel proprio sistema.

2.  Lavorare con genkernel

Come usare genkernel

Sebbene vi siano diversi modi per eseguire genkernel, l'approccio meno intrusivo è costituito da genkernel all. Con questo comando, verrà utilizzata una configurazione generica, che funziona bene per la maggior parte dei sistemi. Come è stato già detto, questo metodo non è privo di difetti; la maggior parte dei moduli creati sono inutili per l'utente medio, e potrebbero aumentare il tempo di compilazione. Qui sotto è illustrato un approccio più efficiente, che consiste nel passare alcune determinate flag a genkernel, come root:

Codice 2.1: Eseguire genkernel (con flag)

# genkernel --splash --no-install --no-clean --menuconfig all

Il comando illustrato sopra fa in modo che genkernel crei un kernel con il supporto a bootsplash abilitato (--splash) che dovrà essere installato manualmente (--no-install). Nella preparazione dell'albero dei sorgenti del kernel, genkernel si asterrà dal cancellare qualsiasi file oggetto presente nell'albero dei sorgenti (--no-clean). Verrà infine visualizzata una utilità di configurazione strutturata in menù, che consentirà all'utente di selezionare quali moduli debbano essere compilati per il sistema --menuconfig.

Ci sono altre flag che modificano il risultato prodotto da genkernel. Ad esempio, sostituendo --no-install con la flag --install, genkernel installerà automaticamente il nuovo kernel nella directory /boot, e creerà i collegamenti simbolici necessari se verrà specificato l'opzione --symlink. La flag --mountboot consente invece a genkernel di montare automaticamente la partizione /boot, se necessario.

Ricordarsì che genkernel è progettato per rendere la compilazione del kernel semplice e non stressante. Per questo motivo, genkernel supporta diverse flag per semplificare il processo di compilazione del kernel. Per fare alcuni esempi, ci sono flag che aiutano la configurazione del kernel, mentre altre influenzano la compilazione vera e propria. Alcune flag aiutano anche il debugging del processo di compilazione. Per chi fosse interessato ad una maggiore ottimizzazione, ci sono flag che influenzano l'assemblamento, la pacchettizzazione e persino l'inizializzazione del kernel.

Il resto di questo capitolo esamina il funzionamento di varie flag, variabili di configurazione e azioni disponibili per genkernel. Per una lista più completa si prega di fare riferimento a man genkernel e ai commenti in /etc/genkernel.conf. Alcune flag hanno varianti che servono a compiere una operazione inversa. Le varianti inverse contengono il prefisso no-, e i loro effetti sono racchiusi tra parentesi quadre, [].

Flag di configurazione

Le flag di configurazione elencate qui sotto servono ad aiutare l'utente a decidere quali funzioni dovrebbero essere attivate o disattivate nel kernel prima della compilazione. Si può anche scegliere se salvare o no il file di configurazione creato durante il processo. Ecco le flag di configurazione principali:

  • --no-menuconfig: Attiva [o disattiva] il comando make menuconfig (che invoca una utilità di configurazione del kernel interattiva e strutturata in menù), prima di compilare il kernel.
  • --gconfig: Fornisce una utility di configurazione del kernel che dipende dalle librerie GTK+. Il vantaggio di questa opzione è che la maggior parte degli utenti trovano più semplice e più chiaro configurare il kernel usando questo strumento, dato che si basa sul sistema di finestre X. Lo svantaggio di questa opzione è che è necessario il sistema X per poterla utilizzare, quindi non funzionerà sulla riga di comando.
  • --xconfig: Fornisce una utility di configurazione del kernel che dipende dalle librerie QT. Il vantaggio di questa opzione è che la maggior parte degli utenti trovano più semplice e più chiaro configurare il kernel usando questo strumento, dato che si basa sul sistema di finestre X. Lo svantaggio di questa opzione è che è necessario il sistema X per poterla utilizzare, quindi non funzionerà sulla riga di comando.
  • --no-save-config: Salva [o non salva] la configurazione del kernel in un file nella directory /etc/kernels/ per un eventuale uso successivo.

flag di compilazione

Le seguenti flag di solito producono i loro effetti durante la compilazione vera e propria.

  • --kerneldir=percorso/sorgenti/: Specifica una collocazione alternativa dei sorgenti, diversa da quella predefinita (/usr/src/linux/).
  • --kernel-config=/percorso/config-file: Specifica quale file alternativo di configurazione del kernel debba essere usato, al posto di quello predefinito (/percorso/sorgenti/.config).
  • --module-prefix=/percorso/prefix-directory/: Specifica un prefisso alla directory dove verranno installati i moduli del kernel (il percorso predefinito è /lib/modules/.)
  • --no-clean: Attiva [o disattiva] il comando make clean prima di compilare il proprio kernel. Il comando make clean rimuove tutti i file oggetto e le dipendenze dall'albero dei sorgenti del kernel.
  • --no-mrproper: Attiva [o disattiva] il comando make mrproper prima della compilazione del kernel. Come il comando make clean, make mrproper rimuove tutti i file oggetto e le dipendenze dall'albero dei sorgenti del kernel. Tuttavia, sarà rimosso anche ogni precedente file di configurazione (in /percorso/sorgenti/.config o /percorso/sorgenti/.config-old.)
  • --oldconfig: invoca il comando make oldconfig, che tenta di raccogliere informazioni di configurazione per l'architettura del sistema da uno script generico in /usr/share/genkernel/. Questo è un processo non interattivo; non è previsto alcun input dell'utente. Inoltre, se --oldconfig è usato in unione con --clean, quest'ultima flag viene negata, causando l'attivazione della flag --no-clean.
  • --callback="echo hello: Chiama gli argomenti specificati (echo hello, in questo caso) dopo che il kernel e i moduli rilevanti sono stati compilati, ma prima di compilare l'immagine initrd. Questo può essere utile se si vogliono installare moduli esterni nell'immagine initrd, emergendo gli oggetti rilevanti con la funzione callback, e ridefinendo poi un gruppo di moduli genkernel.
  • --no-install: Attiva [o disattiva] il comando make install, che installa la nuova immagine del kernel, il file di configurazione, l'immagine initrd e il file System.map all'interno della partizione di boot. Anche i moduli compilati verranno installati.
  • --no-ramdisk-modules: Impedisce che i moduli vengano copiati nell'immagine initrd creata da genkernel. Questa flag è un'eccezione alla regola del prefisso no-; l'omissione di questo prefisso genera una flag non valida.
  • --all-ramdisk-modules: Copia tutti i moduli disponibili nella immagine initrd appena creata da genkernel.
  • --genzimage: Crea l'immagine initrd prima dell'immagine del kernel. (Questo trucco attualmente si applica solo ai sistemi PPC Pegasos.)

Flag del compilatore

Genkernel supporta i seguenti parametri, che vengono passati alle applicazioni importanti durante l'assemblamento del kernel. Queste flag influenzano il compilatore usato per il processo di compilazione del kernel, sebbene ad un livello più basso.

  • --kernel-cc=nomeCompiler: Questo parametro specifica il compilatore che verrà usato per compilare il kernel.
  • --kernel-ld=nomeLinker: Questo parametro specifica il linker che verrà usato per compilare il kernel.
  • --kernel-make=nomeMake: Questo parametro specifica il GNU Make alternativo che verrà usato per compilare il kernel.
  • --utils-cc=nomeCompiler: Questo parametro specifica un compilatore che verrà usato per compilare le utility di supporto.
  • --utils-ld=nomeLinker: Questo parametro specifica un linker che verrà usato per compilare le utility di supporto.
  • --utils-as=nomeAssembler: Questo parametro specifica l'assemblatore che verrà usato per compilare le utility di supporto.
  • --utils-make=nomeMake: Questo parametro specifica un GNU Make alternativo che verrà usato per compilare le utility di supporto.
  • --makeopts=-jX: Specifica il numero di thread contemporanei che la utilità make può implementare durante la compilazione del kernel (e delle utilità). La variabile 'X' è un numero che si ottiene aggiungendo 1 al numero di CPU usate dal sistema. Quindi, per un sistema con una sola CPU, la flag appropriata è -j2; un sistema con due CPU userà la flag -j3, e così via. (Un sistema con un processore che supporti la tecnologia Hyper-Threading&trade (HT), può usare la flag -j3, sempre che il supporto Symmetric Multi-Processing (SMP) sia abilitato nel kernel.)

Flag di debugging

L'uso di flag di debugging durante il processo di compilazione del kernel controlla le informazioni ottenute, nonché il modo in cui tali dati si presentano.

  • --loglevel=verblevel: Controlla il livello di verbosità delle informazioni fornite da genkernel. La variabile verblevel è un intero tra 0 e 5. Il livello '0' rappresenta un output minimale, mentre '5' fornisce tutte le informazioni possibili sulle attività di genkernel durante il processo di compilazione.
  • --logfile=/percorso/outputfile: Ignora il valore impostato nell'argomento --loglevel, e invia tutti i dati di debugging prodotti da genkernel verso lo specificato file di output, che è collocato in modo predefinito in /var/log/genkernel.log.
  • --no-color: Attiva [o disattiva] l'output colorato delle informazioni di debugging (fornite da genkernel) usando sequenze di escape.

Flag di inizializzazione

Queste flag sono usate per creare determinati effetti durante l'avvio del sistema. Alcune di esse agiscono principalmente sull'estetica, mentre altre possono essere essenziali per attivare alcune funzioni sul sistema.

  • --no-splash: Attiva [o disattiva] il supporto per framebuffer splash nell'immagine initrd prodotta da genkernel. Per sovrascrivere il tema utilizzato in modo predefinito da fbsplash, si usa --splash=TemaPreferito (dove TemaPreferito è il nome di una delle directory in /etc/splash/.)
  • --splash-res=RisoluzionePreferita: Questa flag consente di selezionare quali risoluzioni dello splash screen saranno supportate da initrd durante l'avvio del sistema. Questo è utile per due ragioni: in primo luogo, si è in grado di selezionare solo le risoluzioni dello splash screen che ci interessano per il proprio sistema; in secondo luogo, si evita l'aumento non necessario dello spazio su disco richiesto da initrd (dato che initrd non deve supportare risoluzioni non rilevanti per la propria configurazione di sistema.) Tuttavia, potrebbe essere utile omettere questa flag se si sta compilando il kernel per un CD di installazione; questo consente infatti a splash di supportare tutte le possibili risoluzioni.
  • --do-keymap-auto: Forza la selezione della mappatura della tastiera durante la sequenza di boot.
  • --lvm: Include il supporto per lo storage utilizzando il Logical Volume Management (LVM2) da binari statici, se disponibile nel sistema. I binari LVM2 (statici) che servono, se non sono disponibili vengono compilati. Assicurarsi di installare il pacchetto lvm2 con emerge lvm2 prima di abilitare questa flag, e consulta la guida Installazione di Gentoo con LVM2.
  • --dmraid: Include il supporto per DMRAID, l'utilità che crea mappature RAID usando il sottosistema device-mapper del kernel. DMRAID rileva, attiva, disattiva e mostra le proprietà dei set RAID software (ATARAID, per esempio) e delle partizioni DOS contenute.
  • --luks: Include il supporto per Linux Unified Key Setup o LUKS. Permette di usare un dispositivo criptato tramite LUKS contenente il filesystem di root. Sul bootloader verrà quindi impostato quel dispositivo criptato come valore di crypt_root (e real_root sarà il dispositivo non criptato creato da LUKS).
  • --disklabel: Aggiunge il supporto alle etichette dei dischi e agli UUID al proprio initrd.
  • --iscsi: Aggiunge il supporto per iSCSI al proprio initrd.
  • --multipath: Aggiunge il supporto per Multipath al proprio initrd.
  • --linuxrc=/percorso/linuxrc: Specifica un linuxrc — creato dall'utente; si tratta di uno script che viene inizializzato durante la fase di avvio del kernel, prima del processo di boot vero e proprio. (Uno script linuxrc predefinito dovrebbe trovarsi nella directory /usr/share/genkernel/.) Questo script consente di avviare un kernel leggero e modularizzato, caricando (come moduli) i driver che sono necessari al sistema.
  • --cachedir="/percorso/directory/alternativa/: Sostituisce la collocazione predefinita della cache usata durante la compilazione del kernel.
  • --tempdir=/percorso/nuova/tempdir/: Specifica la collocazione dei file temporanei usati da genkernel durante la compilazione del kernel.
  • --unionfs: Include il supporto per lo Unification File System nell'immagine initrd.

Altre flag

Le flag elencate qui sotto sono supportate da genkernel, ma non fanno parte di nessuna delle altre categorie:

  • --mountboot: Rileva se la directory /boot deve essere montata su una partizione separata, oppure no. Controllerà poi lo script /etc/fstab per istruzioni su come montare la partizione di boot su un filesystem (se necessario).
  • --kernname=NickName: Consente di modificare il nome dell'immagine del kernel e di quella initrd nella directory /boot/, cosicché le immagini prodotte si chiameranno kernel-NickName-versione e initramfs-NickName-versione.

Azioni possibili

Un'azione dice a genkernel cosa produrre. Attualmente, sono supportate le seguenti azioni:

  • all: Produce tutti gli stage — l'immagine initrd, quella del kernel e i moduli.
  • bzImage: Produce solo l'immagine del kernel
  • kernel: Produce solo l'immagine del kernel e i moduli
  • initramfs: Produce solo l'immagine initramfs/ramdisk
  • ramdisk: Produce solo l'immagine initramfs/ramdisk

La prima azione, all, è raccomandata per la maggior parte degli utenti, dato che produce gli stage necessari per avere un kernel funzionante. È importante ricordare che un'azione dice semplicemente a genkernel cosa produrre, non cosa installare.

Configurazione del bootloader

Per permettere a genkernel di funzionare con il proprio bootloader, è necessario effettuare tre o quattro modifiche al file di configurazione di quest'ultimo.

  1. Aggiungere real_root=/dev/hda3, per esempio, ai parametri da fornire all'immagine del kernel se /dev/hda3 contiene la partizione di root.
  2. Se si stà utilizzando splash, è necessario fornire un modalità video corretta come vga=0x317 ai parametri da passare al kernel ed aggiungere splash=verbose o splash=silent, a seconda del grado di verbosità che si richiede al bootloader.
  3. Aggiungere le informazioni initrd a seconda di come il bootloader le richieda: per maggiori informazioni su come rendere il bootloader in grado di usare initrd, consultare il capitolo Configurazione del Bootloader nel Manuale Gentoo.

3.  Opzioni di configurazione

Modificare /etc/genkernel.conf

Passare le flag a genkernel da linea di comando può essere macchinoso, specialmente quando se ne hanno una dozzina:

Codice 3.1: Eseguire genkernel (con molte flag)

# genkernel --loglevel=5 --no-color --no-mrproper --clean --splash \
--kerneldir=/path/to/alternate/kernel/sources --install --menuconfig \
--kernel-config=/path/to/preferred/configfile --save-config --mountboot all

Per fortuna, esiste un file di configurazione dove può essere impostata (o modificata) a proprio piacimento gran parte delle opzioni principali: /etc/genkernel.conf. Ecco una sintesi delle opzioni più importanti:

  • MENUCONFIG=[yes|no]: Questa opzione equivale alla flag --menuconfig usata da genkernel, che fa sì che venga utilizzato il comando make menuconfig per invocare una utilità di configurazione del kernel basata sulla linea di comando. Per invocare automaticamente questa utilità durante la configurazione del kernel attraverso questo script, impostare l'opzione su 'yes'; altrimenti, scegliere 'no'.
  • CLEAN=[yes|no]: Impostare questa opzione su 'yes' equivale alla flag --clean usata da genkernel, e invoca il comando make clean per rimuovere tutti i file oggetto e le dipendenze dall'albero dei sorgenti del kernel. Impostare quasta opzione su 'no' crea un effetto a cascata — equivale alla flag --no-clean di genkernel, che disabilita il comando make clean e implica la flag --no-mrproper — annullando in pratica il comando make mrproper.
  • MRPROPER=[yes|no]: Impostare questa opzione su 'yes' equivale alla flag --mrproper usata da genkernel, e invoca il comando make mrproper, che ripulisce l'albero dei sorgenti del kernel da qualunque file di configurazione. Selezionare 'no' equivale invece alla flag --no-mrproper, che disabilita il comando make mrproper.
  • MOUNTBOOT=[yes|no]: Impostare questa opzione su 'yes' equivale alla flag --mountboot, che monta automaticamente la directory /boot/ durante la compilazione (se necessario). Se la directory /boot/ si trova su una partizione separata, è consigliabile attivare questa opzione; sarà un passo (essenziale) in meno da ricordare dopo.
  • SAVE_CONFIG=[yes|no]: Dopo la configurazione del kernel, le opzione selezionate vengono salvate come .config nell'albero del sorgenti del kernel. Questo script può essere sovrascritto nella compilazione del kernel successiva, o addirittura può essere cancellato dall'albero dei sorgenti. Scegliere 'yes' qui equivale alla flag --save-config, che salva tutte le opzioni selezionate durante la configurazione del kernel in uno script nella directory /etc/kernels/. Scegliere 'no' mantiene lo status quo.
  • USECOLOR=[yes|no]: Impostare questa opzione su 'yes' equivale alla flag --color, che colora l'output di genkernel per facilitare il debugging (quando necessario.)
  • LOGLEVEL=[0|1|2|3|4|5]: Questa opzione serve a regolare la verbosità dell'output prodotto da genkernel — impostando questa opzione a '0', con --loglevel=0 sarà soppresso ogni output prodotto da genkernel; impostare questa opzione a '5', con --loglevel=5, fornisce all'utente tutto l'output prodotto da genkernel.

Nota: Ulteriori opzioni sono descritte in /etc/genkernel.conf.

Scegliendo le opzioni appropriate in /etc/genkernel.conf, si può ridurre il numero delle flag passate a genkernel dalla riga di comando:

Codice 3.2: Eseguire genkernel (con flag), dopo aver configurato genkernel.conf

# genkernel --splash --kerneldir=/path/to/alternate/kernel/sources \
--kernel-config=/path/to/preferred/configfile --install all

Con entrambi i metodi si ottengono risultati identici, ma il secondo ha la maggior parte delle opzioni salvate in uno script che può essere modificato in un secondo tempo.

4.  Avvio da rete con genkernel

Avvio da rete con un CD di Installazione

L'utilità genkernel può produrre immagini del kernel e di initrd che supportino l'avvio da rete, o netboot. Con un po' di fortuna, si dovrebbe riuscire ad avviare da rete qualsiasi computer recente, entrando nell'ambiente fornito dal CD di installazione.

La magia sta nello script linuxrc di genkernel: esso proverà ad effettuare il netmount del CD di Installazione usando NFS. Fatto ciò, gli init scripts del CD di Installazione potranno assumere il controllo, come se il CD fosse presente localmente.

Produrre immagini del kernel e initrd con supporto per l'avvio da rete

Per abilitare il supporto all'avvio da rete, includere le seguenti opzioni durante la configurazione del kernel:

Avvertenza: Il supporto all'avvio da rete con genkernel è sperimentale e potrebbe contenere bug.

Per prima cosa, l'immagine del kernel deve includere i driver per le proprie schede di rete, o Network Interface Cards (NIC). Normalmente, i driver per l'avvio da rete è essenziale avere questi driver compilati direttamente all'interno dell'immagine del kernel, e non come moduli.

Codice 4.1: Configurare un kernel della serie 2.6.x affinché supporti il proprio driver di rete

Device Drivers --->
   Networking Support --->
      Ethernet (10 or 100Mbit)  --->
         [*] Ethernet (10 or 100Mbit)
         <*>   il driver per la propria schede di rete
(Assicurarsi di selezionare <*> e non <M>)

In secondo luogo, si suggerisce di attivare le opzioni IP: kernel level autoconfiguration e IP:DHCP support. Questo rende le cose più semplici, dato che gli indirizzi IP e il percorso NFS del CD di Installazione possono essere configurati su un server DHCP. Certo, questo significa che la linea di comando del kernel rimarrà la stessa per ogni macchina — il che è molto importante nell'etherbooting.

Codice 4.2: Configurare un kernel della serie 2.6.x affinché supporti DHCP

Device Drivers --->
   Networking Support --->
      Networking options
         [*] TCP/IP networking--->
         [*]   IP: kernel level autoconfiguration
         [*]     IP: DHCP support
(Queste opzioni dicono al kernel di inviare una richiesta DHCP all'avvio.)

Inoltre, si dovrebbe abilitare SquashFS, dato che la maggior parte dei moderni CD di Installazione Gentoo lo richiedono. Il supporto per SquashFS non è incluso nell'albero dei sorgenti del kernel generico. Per abilitare SquashFS, applicare le patch necessarie al kernel generico, oppure installare gentoo-sources.

Codice 4.3: Configurare il kernel affinché supporti SquashFS

File systems--->
   Miscellaneous filesystems --->
      [*] SquashFS 2.X - Squashed file system support
 

Una volta completato il processo di compilazione, creare un tarball compresso (tar.gz) che contenga i moduli del kernel. Questo passaggio è necessario solo se la versione del proprio kernel non corrisponde alla versione dell'immagine del kernel sul CD di Installazione.

Codice 4.4: Creare un tarball compresso contenente i moduli del kernel

(Creare un file tar.gz contenente tutti i moduli)
# cd /
# tar -cf /tmp/modules-X.Y.Z.tar.gz /lib/modules/X.Y.Z/

A seconda del meccanismo usato dall'avvio da rete, si dovranno eseguire alcuni dei seguenti passaggi:

Codice 4.5: Creare un'immagine di boot

(Creare un'immagine di boot da rete)
# emerge mknbi
# cd /boot
# mkelf-linux -params="root=/dev/ram0 init=/linuxrc ip=dhcp" kernel... initrd... > etherboot.img

(Creare un'immagine TFTP OpenBoot / SPARC64)
# emerge sparc-utils
# cd /boot
# elftoaout kernel... -o kernel.aout
# piggyback64 kernel.aout System.map-... initrd-...
# mv kernel.aout openboot.img
(Questa è un'immagine di boot)

(PXE non necessita di ulteriori passaggi, il kernel e initrd possono essere usati così come sono.)

Per finire, copiare questo kernel sul proprio server TFTP. I dettagli dipendono dall'architettura e non rientrano negli scopi di questa guida. Si prega di fare riferimento alla documentazione per la propria piattaforma.

Configurazione NFS

Per configurare una condivisione NFS che contenga il CD di Installazione, usare il loop device per montare l'immagine ISO, e poi copiare il contenuto del CD all'interno della condivisione NFS. In più, gli script initrd di genkernel estrarranno tutti i files tar.gz che si trovano nella directory /nfs/livecd/add/. Tutto ciò che si deve fare è copiare l'archivio modules-X.Y.Z.tar.gz nella directory /nfs/livecd/add/.

Codice 4.6: Preparare la condivisione NFS

(Si presuppone che /nfs/livecd sia una condivisione NFS esportata)
# mount /tmp/gentoo-livecd.iso /mnt/cdrom -o loop
# cp -p /mnt/cdrom /nfs/livecd
# umount /mnt/cdrom

(Copiare modules.tar.gz in /add)
# mkdir /nfs/livecd/add
# cp /tmp/modules-X.Y.Z.tar.gz /nfs/livecd/add

Configurazione DHCP

Le immagini netboot chiederanno al proprio server DHCP un indirizzo IP e un parametro root-path. Entrambi possono essere specificati usando un indirizzo MAC per identificare le macchine:

Codice 4.7: Esempio configurazione client dhcpd.conf

...

host netbootableMachine {
         hardware ethernet 11:22:33:44:55:66;
         fixed-address 192.168.1.10;
         option root-path "192.168.1.2:/nfs/livecd";
}
# Qui, 192.168.1.2 è il server NFS
# Mentre 192.168.1.10 sarà l'indirizzo IP della macchina avviata da rete

...

Istruzione per l'avvio da rete

L'avvio da rete di per sé dipende molto dalla piattaforma. La parte importante sta nello specificare i parametri ip=dhcp e init=/linuxrc sulla riga di comando del kernel, visto che questo attiverà l'interfaccia di rete e dirà agli script initrd di montare il CD di Installazione via NFS. Ecco alcuni consigli specifici per le diverse piattaforme:

Codice 4.8: Istruzioni per l'avvio da rete

# Etherboot - inserire il disco etherboot nel drive e riavviare
# La riga di comando del kernel è stata specificata quando è stata prodotta l'immagine

# Sparc64 - Selezionare Stop-A nel prompt di boot
ok boot net ip=dhcp init=/linuxrc

# PXE - Configurare pxelinux (parte di syslinux), poi creare un file pxelinux.cfg/default con queste righe:

DEFAULT gentoo
TIMEOUT 40
PROMPT 1

LABEL gentoo
    KERNEL kernel-X.Y.Z
    APPEND initrd=initrd-X.Y.Z root=/dev/ram0 init=/linuxrc ip=dhcp

5.  Avviare un'immagine initramfs creata con genkernel

Introduzione

Se hai creato un'immagine initramfs con genkernel dovresti prendere in considerazione le varie opzioni che si possono (o si devono) definire nella configurazione del proprio bootloader. Le più comuni sono state aggiunte a questa guida.

Attivare il supporto a LVM o al RAID software

Se il tuo sistema usa LVM o il RAID software dovresti sicuramente aver creato l'immagine initramfs usando le opzioni --lvm e --mdadm. Tuttavia non dimenticarti che occorre abilitare anche il supporto in fase di boot. Ciò può essere fatto usando le opzioni dolvm e domdadm.

Codice 5.1: Attivare il supporto a LVM e/o al RAID software

# Esempio per GRUB 1.x
title Gentoo Linux
root (hd0,0)
kernel /vmlinuz root=/dev/md3 dolvm domdadm
initrd /initramfs-genkernel-x86_64-3.4.3

Effettuare il boot in modalità singolo utente

Se per qualche ragione il boot fallisce è possibile ripristinare il sistema riavviandolo in modalità singolo utente. In questo modo verranno avviati solo i servizi veramente necessari e poi verrà resa disponibile una shell di ripristino con privilegi di root.

Codice 5.2: Effettuare il boot in modalità singolo utente

# Esempio per GRUB 1.x
title Gentoo Linux
root (hd0,0)
kernel /vmlinuz root=/dev/md3 init_opts=S
initrd /initramfs-genkernel-x86_64-3.4.3

6.  Conclusione

Automatizzare o non automatizzare?

Lo scopo di genkernel è quello di fornire un'alternativa (più facile) al metodo tradizionale di compilazione del kernel. Come sempre, si può scegliere se si vuole automatizzare il processo di compilazione del kernel, oppure no.



Stampa

Aggiornato il 29 giugno 2012

La versione originale di questo documento non è più mantenuta

Oggetto: Questa guida si propone di descrivere tutte le funzioni fornite da genkernel.

Tim Yamin
Autore

Jimi Ayodele
Revisione

Thomas Seiler
Supporto NFS

Joshua Saddler
Redazione

Sebastian Pipping
Redazione

Dario Mèndez
Traduzione

Cristiano Chiucchiolo
Traduzione

Andrea Venino
Traduzione

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.