LKN: Guida di Riferimento dei Parametri di Boot del Kernel - parte1

Linux Kernel in a Nutshell

Sommario

Parte I
Compilare il kernel
  1. Introduzione
  2. Requisiti
  3. Procurarsi i sorgenti
  4. Configurazione e compilazione
  5. Installazione e avvio
  6. Aggiornare il kernel
Parte II
Personalizzazioni principali
  1. Personalizzare un kernel
  2. Ricette per configurare un kernel
Parte III
Guide di riferimento per il kernel
  1. Guida di riferimento dei parametri di boot del kernel - parte1
  2. Guida di riferimento dei parametri di boot del kernel - parte2
  3. Guida di riferimento dei parametri di compilazione del kernel
  4. Guida di riferimento delle opzioni di configurazione del kernel - parte1
  5. Guida di riferimento delle opzioni di configurazione del kernel - parte2
Parte IV
Informazioni aggiuntive
  1. Programmi utili
  2. Bibliografia

La maggior parte di questo capitolo è sulla documentazione interna al kernel per le opzioni di avvio del kernel a riga di comando, che sono scritte dagli sviluppatori del kernel e rilasciate sotto GPL.

Ci sono tre modi per passare opzioni al kernel e così controllarne il comportamento:

  • nella preparazione del kernel (configurazione e compilazione). La maggior parte di questo libro discute queste opzioni;
  • quando si avvia il kernel. Comunemente i parametri sono passati al kernel quando è invocato da un file di avvio come i file di configurazione di GRUB o LILO;
  • quando il kernel è in esecuzione, scrivendo all'interno di file nelle cartelle /proc e /sys.

Questo capitolo descrive il secondo modo per passare delle opzioni. Il capitolo divide le opzioni di avvio in sezioni logiche differenti. Molte opzioni specifiche per determinate architetture o opzioni di driver specifici non sono elencate. Per un elenco completo per tutte le opzioni conosciute, leggete il file Documentation/kernel-parameters.txt nell'albero dei sorgenti del kernel e la documentazione per ogni specifica architettura.

Non tutte le opzioni elencate sono sempre disponibili. La maggior parte sono associate a sottosistemi e funzionano solo se il kernel è configurato con quei sottosistemi inseriti. Dipendono anche dalla presenza dell'hardware cui sono associati.

Tutti questi parametri sono sensibili ai caratteri maiuscoli e minuscoli.

Opzioni specifiche per modulo

In aggiunta alle opzioni elencate in questo capitolo, i parametri per i moduli che sono compilati nel kernel possono essere anche passati via linea di comando. (Moduli caricati dinamicamente, ovviamente, non sono in memoria quando il kernel si avvia e non possono quindi essere passati come parametri all'avvio.) La sintassi per passare parametri consiste nel nome del modulo seguito da un punto (.) e il parametro. Per esempio, il modulo usbcore accetta il parametro blinkenlights per visualizzare le luci lampeggianti in tutti gli hub 2.0 supportati (non dite mai che gli sviluppatori del kernel non hanno senso degli humor). Per impostare questo parametro quando si carica il modulo dinamicamente, inserireste:

$ modprobe usbcore blinkenlights=1

Se il modulo usbcore è compilato nel kernel, ottenete lo stesso effetto invocando il kernel con la seguente opzione: usbcore.blinkenlights=1 La maggior parte delle opzioni per i moduli che sono compilati nel kernel possono anche essere cambiate scrivendo in file nelle sottocartelle chiamate in base al modulo, nella cartella /sys/module. Così, l'opzione blinkenlights è rappresentata del file /sys/module/usbcore/blinkenlights.

Opzioni da terminale

Queste opzioni hanno a che fare con il terminale o il log del kernel, dove sono mostrate le informazioni per fare il debug del kernel e gli errori.

terminale

Periferica di output terminale e opzioni. console=Options

ttyn
Usa il terminale virtuale alla device n.
ttySn[,opzioni],ttyUSBo[,opzioni]
Usa porta seriale specificata. Le opzioni sono nella forma bbbbpnf, dove bbbb è il rapporto di baud, p la parità (n, o, o e), n è il numero di bit e f il controllo di flusso (r per RTS o omesso). Predefinito è 9600n8. Leggete il file Documentation/serial-console.txt per maggiori informazioni su come usare un terminale seriale. Se desiderate averea accesso alle informazioni del terminale del kernel e non avete una porta seriale, date uno sguardo all'opzione da riga di comando netconsole.
uart,io,addr[,opzioni],uart,mmio,addr[,opzioni]
Avvia velocemente un terminale in "polled-mode" sui 8250/16550 UART alle specifiche porte I/O o indirizzi MMIO, passando alla specificata periferica ttyS in seguito. Le opzioni sono le stesse che per ttyS mostrate precedentemente.

netconsole

Dati di output del terminale attraverso la rete.

netconsole=[src-port]@[src-ip]/[dev],[target-port]@target-ip/[target-mac-address]
Invia i dati del terminale attraverso la rete usando pacchetti UDP a un'altra macchina. Le opzioni sono:
src-port
Porta sorgente dei pacchetti UDP. La predefinita è 6665.
src-ip
Indirizzo IP sorgente per l'interfaccia in uso.
dev
Interfaccia di rete da usare. eth0 è un esempio. L'interfaccia di rete può anche instradare comunte traffico di rete, poiché i dati netconsole non sono intrusivi e non dovrebbero causare un rallentamento nelle altre operazioni di rete.
target-port
Porta che l'agente di log userà. La predefinita è 6666.
target-ip
Indirizzo IP dell'agente di log.
target-mac-address
Indirizzo MAC ethernet dell'agente di log. Per essere in ascolto di questi dati, la macchina remota può usare il programma syslogd, o far girare il programma netcat come segue: netcat -u -l -p port. Per ulteriori basi sull'utilizzo di questa opzione, leggete Documentation/networking/netconsole.txt.

debug

Abilita il debug del kernel.

Rende il livello di log del kernel impostato sul livello di debug, cosicché tutti i messaggi di debug saranno stampati sul terminale all'avvio.

quiet

Disabilita tutti i messaggi di log.

Imposta il livello di log del kernel a KERN_WARNING(4), che sopprime tutti i messaggi durante l'avvio eccetto quelli estremamente importanti. (I livelli di log sono definiti al parametro loglevel.)

earlyprintk

Mostra i primi messaggi di avvio del kernel.

earlyprintk=[vga|serial][,ttySn[,baudrate] ][,keep]
Mostra i messaggi di log del kernel che precedono l'inizializzazione del terminale tradizionale. Questi messaggi non sono solitamente visualizzati sul terminale a meno che non si usi questa opzione. Abilitarla può essere molto importante per delineare i problemi legati all'hardware. Attualmente l'opzione può specificare o la porta seriale o l'uscita VGA, ma non entrambe contemporaneamente. Analogamente solo una delle periferiche seriali ttyS0 o ttyS1 funzionerà. L'interazione con il tradizionale driver seriale non è molto buona, e l'uscita VGA sarà alla fine sovrascritta dal terminale reale. Aggiungete ,keep per non disabilitare i messaggi mostrati da questa opzione quando il terminale reale viene inizializzato e si sovrappone al sistema.

loglevel

Imposta il livello di default di log del terminale.

loglevel=level
Specifica il livello iniziale di log della console. Tutti i messaggi di log con livelli minori di questo (cioè, di priorità più elevata) saranno stampati a terminale, laddove tutti i messaggi con livelli uguali o più grandi non saranno mostrati.
Il livello di log può essere anche cambiato dal programma klogd, o scrivendo il livello specificato nel file /proc/sys/kernel/printk.
I livelli di log sono:
  • 0 (KERN_EMERG) Il sistema non è usabile.
  • 2 (KERN_ALERT) Azioni che devono essere immediatamente trattate.
  • 2 (KERN_CRIT) Condizioni critiche.
  • 3 (KERN_ERR) Condizioni di errore non critiche.
  • 4 (KERN_WARNING) Condizioni i cui avvertimenti dovrebbero essere considerati.
  • 5 (KERN_NOTICE) Eventi normali ma significativi.
  • 6 (KERN_INFO) Messaggi informativi che non richiedono azioni.
  • 7 (KERN_DEBUG) Messaggi di debug del kernel, mostrati dal kernel se lo sviluppatore ha abilitato il debugging in fase di compilazione.

log_buf_len

Imposta la dimensione del buffer dei messaggi del kernel. log_buf_len=n[KMG]

Imposta la dimensione del buffer interno dei messaggi del kernel. n deve essere una potenza di 2, altrimenti sarà approssimato a una potenza di 2. Questo valore può anche essere cambiato dall'opzione di configurazione CONFIG_LOG_BUF_SHIFT.

initcall_debug

Corregge gli errori nelle funzioni initcall nel kernel.

Fa sì che il kernel tracci tutte le funzioni che sono chiamate dal kernel stesso durante l'inizializzazione del sistema quando il kernel è avviato. Questa opzione è utile per determinare dove il kernel muoia durante la fase di avvio.

kstack

Quante word dello stack vanno stampate negli oops del kernel.

kstack=n
Specifica quante word dello stack del kernel devono essere stampate nell'uscita dei kernel oops. n è un numero intero.

time

Mostra i dati temporali in ogni messaggio del kernel.

Fa sì che il kernel inserisca prima di ogni messaggio una marcatura oraria.

Opzioni di interruzione

Le interruzioni sono un aspetto complesso del comportamento del kernel. Le opzioni di avvio riguardano principalmente l'interfaccia tra il kernel e l'hardware che gestisce le interruzioni, come l'Advanced Programmable Interrupt Controller ("Controllore avanzato e programmabile delle interruzioni", N.d.T.) di Intel (APIC).

apic

Cambia la verbosità del sottosistema APIC all'avvio.

apic=[quiet|verbose|debug]
Controlla quante informazioni il sottosistema APIC genera all'avvio del kernel. L'impostazione predefinita è quiet.

noapic

Non usa alcun IOAPIC.

Impedisce al kernel di utilizzare qualsiasi IOAPIC che può essere presente nel sistema.

lapic

Abilita l'APIC locale.

Abilita l'APIC locale anche se il BIOS lo ha disabilitato.

nolapic

Disabilita l'APIC locale.

Disabilita l'APIC locale.

noirqbalance

Disabilita il bilanciamento degli IRQ del kernel.

Disabilita tutta la ligica interna al kernel di bilanciamento degli IRQ.

irqfixup

Risoluzione base di problemi legati alle interruzioni.

Quando un'interruzione non viene gestita, cerca tutti i gestori di interruzione per essa. Questo è pensato per far funzionare sistemi con un firmware molto rovinati.

irqpoll

Risoluzione avanzata dei problemi delle interruzioni.

Quando un'interruzione non viene gestita, cerca tutti i gestori di interruzione per essa e verifica tutti i gestori in ogni interruzione per il timer. Questo è pensato per far funzionare sistemi con un firmware molto rovinati.

noirqdebug

Disabilita la rilevazione di interruzioni non gestite.

Il kernel, come comportamento predefinito, cerca di individuare e disabilitare le sorgenti di interruzioni non gestite perché possono generare problemi legati alla reattività del kernel se lasciati non verificati. L'opzione cambia questo comportamento.

Opzioni per la memoria

Il kernel gestisce la memoria in molti differenti pezzi e categorie per scopi diversi. Queste opzioni consentono di regolare dimensioni e impostazioni.

highmem

Specifica la dimensione della zona della memoria superiore. , highmem=n : Forza la memoria superiore alla dimensione di n byte. Questa opzione funziona anche in macchine che non hanno una zona per la memoria superiore predefinita. Può anche ridurre la memoria superiore per macchine con molta memoria.

hugepages

Imposta il numero delle pagine di hugetlb.

hugepages=n
La caratteristica hugetlb vi consente di configurare Linux per usare pagine da 4 MB, mille volte la dimensione predefinita. Se Linux è configurato in questa maniera, questa opzione imposta il massimo numero di pagine hugetlb a n.

ihash_entries

Imposta il numero di inode hash bucket.

ihash_entries=n
Sovrascrive il numero di default di hash bucket per gli inode della cache del kernel. Raccomandato solo per gli esperti del kernel.

max_addr

Ignora la memoria.

max_addr=n
Dice al kernel di ignorare tutta la memoria fisica più grande di o uguale all'indirizzo fisico n.

mem

Forza l'uso della memoria.

mem=n[KMG]
Imposta lo specifico ammontare della memoria usata dal kernel. Quando usata con l'opzione memmap=, le collisioni dello spazio di indirizzamento fisico possono venir evitate. Senza l'opzione memmap=, questa opzione potrebbe causare il posizionamento dei dispositivi PCI in indirizzi che fanno parte della RAM inutilizzata. n specifica l'ammontare di memoria da forzare ed è misurata in unità di kilobytes (K), megabytes (M), o gigabytes (G).

mem

Disabilita l'uso delle pagine di 4 MB per la memoria del kernel.

mem=nopentium
Disabilita l'uso delle pagine larghe (4 MB) per la memoria del kernel.

memmap

Abilita le impostazioni di una mappa di memoria esatta E820.

memmap=exactmap
Utilizza una specifica mappa di memoria. Le linee della mappa esatta possono essere costruite basate sull'output del BIOS o altri requisiti.

memmap

Forza la memoria specificata a venir utilizzata.

memmap=n[KMG]@start[KMG]
Forza il kernel ad usare una regione specifica di memoria, n è la misura della locazione di memoria, e start è la locazione iniziale della memoria nell'intervallo.

Le unità possono essere kilobytes (K), megabytes (M), o gigabytes (G).

noexec

Abilita o disabilita il nonexecutable mappings.

noexec=[on|off]
Abilita o disabilita la capacità del kernel di mappare le sezioni di memoria come nonexecutable. Di default, il mapping è attivo (on).

reserve

Riserva della memoria di I/O.

reserve=n[KMG]
Forza il kernel ad ignorare delle aree di memoria di I/O.

vmalloc

Forza l'area di vmalloc ad avere una specifica dimensione.

vmalloc=n[KMG]
Forza vmalloc ad avere l'esatta dimensione specificata da n. Questo può essere usato per aumentare la dimensione minima dell'area di vmalloc (che è di 128 MB nei processori x86). Può anche essere utilizzato per diminuire la misura e lasciar più spazio per la RAM direttamente mappata da kernel.

norandmaps

Non utilizzare l'address space randomization.
Di default, il kernel genera casulamente lo spazio di indirizzamento di tutti i programmi quando vengono lanciati. Questa opzione disabilita questa feature. E' l'equivalente di scrivere 0 nel file /proc/sys/kernel/randomize_va_space.

vdso

Abilita o disabilita il mapping VDSO.

vdso=[0|1]
Disabilita (0) o abilita (1) il VDSO (Virtual Dynamic Shared Object) mapping. Di default, e' abilitata.



This is an indipendent translation of the book Linux Kernel in a Nutshell by Greg Kroah-Hartman. This translation (like the original work) is available under the terms of Creative Commons Attribution-ShareAlike 2.5.


Capitolo originale