Seconda parte---Nota---Alcune di queste opzioni potrebbero
non essere presenti nella configurazione, oppure potrebbero esistere opzioni che qui non sono descritte. Questo dipende dalla versione del kernel che si intende compilare. Come riferimento ho preso il kernel
2.6.21.1.
make menuconfigDopo una breve analisi del sistema ed il caricamento delle librerie principali viene creato il menu
ncurses di
menuconfig.
La prima schermata è la finestra principale.
In basso ci sono tre voci: <Select>, <Exit> e <Help>.
Con <Select> è possibile entrare nei sottomenu, selezionare le opzioni o deselezionarle se sono già selezionate. <Exit> esce dalle sottofinestre o, se si è nella finestra principale, fa uscire dalla configurazione dopo aver chiesto se si desidera salvare la configurazione fino adesso sviluppata. <Help> può dare indicazioni sulle numerose opzioni, qualora ne abbiano descrizioni visualizzabili. Se selezionato nella schermata principale o su una opzione che punta ad un sottomenu (--->) che non sia modificabile, apparirà una serie di indicazioni generali sull'utilizzo di
menuconfig. E' possibile confermare le scelte con
spazio (
* per built-in oppure
M per modulare), oppure uscire dal sottomenu premendo velocemente due volte di seguito
ESC, oltre ad usare <Exit>.
Per muovervi tra <Select>, <Exit> e <Help> potete usare il tasto di tabulazione.
A sinistra di molte opzioni ci potranno essere dei simboli. Potrete incontrare delle parentesi quadre (
[]), la cui rispettiva opzione può essere compilata direttamente nel kernel (
built-in) selezionandola, con un asterisco (
*); dei simboli minore-maggiore (
<>) che potrete selezionare come moduli (
M) o built-in (
*), oppure un
---, che sta a significare che l'opzione è presente nel kernel
per default e che
non è possibile deselezionare.
Code maturity level optionsAlcune parti del codice che possono essere compilate come moduli o all'interno del kernel stesso sono analizzate, ed in caso siano in versione sperimentale, selezionando questa opzione potranno essere compilate e provate. In caso contrario molte altre caratteristiche in fase di testing non saranno accessibili per l'utilizzo.
General setupQueste sono tutte caratteristiche generali di codice e di compilazione. E' possibile anche scegliere se creare un disco virtuale iniziale per l'avvio in caso ci siano moduli da caricare per il corretto bootstrap del kernel. Nel caso in cui le funzioni principali siano built-in (filesystem, driver di chipset della scheda madre, grafica, tastiera, eccetera) l'unità virtuale non sarà necessaria.
Loadable module supportVarie parti del kernel possono essere compilate sotto forma di 'moduli', ossia piccole porzioni di codice che possono essere caricate in un secondo momento, o solo se ce ne sia bisogno. In questo modo è possibile 'restringere' l'essenziale nel kernel monolitico, facendo un sistema più svelto e leggero. Questa parte consente di gestire il caricamento dei moduli, e la rimozione degli stessi dal kernel.
Block layerTutti i file che vedete nella directory
/dev sono creati dal kernel in fase di avvio. Il block layer consente di rimuovere questi file qualora non siano più necessari, ad esempio quando una periferica USB viene scollegata dal sistema. Nel sottomenu è presente anche l'opzione
IO Schedulers, che consente di scegliere tra dei 'regolatori di traffico' dei dati da e per il kernel, e per gestire al meglio la memoria ed i segnali per il sistema operativo. Nel dubbio vi raccomando di selezionare solo l'opzione
Deadline mettendola built-in (
*).
Processor type and featuresQui bisogna fare attenzione. Dovrete scegliere il tipo di processore per cui ottimizzare il kernel, l'architettura (uni- o multi-processore) ed alcune caratteristiche fondamentali di adattamento all'ambiente hardware del bus che più da vicino riguarda il processore. Ricordate sempre di leggere le spiegazioni selezionando
<Help> per avere una descrizione di massima di ogni opzione.
Power management optionsPer la gestione di ACPI, APM e di tutti gli aspetti di accensione e spegnimento della macchina e delle periferiche, e della gestione della frequenza della CPU.
Bus options (PCI etc.)PCI, PCMCIA, PCI Hotplug e PCI Express sono trattati qui. Se possibile, abilitate
mmconfig per il riconoscimento del bus PCI.
Executable file formats / EmulationsI formati eseguibili ELF, a.out e binari generici, nonchè emulazione di binari a 32 bit se vi trovate in un ambiente a 64 bit, possono essere abilitati qui. Personalmente raccomando di mettere tutto built-in qui dentro.
NetworkingIl network è l'aspetto più completo e complesso di Linux. Qui potete sbizzarrirvi, se sapete quello che fate, per personalizzare le vostre reti. Generalmente le opzioni di default sono più che accettabili e comunque il kernel è ottimamente configurato per lavorare con reti anche complesse. Se avete intenzione di usare
iptables dovete abilitare
Netfilter, che è il filtro di pacchetti caratteristico del kernel di Linux. Ed anche quello va configurato, e di opzioni ne ha molte.
Device driversIl sottomenu è pieno di altri sottomenu. Cercherò di spiegarli tutti nel modo più chiaro e breve possibile.
Generic Driver optionsOpzioni generiche per tutti i driver presenti nel sistema, moduli compresi.
Connector - unified userspace <-> kernelspace linkerLavora sopra
netlink e crea un ambiente di comunicazione tra vari agenti sia nel kernel che nel sistema operativo, per l'invio di segnali tra i processi.
Insomma, fa 'parlare meglio' i programmi tra loro e con il kernel. Non è indispensabile abilitarlo.
Memory Technology Device (MTD)Questo driver si prende cura di tutte le memorie RAM e Flash interne al sistema, generalmente per un utilizzo in ambito puramente integrato, come per server dedicati. Se avete flash USB questo non è il driver giusto.
Parallel port supportSe vi interessa ancora usare la vecchia porta parallela abilitatelo.
Plug and Play supportPlug and Play consente di far configurare l'hardware al BIOS o al software, se è PnP compatibile, come Linux. E' generalmente abilitato per default, ed è comunque sconsigliato disabilitarlo.
Block devicesQuesto sottomenu può abilitare alcuni blocchi di periferiche secondari (ricordate la directory
/dev?) come un blocco per il floppy disk, per il loopback (
MOLTO utile per montare filesystem se sono sottoforma di file, come
le immagini ISO) e per delle unità virtuali su RAM.
Misc devicesPeriferiche secondarie che potreste non avere.
ATA/ATAPI/MFM/RLL supportQuesto sottomenu è
fondamentale per la configurazione delle unità di immagazzinamento dati interne, come dischi rigidi o lettori/masterizzatori CD/DVD. Supporta bus IDE e SCSI principalmente, e solitamente l'unica opzione da cambiare è quella relativa al vostro chipset di controllo di questi bus.
SCSI device supportSCSI (Small Computer System Interface) è un'interfaccia paragonabile alla IDE, ma molto più veloce e costosa. Ciononostante, la IDE si è affermata sulla SCSI, ed ora se si vuole montare un'unità SCSI sul proprio computer è necessario comprare un controller separato. In questo sottomenu si possono sistemare molte caratteristiche relative al bus SCSI.
Inoltre, se vorrete usare delle unità RAID sul sistema dovrete selezionare "RAID Transport Class" nella lista.
---Attenzione!!!---Il bus USB nel kernel Linux 'parla' la lingua dello SCSI. Significa che le operazioni interne di lettura e scrittura su, ad esempio, un disco rigido o, in generale, un'unità esterna di immagazzinamento dati che sia collegata ad una presa USB usa il protocollo SCSI. Ciò vale anche per masterizzatori e scanner.
Quindi è necessario abilitare "SCSI disk support" e "SCSI generic support" se si vuole usare un disco rigido esterno, ad esempio, e "SCSI CDROM support" se si ha un masterizzatore/lettore CD/DVD esterno collegato alla porta USB. Ricordate che una qualsiasi periferica come una chiavetta USB o un qualche tipo di memoria esterna, non necessariamente un disco rigido o una memoria flash, collegata alla presa USB, sarà vista dal kernel come
un disco rigido esterno, e verrà trattato di conseguenza. Verrà dunque creato il blocco corrispondente nella directory
/dev per poterlo montare esattamente come una qualsiasi altra partizione.
Serial ATA (prod) and Parallel ATA (experimental) driversDriver ATA e SATA per il kernel. Dovrete selezionare il chipset ed i bus corretti dalla lista.
Multi-device support (RAID and LVM)Consente di usare dischi e/o periferiche RAID nel sistema. Potrete selezionare i livelli 0,1,2,3,4,5 e 6, nonchè "linear" e "faulty" come caratteristiche RAID, sia modulari che direttamente nel kernel.
Fusion MPT device supportSono driver SCSI per periferiche su porta parallela, fibra ottica o bus seriale.
IEEE 1394 (FireWire) supportSi spiega da solo.
I2O supportI2O (intelligent Input/Output) consente di dividere i driver dell'hardware in due parti: una parte specifica dell'hardware ed una per il software -in questo caso il sistema operativo. Così è possibile trasportare diversi sistemi operativi sulla stessa piattaforma, avendo lo stesso modulo software. E' però necessario un adattatore specifico, e questa sezione se ne prende cura.
Macintosh device driverNel caso abbiate una macchina Mac con un mouse ad un tasto solo, questo driver può emulare le pressioni dei tasti 2 e 3.
Network device supportLa configurazione generale dei driver della rete e delle schede di rete. Qui potrete configurare al meglio la vostra Ethernet e, se è presente, il driver del vostro modem.
E' consuetudine nella comunità open source, ed in particolare per quanto riguarda GNU/Linux, consigliare di usare connessioni Ethernet dove possibile invece di connessioni modem dirette tramite USB. Usando un driver Ethernet la configurazione è estremamente più veloce, avendo il driver direttamente nel kernel, senza dover scaricare i driver per il modem, compilarli, ricompilarci il kernel, abilitare i moduli e riconfigurarli.
ISDN subsystemPer periferiche che usino collegamenti ISDN.
Telephony supportPer la telefonia e il VoIP. Non ha NULLA a che vedere con i modem. Serve solo per far funzionare eventuali carte telefoniche.
Input device supportDriver per comuni periferiche di ingresso: mouse, tavolette grafiche, joystick, touchscreen, tastiere, eccetera.
Character devicesMolte di queste sono fondamentali per il DRM (Direct Rendering Manager) e la grafica 3d, se intendete averla. Generalmente le uniche opzioni che si possono modificare senza problemi sono quelle relative ad AGP e DRM. Ricordate di abilitare il supporto per
rtc (Real Time Clock), in quanto serve almeno al 90% delle applicazioni che girano su GNU/Linux.
I2C supportE' un protocollo lento per il riconoscimento di chip di utilizzo meno indispensabile quali rilevatori di temperatura.
SPI support"Serial Peripheral Interface" può essere usato con sensori, eeprom e memorie Flash esterne al sistema, convertitori DA e AD, codec, eccetera. Può anche essere usato come bus per la trasmissione di dati da una telecamera. Non è indispensabile, ed in caso abbiate flash esterne USB, il driver USB se ne prenderà cura.
Dallas's 1-wire busCi potete collegare periferiche a bassa velocità con prese ad 1 pin, generalmente per sensori termici.
Hardware Monitoring SupportSe volete vedere qual è la temperatura del vostro sistema dovete selezionare il corretto chipset qui, selezionare "I2C support" e, in ACPI support, "Processor" e "Thermal Zone". Poi dovete scaricare
lm_sensors e... farmi un fischio, perchè il procedimento è lunghetto.
Multifunction device driversDriver di periferiche multifunzione, che provvedono a fornire porte USB, audio, video extra eccetera. Sono poco usate.
Multimedia devicesQui c'è Video for Linux, che potrete usare con una scheda di acquisizione video per registrare programmi televisivi su computer; Digital Video Broadcasting e Digital Audio Broadcasting.
Graphics supportSe non dovete giocare in Linux in modalità testuale vi raccomando di deselezionare "Support for frame buffer devices". Con molta probabilità, anche se avete una macchina veloce, potrebbe rallentare la scrittura e lo scrolling dei terminali nativi.
SoundALSA e OSS sono due protocolli di gestione del suono in Linux. OSS (Open Sound System) è ormai vecchio; vi raccomando di abilitare ALSA (Advanced Linux Sound Architecture) e di selezionare il drver giusto per la vostra scheda audio. Abilitate anche l'emulazione per OSS, potrebbe servire.
HID DevicesUna "Human Interface Device" è una periferica che prende ordini direttamente dall'utente. Non sono la solita tastiera o mouse. Sono alcuni tipi speciali degli stessi, che dialogano tramite protocollo USB o Bluetooth.
USB supportLa stragrande maggioranza delle opzioni qui può essere tranquillamente disabilitata, ma le principali da tenere sono "USB device filesystem", "EHCI", "UHCI" e "OHCI", oltre al suppoorto per le stampanti USB e per la memoria di massa. Ecco qua il driver per tutte le chiavette ed i dischi rigidi esterni. ;)
MMC/SD Card supportSe avete una SanDisk o una MultiMediaCard generica, ed il rispettivo lettore, entrate qui.
LED devicesSe avete periferiche LED...
Infiniband supportPer periferiche InfiniBand.
EDAC - error detecting and reporting (RAS)E' un driver avanzato per l'intercettazione ed il rapporto di errori di sistema. E' consigliabile abilitarlo. Potete metterlo modulare e poi abilitare "Main Memory EDAC reporting."
Real Time Clockil blocco
rtc nella directory
/dev è fondamentale, ma questo si riferisce alla
classe rispettiva. E' utile solo se volete aggiungere orologi di sistema alla macchina. Il
rtc primario è nella sezione "Character devices". Potete tranquillamente lasciar stare questo.
DMA Engine SupportIn genere è una buona cosa abilitarlo, in quanto si occupa di tutto il DMA al di fuori delle comunicazioni tra schede PCI (bus-mastering) e Direct Memory Access (tra dischi rigidi e RAM) senza mettere di mezzo il processore.
Auxiliary Display SupportGeneralmente si può lasciar stare, se avete configurato bene la sezione "Graphics support".
VirtualizationPermette (a quanto ho capito) di creare una migliore virtualizzazione a livello del kernel, favorendo l'emulazione di applicazioni o di processi anche di diversi sistemi operativi.
Firmware DriversSono generalmente driver per firmware di sistemi DELL o portatili, ma sono solitamente poco usati.
File systemsLa sezione è estremamente importante. Il kernel di Linux può supportare molti filesystem. I più usati sono
ext2, ext3, ReiserFS, JFS e
XFS. Consiglio di metterli tutti built-in, solo la prima opzione, senza selezionare le sottopzioni per ogni filesystem. Generalmente il solo supporto è più che sufficiente.
Più in basso c'è un sottomenu di nome "Native Language Support". Entrando troverete una lista di "codepage". Per l'Italia sono validi il "Codepage 850" e "iso8859-15". Selezionate anche "ASCII", "NLS ISO 8859-15" e "NLS UTF-8" (conosciuto anche come Unicode 8-bit).
Le restanti sezioni (
Instrumentation support, Kernel hacking, Security options, Cryptographic options, Library routines) sono di esclusivo utilizzo del kernel. Meglio non modificare nulla qui. Solo per smanettoni o sviluppatori. Se volete, potete deselezionare "Kernel debugging" e "Debug Filesystem" nella sezione "Kernel hacking", in quanto non sono indispensabili.
Configurazione terminata!!!
...e adesso?