Il formato generale di un file di configurazione è
abbastanza semplice. Ogni linea contiene una parola chiave
ed uno o più argomenti. Per semplicità, la maggior
parte delle linee contiene solo un argomento. Tutto quello
che segue un #
è considerato un
commento ed ignorato. Le seguenti sezioni descrivono
ogni parola chiave, nell'ordine di presenza in
GENERIC
.
Per una lista esaustiva
delle opzioni dipendenti dall'architettura e dei devices,
leggi il file NOTES
nella stessa directory
del file GENERIC
. Per opzioni
indipendenti dall'architettura, leggi
/usr/src/sys/conf/NOTES
.
Per creare un file che contenga tutte le opzioni
disponibili, ad esempio per usi di testing,
esegui il seguente comando come root
:
#
cd /usr/src/sys/i386
/conf && make LINT
Il seguente è un esempio del file di configurazione
del kernel GENERIC
con vari commenti
addizionali ove necessari ai fini della chiarezza. Questo esempio
dovrebbe corrispondere abbastanza da vicino alla tua copia in
/usr/src/sys/
.
i386
/conf/GENERIC
Questa è la architettura della macchina. Deve essere
una fra alpha
, amd64
,
i386
, ia64
,
pc98
, powerpc
, o
sparc64
.
Quanto riportato sopra specifica il tipo di CPU che hai nella
tua macchina. Puoi avere molte istanze di linee di CPU (se, per
esempio, non sei sicuro se devi usare la
I586_CPU
o la I686_CPU
),
ma per un kernel custom è meglio specificare solo la CPU
che hai. Se non sei sicuro di quale sia il tipo della tua CPU,
controlla il file /var/run/dmesg.boot
per leggere
i messaggi di boot.
Questo è l'identificativo del kernel. Dovresti cambiarlo
nel nome che hai dato al kernel, ad esempio MYKERNEL
se hai seguito le istruzioni degli esempi precedenti. Il valore che poni
nella stringa ident
, sarà emesso a video
quando fai il boot del kernel, così è utile dare al
nuovo kernel un nome differente se vuoi tenerlo separato dal tuo kernel
usuale (ad esempio se vuoi creare un kernel sperimentale).
L'opzione device.hints(5) è
usato per configurare le opzioni dei device driver. La posizione
di default che loader(8) cercherà al momento del boot
è /boot/device.hints
. Usando l'opzione
hints
puoi compilare queste direttive direttamente
nel kernel. Se fai così non c'è bisogno di creare
un file device.hints
in /boot
.
Il processo normale di compilazione di FreeBSD include
informazioni di debugging quando si compila il kernel
con l'opzione -g
, che abilita il debugging
quando passato a gcc(1).
Lo schedulatore tradizionale per FreeBSD. Tienilo.
Permette ai thread del kernel di essere interrotti da altri thread a priorità più alta. Aiuta con l'interattività e permette ai thread degli interrupt di essere eseguiti prima rispetto invece che attendere.
Supporto per la rete. Lascia questa opzione, anche se non intendi connettere il computer ad una rete. La maggior parte dei programmi richiedono almeno rete di loopback (ad esempio fare connessioni di rete dal tuo pc al tuo pc stesso), così questa opzione in sostanza è obbligatoria.
Questo abilita il protocollo di comunicazione IPv6.
Questo è il file system di dischi di base. Lascialo nel kernel se fai il boot da hard disk.
Questa opzione abilita le Soft Updates nel kernel, aiuterà
a velocizzare accesso di scrittura ai dischi. Anche quando questa
funzionalità è fornita dal kernel, deve essere
attivata per dischi specifici. Rileggi l'output da mount(8)
per vedere se Soft Updates sono abilitate per i tuoi dischi di sistema.
Se non vedi l'opzione soft-updates
potrai
abilitarla usando tunefs(8) (per file system già
esistenti) o newfs(8) (per nuovi file system).
Questa opzione abilita supporto nel kernel per le liste di controllo di accesso. Questo poggia sull'uso degli attributi estesi e UFS2, questa opzione viene descritta in dettaglio in Capitolo 14, Sicurezza. ACL sono abilitate di default e non dovrebbero essere disabilitate nel kernel se sono state usate precedentemente su un file system, dato che questo rimuoverà le liste di controllo di accesso, cambiando il modo in cui i file sono protetti in modo non predicibile.
Quest'opzione include funzionalità per accelerare operazioni sui dischi su larghe directory, a costo di uso di memoria. Lo dovresti tenere per un server molto trafficato o workstation interattive, e rimuoverlo se stai usando FreeBSD su piccoli sistemi dove la memoria è scarsa e l'accesso ai dischi è meno importante, come un firewall.
Questa opzione abilita il supporto per un disco virtuale basato sulla memoria da usare come device di root.
Il file system di rete. A meno che tu non intenda montare partizioni da un file server UNIX® sopra TCP/IP, puoi commentare queste righe.
Il filesystem MS-DOS®. A meno che non intendi montare un
disco formattato DOS al momento del boot, puoi tranquilamente
commentare queste opzioni. Sarà automaticamente caricato
la prima volta che monti una partizione DOS, come descritto in seguito.
Inoltre, l'eccellente software emulators/mtools
ti permette di accedere a floppy DOS senza dover montarli e smontarli
(e non richiede assolutamente MSDOSFS
).
Il file system ISO 9660 per CDROM. Commentalo se non hai un drive CDROM o monti CD di dati solo occasionalmente (dato che sarà caricato dinamicamente la prima volta che monti un CD di dati). CD audio non necessitano di questo file system.
Il file system dei processi. Questo è un «fittizio»
file system montato su /proc
che permette
a programmi come ps(1) di darti maggiori informazioni
su quali processi sono in esecuzione. L'uso di PROCFS
non è richiesto
nella maggior parte dei casi, dato che la maggior parte
dei tool di debugging e di monitoring è stato adattato per
funzionare senza PROCFS
: la procedura di
installazione non monterà questo file system
di default.
I kernel 6.X che fanno uso del filesystem PROCFS
devono anche includere supporto per PSEUDOFS
.
Questa opzione fornisce la possibilità di avere un gran numero di partizioni su un singolo disco.
Compatibilità con 4.3BSD. Lasciala; alcuni programmi si comporteranno in maniera strana se la commenti.
Questa opzione è richiesta su FreeBSD 5.X su sistemi i386™ e Alpha per supportare applicazioni compilate su versioni precedenti di FreeBSD che usano vecchie interfacce di system call. Si raccomanda che questa opzione sia usata su tutte le i386™ ed Alpha che possano eseguire vecchie applicazioni; piattaforme che hanno ottenuto supporto solo dall 5.X, come ia64 e SPARC64® non richiedono questa opzione.
Questa opzione è richiesta per FreeBSD 6.X e superiori per supportare applicazioni compilate su os; 5.X che fanno uso di chiamate di sistema di FreeBSD 5.X.
Questa opzione fa sì che il kernel faccia una pausa di 5 secondi prima di controllare ogni device SCSI sul tuo sistema. Se hai solo dischi IDE, puoi ignorarla, altrimenti potresti voler diminuire il numero per accelerare il boot. Ovviamente, se fai ciò e FreeBSD ha problemi a riconoscere i tuoi device SCSI, dovrai alzarla di nuovo.
Questo abilita il tracciamento dei processi nel kernel, che è utile per il debugging.
Questa opzione fornisce memoria condivisa di tipo System V. L'uso più comune di questa opzione è l'estensione XSHM in X, grazie alla quale molti programmi ad alta intensità grafica ne trarranno vantaggio per maggior velocità. Se usi X, vorrai sicuramente includere questa opzione.
Supporto per messaggi stile System V. Questa opzione aggiunge solo poche centinaia di byte al kernel.
Supporto per semafori stile System V. Usato meno di frequente ma aggiunge solo poche centinaia di byte al kernel.
L'opzione -p
del comando ipcs(1) mostrerà
ogni processo che usa uno di queste opzione System V.
Estensioni real-time aggiunte al POSIX® 1993. Alcune applicazioni nella collezione dei Ports usano questa opzione (come StarOffice™).
Questa opzione è relativa ala tastiera. Aggiunge una entry CDEV
nella directory /dev
.
Giant è il nome di un meccanismo di esclusione reciproca
(uno sleep mutex) che protegge gran parte delle risorse del kernel.
Al giorno d'oggi è un inaccettabile rallentamento delle performance
che si sta attivamente sostituendo con locks che proteggono risorse
individuali. L'opzione ADAPTIVE_GIANT
fa sì
che Giant sia incluso nell'insieme dei mutex da scegliere. Cioè
quando un thread vuole fare un lock sul mutex Giant, ma è già
bloccato da un thread su un'altra CPU, il primo thread continuerà
a girare ed aspetterà che il lock sia rilasciato. Normalmente
invece, il thread tornerebbe a dormire e aspetterà la sua prossima
occasione per girare. Se non sei sicuro, lascialo dentro.
Il device apic abilita l'uso dell'APIC I/O per inviare
gli interrupt. Il device apic può essere usato sia su kernel
UP che su SMP, ma è richiesto per kernel SMP. Aggiungi
option SMP
per includere supporto per processori
multipli.
Il dispositivo apic esiste sono per l'architettura i386, questa riga di configurazione non deve essere usata per altre architetture.
Includilo se hai una motherboard EISA. Questo abilita supporto per l'auto-rilevazione e configurazione per tutti i device sul bus EISA.
Includilo se hai una motherboard PCI. Questo abilita l'auto-rilevazione delle carte PCI e operazioni di gateway dal bus PCI al bus ISA.
Questo abilita il supporto al controller del floppy drive.
Questo driver supporta tutti i device ATA e ATAPI. Hai bisogno
solo di una linea device ata
per il kernel
affinchè rilevi tutti i device PCI ATA/ATAPI su macchine moderne.
Questo è necessario assieme a device ata
per disk drive ATA.
Questo è necessario assieme a device ata
per drive
ATA RAID.
Questo è necessario assieme a device ata
per
drive CDROM ATAPI.
Questo è necessario assieme a device ata
per
drive floppy ATAPI.
Questo è necessario assieme a device ata
per
drive tape ATAPI.
Questo rende il numero di controller statico; senza questo i numeri di device sono allocati dinamicamente.
Controller SCSI. Commentali tutti se non ne hai nessuno
sul tuo sistema. Se hai un sistema solo IDE, puoi rimuoverli
tutti. Le righe *_REG_PRETTY_PRINT
sono opzioni
di debug per i loro rispettivi dispositivi.
Periferiche SCSI. Ancora, commentali se non ne hai nessuna o se il tuo sistema è solo IDE.
Il driver USB umass(4) e pochi altri driver usano il sottosistema SCSI anche se non sono veri device SCSI. Quindi accertati di non rimuovere il supporto a SCSI, se qualche driver del genere è incluso nella tua configurazione del kernel.
Controller RAID supportati. Se non ne hai nessuno, puoi commentarli o rimuoverli.
Il controller della tastiera (atkbdc
) fornisce
servizi I/O per la tastiera AT ed il device PS/2. Questo controller
è richiesto dal driver della tastiera
(atkbd
) e dal driver del dispositivo di puntamento
PS/2 (psm
).
Il driver atkbd
assieme al controller
atkbdc
, fornisce accesso alla tastiera AT 84
o la tastiera AT migliorata che è connesso al controller
della tastiera AT.
Usa questo device se il tuo mouse si inserisce nella porta PS/2.
Supporto base per il multiplexing della tastiera. Se non hai intenzione di usare più di una tastiera sul sistema, puoi tranquillamente rimuovere quella riga.
Supporto base per il multiplexing della tastiera.
Il driver della video card.
Schermata slapsh all'avvio! Anche gli screensaver lo richiedono.
sc
è il driver di default della console,
assomiglia ad una console SCO. Dato che molti programmi a schermo
intero accedono alla console attraverso una libreria di database di
terminali come termcap
, non dovrebbe fare differenza
se usi questo o vt
, il driver compatibile con una
console VT220
. Quando ti logghi, imposta la tua
variabile d'ambiente TERM
a scoansi
se
programmi a schermo intero hanno problemi a girare sotto questa
console.
Questo è un driver di console compatibile con VT-220,
compatibile all'indietro con VT100/102. Funziona bene su alcuni laptop
che hanno incompatibilità hardware con sc
.
Inoltre imposta la tua variabile TERM
a
vt100
o vt220
quando ti logghi.
Questo driver può essere utile quando ci si connette
ad un grande numero di macchine diverse sulla rete,
dove le entry termcap
o
terminfo
per il device sc
spesso non sono disponibili — vt100
dovrebbe essere disponibile virtualmente su ogni piattaforma.
Includilo se hai una scheda AGP nel tuo sistema. Questo abiliterà il supporto per AGP, e AGP GART per le motherboard che hanno queste caratteristiche.
Supporto Advanced Power Management. Utile per laptop,
anche se in FreeBSD 5.X e successivo questo è disabilitato
in GENERIC
di default.
Device driver per eventi di power management, come APM ed ACPI.
Supporto PCMCIA. Includilo se usi un laptop.
Queste sono le porte seriali chiamate
COM
nel mondo MS-DOS®/Windows®.
Se hai un modem interno sulla COM4
ed una porta seriale sulla COM2
, dovrai
cambiare l'IRQ del modem a 2 (per ragioni tecniche oscure
IRQ 2=IRQ 9) affinchè tu ci possa accedere da FreeBSD.
Se hai una carta seriale multiporta, controlla la pagina di manuale
per sio(4) per maggiori informazioni sui valori corretti
da aggiungere al tuo /boot/device.hints
.
Alcune video card (in particolare quelle basate su chip S3)
usano indirizzi IO della forma 0x*2e8
e dato che
molte carte seriali non codificano l'intero spazio degli indirizzi
IO a 16 bit, hanno conflitti con queste carte, rendendo la porta
COM4
praticamente non disponibile.
Ogni porta seriale deve avere un IRQ unico (a meno che non stia usando
una delle carte multicard dove sono supportati interrupt condivisi),
così gli IRQ di default per COM3
e
COM4
non possono essere usati.
Questo è l'interfaccia al bus ISA parallelo.
Fornisce supporto per il bus della porta parallela.
Supporto per la stampante a porta parallela.
Tutte quest tre sono necessarie per abilitare supporto alla stampante parallela.
Questo è il driver della interfaccia di rete parallela.
L'I/O a scopo generico («geek port») + IEEE1284 I/O.
Questo è per uno IOMEGA zip drive. Richiede
supporto scbus
e da
. La migliore
performance è raggiunta con porte in modo EPP 1.9.
Scommenta questo device se ha una seriale «dumb» o carta PCI parallela che è supportata dal driver glue puc(4).
Vari driver di schede di rete PCI. Commentalo o rimuovilo se nessuno di questi è presente nel tuo sistema.
Supporto bus MII è richiesto per alcune NIC Ethernet 10/100 PCI,
in particolare quelle che usano transricevitori compatibili con MII
o implementano interfacce di controllo che operano su MII. Aggiungere
device miibus
al kernel porta con sè il supporto
per la generica API miibus e tutti i driver PHY, incluso un
generico per PHY che non è specificamente gestito da driver
individuali.
Driver che usano il codice del controller MII.
Driver ISA Ethernet. Vedi
/usr/src/sys/
per dettagli su quali carte siano supportate da quali driver.i386
/conf/NOTES
Supporto generico al 802.11. Questa riga è richiesta per la rete wireless.
Supporto di crittografia per i dispositivi 802.11. Queste righe sono necessarie se intenti usare la codificazione e i protocolli di sicurezza 802.11i.
Supporto per varie carte wireless.
Questo è il generico device loopback per TCP/IP. Se fai telnet
o FTP a localhost
(anche conosciuto come
127.0.0.1
) la connessione ritornerà
alla tua stessa macchina attraverso questo device. Questo è
obbligatorio.
Generatore casuale sicuro di numeri random.
ether
è necessario solo se hai una
carta Ethernet. Include un codice di protocollo Ethernet.
sl
è per supporto slip. È stato
interamente soppiantato da PPP, che è più semplice da
installare, più adatto per connessioni modem-to-modem e più
potente.
Questo è per supporto kernel PPP per connessioni dial-up.
C'è anche una versione di PPP implementata come applicazione
userland che usa tun
e offre più flessibilità
e caratteristiche aggiuntive come dialing a domanda.
Questo è usato per software userland PPP. Vedi la sezione PPP di questo libro per maggiori informazioni.
Questo è uno «pseudo-terminal» o porta di login
simulato. È usato da sessioni telnet
e
rlogin
, xterm e qualche altra
applicazione come Emacs.
Pseudo-device di disco di memoria.
Questo implementa il tunneling IPv6 su IPv4, IPv4 su IPv6,
IPv4 su IPv4 e IPv6 su IPv6. Il device
gif
è «autoclonante»,
e creerà gli altri node come richiesto.
Questo pseudo-device cattura i pacchetti che sono inviati a lui e li distoglie verso il demone di traslazione IPv4/IPv6.
Questo è il Berkeley Packet Filter. Questo pseduo-device permette alle interfacce di rete di essere configurate in modo promiscuo, catturando ogni pacchetto su una rete broadcast (ad esempio una Ethernet). Questi pacchetti possono essere catturati su disco e o esaminati con il programma tcpdump(1).
Il device bpf(4) è anche usato da dhclient(8) per ottenere l'indirizzo IP del default router (gateway) eccetera. Se usi DHCP, lascia questa riga scommentata.
Supporto per vari device USB.
Supporto per vari device FireWire.
Per maggiori informazioni e device addizionali supportati
da FreeBSD, controlla
/usr/src/sys/
.i386
/conf/NOTES
Macchine con configurazione a memoria estesa richiedono più di 4 gigabyte di limite nello spazio degli indirizzi Virtuale User+Kernel (KVA). A causa di questa limitazione, Intel ha aggiunto supporto per lo spazio degli indirizzi fisico a 36-bit nel Pentium® Pro e linee successive di CPU.
La caratteristica di
Physical Address Extension (PAE)
dell' Intel® Pentium® Pro e CPU successive permette
configurazioni della memoria fino a 64 gigabyte.
FreeBSD fornisce supporto per questa caratteristica attraverso
l'opzione di configurazione del kernel PAE
,
disponibile in tutte le versioni correnti di FreeBSD.
A causa della limitazione della architettura
della memoria Intel, nessuna distinzione è
fatta per memorie sopra o sotto i 4 gigabyte. Memoria allocata
oltre i 4 gigabyte è semplicemente aggiunta al pool
della memoria disponibile.
Per abilitare il supporto PAE nel kernel, aggiungi semplicemente la seguente linea nel tuo file di configurazione del kernel:
Il supporto PAE in FreeBSD è disponibile solo per processori Intel® IA-32. Bisogna notare inoltre che il supporto PAE non ha ricevuto test esteso, e dovrebbe essere considerato di qualità beta rispetto alle altre carateristiche stabili di FreeBSD.
Il supporto per PAE in FreeBSD ha qualche limitazione:
Un processo non è in grado di accedere a più di 4 gigabte di spazio VM.
I moduli KLD non possono essere caricati in un kernel con abilitato PAE, a causa delle differenze nell'ambiente di compilazione di un modulo e del kernel.
Device driver che non usano l'interfaccia
bus_dma(9) causeranno corruzione dei dati
in un kernel abilitato PAE, e non
se ne raccomanda l'uso. Per questo motivo,
viene fornito un file di configurazione del kernel PAE
,
che esclude tutti i driver per i quali
non è stato testato il funzionamento in un kernel
abilitato PAE.
Alcuni parametri che possono essere settati determinano
l'uso delle risorse di memoria a partire dalla quantità
di memoria fisica disponibile. Questi parametri
possono allocare troppo spazio rispetto alle necessità
a causa della dimensione della memoria di un sistema
PAE. Un esempio simile è
il sysctl kern.maxvnodes
, che controlla
il massimo numero di vnodes permessi nel kernel. È
concesso di aggiustare questo ed altri parametri ad un
valore ragionevole.
Può essere necessario aumentare lo spazio degli indirizzi di memoria virtuale del kernel (KVA) o ridurre la quantità di risorse specifiche che sono pesantemente usate (vedi oltre) per evitare esaurimenti di KVA. L'opzione del kernel KVA_PAGES può essere usata per aumentare lo spazio KVA.
Per motivi di stabilità e di performance, si consiglia di consultare le pagine di manuale tuning(7). La pagina di manuale pae(4) contiene informazioni aggiornate sul supporto PAE.
Questo, ed altri documenti, possono essere scaricati da ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/
Per domande su FreeBSD, leggi la
documentazione prima di contattare
<questions@FreeBSD.org>.
Per domande su questa documentazione, invia una e-mail a
<doc@FreeBSD.org>.