Gentoo Linux Genkernel Guide

Contenuti:

1.Introduzione

Introduzione 

Genkernel è progettato per permettere agli utenti che non hanno mai compilato un kernel prima d'ora di ottenere un'impostazione simile a quella usata dal LiveCD di Gentoo, in grado di rilevare automaticamente l'hardware.

Alcuni utenti possono anche essere interessati ad usare genkernel per quel genere di hardware che richiede un inizializzazione e un kernel funzionante prima di essere usato. Questo perchè genkernel compila automaticamente i moduli del kernel, permettendo così all'hardware di essere caricato con particolari parametri che ne permetteranno l'uso.

Quando scegliere genkernel 

Genkernel è una buona scelta per coloro che non usano compilare il proprio kernel o per chi non è sicuro della propria configurazione hardware.

Dal momento che genkernel è stato progettato per usare una configurazione generica che dovrebbe essere in grado di supportare la maggior parte dell'hardware in commercio - ad ogni modo, un kernel compilato manualmente è molto più snello perchè fornito esclusivamente di ciò che è necessario.

Genkernel inoltre, non supporta ancora l'avvio del sistema risiedente in partizioni configurate con LVM2/EVMS2. Nel frattempo è consigliato usare un kernel compilato manualmente.

Ottenere genkernel 

È possibile ottenere genkernel semplicemente eseguendo emerge genkernel. Qual'ora si stiano utilizzando pacchetti binari (come nel caso della GRP) è bene utilizzare il parametro -k per emergere. Dal momento che i GRP sono meno aggiornati, i parametri risulteranno differenti. Per maggiori informazioni, è possibile consultare il Gentoo Handbook e l'output del comando genkernel --help.

Piattaforme supportate 

La versione attuale di genkernel (3.0.2) dovrebbe supportare pienamente le seguenti piattaforme: alpha, amd64, parisc, parisc64, ppc, ppc64, sparc, sparc64, and x86. Qual'ora si dovesse scoprire un bug nel codice di supporto, e non in genkernel, sarebbe una buona idea fare rapporto del bug nel Gentoo Bugzilla.

2.Uso di genkernel

Introduzione 

Genkernel è progettato per funzionare in tre modalità:

  • modalità "all": questa modalità creerà un immagine del kernel e un initrd
  • modalità "kernel": questa modalità crea esclusivamente l'immagine del kernel
  • modalità "initrd": questa modalità crea esclusivamente l'initrd

Alla maggior parte degli utenti sarà sufficiente usare la modalità "all", che include la modalità "kernel" e la modalità "initrd". Nota: attualmente le modalità "kernel" e "initrd" non sono altro che un alias alla modalita "all", motivo per il quale non hanno ancora alcun effetto particolare.

Nonostante genkernel sia principalmente pensato per semplificare il processo di compilazione è comunque provvisto di diversi parametri che permettono di personalizzare il modo in cui il kernel viene compilato o configurato.

Parametri del compilatore di genkernel 

Genkernel supporta i seguenti parametri, che verranno forniti alle applicazioni competenti al momento di assemblare il kernel:

  • --kernel-as=nomeAssembler: Questo parametro specifica l'assemblatore che verrà usato per compilare il kernel.
  • --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-as=nomeAssembler: Questo parametro specifica l'assemblatore che verrà usato per compilare le utility di supporto.
  • --utils-cc=someCompiler: 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-make=nomeMake: Questo parametro specifica un GNU Make alternativo che verrà usato per compilare le utility di supporto..
  • --makeopts=-jJobs: Questo parametro specifica le opzioni da fornire a GNU Make durante la compilazione di utility e kernel.

Parametri per il kernel 

Genkernel supporta i seguenti parametri, alcuni dei quali possiedono equivalenti --no-opzione compilazione del kernel:

  • --callback="echo Ciao": Questa routine richiama il comando specificato come argomento dopo che il kernel e i suoi moduli sono stati compilati; ma prima che l'initrd venga costruito. Questo risulta molto utile quando è necessario installare moduli esterni nell'initrd emergendoli utilizzando la chiamata e ridefinendo il gruppo dei moduli di Genkernel.
  • --no-clean: Questo parametro esegue o non esegue make clean prima di compilare il kernel. Questo comando comporta la rimozione di tutti i file oggetto e dipendenze.
  • --no-mrproper: Questo parametro esegue o non esegue make mrproper prima di compilare il kernel. Questo comando comporta la rimozione di tutti i file oggetto, dipendeze e configurazione.
  • --kerneldir=/directory/dei/sorgenti: Questo parametro permette di specificare una posizione alternativa per i sorgenti del kernel, anzichè la directory predefinita /usr/src/linux.
  • --kernel-config=/directory/del-file/config: Questo parametro permette di usare un file di configurazione personale anzichè il file predefinito /directory/dei/soregenti/.config.
  • --no-bootsplash: Questo parametro aggiunge o non aggiunge il supporto al bootsplash nell'initrd. Non tutte le architetture e i kernel supportano questa funzione.
  • --no-menuconfig: Questo parametro avvia o non avvia la configurazione del kernel tramite un interfaccia a menu dopo che make oldconfig è stato eseguito.
  • --no-initrdmodules: Questo parametro disattiva la copia dei moduli compilati all'interno dell'initrd.
  • --no-install: Questo parametro installa o non installa kernel, moduli e initrd una volta terminata la compilazione.

Parametri vari di genkernel 

Genkernel supporta inoltre alcuni parametri che non sono classificabili all'interno delle due categorie precedenti:

  • --arch-override=nomeArchitettura: Questo parametro permette di specificare un architettura da usare in sostituzione a quella rilevata da genkernel, qualora la rilevazione automatica fallisca (si consiglia in questo caso di fare rapporto sul bug) o si desideri effettuare un cross-compile
  • --busybox-config=/directory/del-file/busybox-config: Questo parametro permette di specificare un file di configurazione per busybox in sostituzione a quello predefinito.
  • --busybox-bin=/directory/di/busybox-binary.tar.bz2: L'uso di questa opzione consente di utilizzare l'archivio specificato anzichè compilare il binario busybox al momento. Si prega di notare che busybox deve essere compilato staticamente.
  • --minkernpackage=/directory/di/vostrokernel.tar.bz2: Questo parametro crea un archivio compresso del kernel, chiamato kernel e uno dell'initrd, chiamato initrd. All'interno dell'archivio non verranno contenute informazioni sulle directory o moduli.

Esecuzione di genkernel 

Per avviare genkernel è sufficiente digitare genkernel e i parametri desiderati come root. Ad esempio:

Esempio 1: Eseguire genkernel

# genkernel --menuconfig --no-clean --no-install --bootsplash all
(Produrrà un kernel, richiederà una configurazione manuale,
eviterà la rimozione dei file oggetto, abiliterà il supporto per
bootsplash ma non installerà nulla.)

Se si desidera che genkernel installi il kernel, è necessario assicurarsi che la partizione /boot sia montata - le ultime versioni di genkernel monteranno la partizione automaticamente se la variabile MOUNTBOOT è impostata su "yes" nel file /etc/genkernel.conf.

Esempio 2: Montaggio manuale della partizione /boot

(Se è presente in /etc/fstab:)
# mount /boot
(... altrimenti per montare una partizione di un disco IDE:)
# mount /dev/hda1 /boot
(... e di un disco SCSI:)
# mount /dev/sda1 /boot

Impostare genkernel per funzionare con il proprio bootloader 

Per permettere a genkernel di funzionare con il proprio bootloader, è necessario effettuare qualche modifica alla configurazione di quest'ultimo.

  1. Aggiungere root=/dev/ram0 einit=/linuxrc ai parametri da fornire all'immagine del kernel
  2. Aggiungere real_root=/dev/hda3, per esempio, ai parametri da fornire all'immagine del kernel se /dev/hda3 contiene la partizione di root.
  3. Se si stà utilizzando bootplash, è necessario fornire un modalità video corretta come vga=0x317 ai parametri da passare al kernel ed aggiungere splash=verbose o splash=silent qual'ora si voglia mostrare un bootplash in modalità sileziosa o verbosa.
  4. Aggiungere l'initrd a seconda di come il bootloader la richieda: per maggiori informazioni consultare il Gentoo Handbook.

3.Effettuare il porting genkernel

Introduzione 

Supponendo che la propria architettura abbia tutte le librerie e le utility richieste da genkernel, che comprendono un kernel funzionante per la propria architettura, una suite di compilatori funzionante, GNU Make, e una distribuzione di busybox funzionante, si possiedono tutti i requisiti necessari per il funzionamento di genkernel.

Genkernel usa un file chiamato /usr/share/genkernel/nomeArchitettura contenente informazioni sulla configurazione per la determinata architettura.

Come funziona il bootstrap del sistema 

  1. Il bootloader carica l'immagine di genkernel, costruita nel modo specificato dal file di configurazione e l'initrd.
  2. Il kernel si avvia, e effettua l'allocazione di una piccola quantità di RAM dove viene caricato busybox, che "sonda" il sistema con i moduli contenuti nella lista modules_load di ogni architettura.
  3. Una volta terminato e determinato il parametro real_root, il dispositivo di boot per la partizione di root, il sistema viene avviato dal dispositivo.

I file di configurazione 

  • busy-config: Questo è il file di configurazione usato per la creazione di busybox.
  • config.sh: Questo file è uno script per la shell che imposta alcune variabili interne. Vedere uno dei file config.sh per avere un idea del loro funzionamento.
  • modules_load: Questo file contiene una lista di moduli separati da uno spazio caricati per ottenere il supporto per dispositiv SCSI, FireWire, ATARAID e PCMCIA. Se questi dispositivo non sono presenti nel vostro sistema lasciare i campi in bianco. Esaminare uno dei file modules_load per comprendere meglio il loro funzionamento.
  • kernel-config: Una configurazione di default adatta ad ogni versione del kernel.
  • kernel-config-2.4: Una configurazione di default usata per i kernel della serie 2.4.
  • kernel-config-2.6: na configurazione di default usata per i kernel della serie 2.6.


Ultimo aggiorn.:
10 Aprile 2004
Tim Yamin
Autore

Dario Mèndez
Traduzione

Sommario:  Questa guida si propone di fornire una referenza a tutte le funzioni fornite da Genkernel
- 2002 Gentoo.it - Domande, commenti e/o correzioni? Email gentoo-dev@gentoo.it.