Gentoo Linux Genkernel Guide
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
|
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 |
# mount /boot
# mount /dev/hda1 /boot
# 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.
-
Aggiungere root=/dev/ram0 einit=/linuxrc ai parametri da fornire
all'immagine del kernel
-
Aggiungere real_root=/dev/hda3, per esempio, ai parametri da fornire
all'immagine del kernel se /dev/hda3 contiene la partizione di root.
-
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.
-
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
-
Il bootloader carica l'immagine di genkernel, costruita nel modo specificato
dal file di configurazione e l'initrd.
-
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.
-
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.
|