Web Analytics Made Easy - Statcounter


https://www.amazon.it/dp/B0CT9YL557

We support WINRAR [What is this] - [Download .exe file(s) for Windows]

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
SITEMAP
Audiobooks by Valerio Di Stefano: Single Download - Complete Download [TAR] [WIM] [ZIP] [RAR] - Alphabetical Download  [TAR] [WIM] [ZIP] [RAR] - Download Instructions

Make a donation: IBAN: IT36M0708677020000000008016 - BIC/SWIFT:  ICRAITRRU60 - VALERIO DI STEFANO or
Privacy Policy Cookie Policy Terms and Conditions
a2 --- Kernel Linux

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 34.   Kernel Linux

Il kernel è il nocciolo del sistema operativo. I programmi utilizzano le funzioni fornite dal kernel e in questa maniera sono sollevati dall'agire direttamente con la CPU.

Il kernel Linux è costituito normalmente da un file soltanto, il cui nome può essere vmlinuz, oppure zImage, bzImage e altri ancora, ma può comprendere anche moduli aggiuntivi per la gestione di componenti hardware specifici che devono poter essere attivati e disattivati durante il funzionamento del sistema.

Quando si fa riferimento a un kernel in cui tutte le funzionalità che servono sono incluse nel file principale, si parla di kernel monolitico, mentre quando parte di queste sono poste all'interno di moduli esterni, si parla di kernel modulare. Il kernel monolitico ha il vantaggio di avere tutto in un file, ma nello stesso modo è rigido e non permette di liberare risorse quando le unità periferiche gestite non servono. Il kernel modulare ha il vantaggio di poter disattivare e riattivare i moduli a seconda delle esigenze, in particolare quando moduli distinti gestiscono in modo diverso lo stesso tipo di unità periferica. Tuttavia, a causa della frammentazione in molti file, l'uso dei moduli può essere fonte di errori.

In generale, l'uso dei kernel modulari dovrebbe essere riservato agli utilizzatori che hanno già un'esperienza sufficiente nella gestione dei kernel monolitici. In ogni caso, ci possono essere situazioni in cui l'uso di un kernel modulare è praticamente indispensabile, per esempio quando un certo tipo di dispositivo fisico può essere gestito in vari modi differenti e conflittuali, ma si tratta di situazioni rare.

34.1   Ricompilazione del kernel

Le distribuzioni GNU/Linux tendono a fornire agli utilizzatori un kernel modulare per usi generali. Anche se questo tipo di kernel si adatta sicuramente alla maggior parte delle configurazioni, ci sono situazioni particolari dove è preferibile costruire un proprio kernel, monolitico o modulare che sia.

Per poter comprendere il procedimento di compilazione descritto in questo capitolo, occorre sapere come si compila e si installa un programma tipico distribuito in forma sorgente, come descritto nel capitolo 24.

34.1.1   Kernel monolitico

Il procedimento descritto in questa sezione serve per generare un kernel monolitico, cioè un kernel in un solo file.

Per poter procedere alla compilazione del kernel è necessario avere installato gli strumenti di sviluppo software, cioè il compilatore e i sorgenti del kernel. In particolare, i sorgenti del kernel possono anche essere reperiti presso vari siti che offrono l'accesso attraverso il protocollo FTP. In tal caso si può fare una ricerca per i file che iniziano per linux-x.y.z.tar.bz2, dove x.y.z sono i numeri della versione.

Il numero di versione del kernel Linux è strutturato in tre livelli: x.y.z, dove il primo, x, rappresenta il valore più importante, mentre l'ultimo, z, rappresenta quello meno importante. Quello che conta, è porre attenzione al valore intermedio: y. Se si tratta di un numero pari, la versione si riferisce a un kernel ritenuto sufficientemente stabile, mentre un numero dispari rappresenta una versione destinata agli sviluppatori e non ritenuta adatta per l'utilizzo normale.

Se i sorgenti sono stati installati attraverso un disco (un CD-ROM) di una distribuzione, questi si potrebbero trovarsi da qualche parte a partire da /usr/src/, ma attualmente la loro compilazione non richiede una collocazione particolare nel file system, tanto che anche un utente comune, senza privilegi, può farlo, collocando i sorgenti nell'ambito della propria directory personale.

La distribuzione GNU/Linux Debian si limita a piazzare un archivio (un file compresso) nella directory /usr/src/, lasciando all'utente il compito di estrarlo dove meglio crede.

Riquadro 34.1. Procedura superata.

Nelle prime versioni del kernel Linux è stata utilizzata una procedura che attualmente è bene evitare di adottare. L'elenco seguente serve a sottolineare il fatto che nulla di tutto questo va fatto:

  • i sorgenti venivano estratti in modo da iniziare dalla directory /usr/src/linux/, spesso con l'aiuto di un collegamento simbolico, se erano disponibili diverse versioni affiancate;

  • venivano creati o modificati tre collegamenti simbolici contenuti nella directory /usr/include/:

    • /usr/include/asm --> /usr/src/linux/include/asm-i386/

    • /usr/include/linux --> /usr/src/linux/include/linux/

    • /usr/include/scsi --> /usr/src/linux/include/scsi

Si parte con l'estrazione dell'archivio che li contiene; naturalmente l'utente deve estrarre l'archivio in una posizione in cui gli sia concesso di farlo in base ai permessi che lo riguardano:

tar xjvf linux-x.y.z.tar.bz2[Invio]

Si tenga presente che i sorgenti possono essere estratti da un utente comune e compilati dallo stesso utente. Ciò che tale utente non dovrebbe poter fare è l'installazione effettiva del kernel.

Una volta installati i sorgenti del kernel, si può passare alla configurazione che precede la compilazione. Per questo, ci si posiziona nella directory dei sorgenti; quindi, dopo aver letto il file README, si può procedere.

cd linux-x.y.z[Invio]

La directory corrente deve essere quella a partire dalla quale si diramano i sorgenti del kernel.

make mrproper[Invio]

Serve a eliminare file e collegamenti vecchi che potrebbero interferire con una nuova compilazione. In particolare, elimina la configurazione data in precedenza alla compilazione del kernel.

make config[Invio]

È l'operazione più delicata attraverso la quale si definiscono le caratteristiche e i componenti del kernel che si vuole ottenere. Ogni volta che si esegue questa operazione viene riutilizzato il file .config contenente la configurazione impostata precedentemente, mentre alla fine la nuova configurazione viene salvata nello stesso file. Di conseguenza, ripetendo il procedimento make config, le scelte predefinite corrispondono a quelle effettuate precedentemente.

Il comando make mrproper elimina il file .config, quindi si deve fare attenzione a non eseguire tale comando se non è questa l'intenzione.

L'utilizzo del comando make config rappresenta è un metodo piuttosto spartano di configurare il sistema. Dopo le prime versioni del kernel Linux sono state aggiunte altre possibilità più pratiche, corrispondenti a comandi come quelli seguenti, ma si possono conoscere anche dei modi alternativi con il comando make help:

make menuconfig[Invio]

make xconfig[Invio]

make gconfig[Invio]

In generale, è conveniente usare il comando make menuconfig, che non richiede la grafica, al contrario degli altri due comandi indicati.

Figura 34.2. Il menù principale della configurazione del kernel attraverso il comando make menuconfig.

.------------------------------- Main Menu -------------------------------.
|  Arrow keys navigate the menu.  <Enter> selects submenus --->.          |
|  Highlighted letters are hotkeys.  Pressing <Y> includes, <N> excludes, |
|  <M> modularizes features.  Press <Esc><Esc> to exit, <?> for Help.     |
|  Legend: [*] built-in  [ ] excluded  <M> module  < > module capable     |
| .---------------------------------------------------------------------. |
| |      Code maturity level options  --->                              | |
| |      Loadable module support  --->                                  | |
| |      Processor type and features  --->                              | |
| |      General setup  --->                                            | |
| |      Memory Technology Devices (MTD)  --->                          | |
| |      Parallel port support  --->                                    | |
| |      Plug and Play configuration  --->                              | |
| |      Block devices  --->                                            | |
| |      Multi-device support (RAID and LVM)  --->                      | |
| |      Networking options  --->                                       | |
| |      Telephony Support  --->                                        | |
| `------v(+)-----------------------------------------------------------' |
|-------------------------------------------------------------------------|
|                    <Select>    < Exit >    < Help >                     |
`-------------------------------------------------------------------------'

Dopo la definizione della configurazione, si può passare alla compilazione del kernel relativo, utilizzando la sequenza di comandi seguente:

make clean[Invio]

make bzImage[Invio]

Si tratta di due operazioni che non richiedono alcun tipo di interazione con l'utente. Al termine della compilazione, se questa ha avuto successo, il nuovo kernel si trova nella directory arch/i386/boot/ con il nome bzImage (questo vale naturalmente nel caso si utilizzi l'architettura i386).

La sigla bzImage sta per big zImage, a indicare che si tratta di un'estensione del formato zImage. Il formato zImage si ottiene con il comando make zImage, ma attualmente lo si considera obsoleto.

Naturalmente, per fare in modo che il kernel possa essere utilizzato, questo va collocato dove il sistema che si occupa del suo avvio può trovarlo. Di solito lo si copia nella directory radice o in /boot/, dandogli il nome vmlinuz (come di consueto), sistemando poi ciò che serve per il sistema di avvio che si utilizza.

Generalmente, dal momento che si possono utilizzare più kernel alternativi, selezionandoli in fase di avvio, di solito il nome del file è completo della versione del kernel stesso: vmlinuz-x.y.z. Inoltre, si conserva una copia del file System.map, mettendola nella stessa directory in cui si trova il kernel, con un nome del tipo System.map-x.y.z; infine si fa la stessa cosa con il file .config, a cui si dà normalmente il nome config-x.y.z.

Una volta realizzato un kernel è necessario fare una prova per vedere se funziona. Il modo più semplice per il principiante per verificarne il funzionamento, con la garanzia di non poter fare dei danni, è quello di farne una copia in un dischetto di avvio (ovvero un dischetto di boot), ammesso che la dimensione del kernel lo consenta.

È bene ricordare che non si tratta di una copia nel senso normale del termine, perché in questo caso, cioè quello dell'esempio, il dischetto non contiene alcun file system. Di conseguenza, è inutile tentare poi di innestare un dischetto del genere.

È probabile che servano dei privilegi particolari per poter scrivere sul file di dispositivo corrispondente all'unità a dischetti, come si vede nel comando successivo:

cp arch/i386/boot/bzImage /dev/fd0[Invio]

Per utilizzare correttamente questo dischetto di avvio è molto probabile che si debba intervenire prima con il programma rdev o con knl.

34.1.2   Kernel modulare

Il procedimento per la creazione di un kernel modulare inizia nello stesso modo di quello monolitico e giunge alla creazione di un file che in più ha dei riferimenti a moduli esterni che vengono compilati a parte. Questi moduli, per poter essere gestiti correttamente, necessitano di programmi di servizio che si occupano della loro attivazione e disattivazione.

In questo caso, oltre ai sorgenti del kernel sono necessari i programmi per la gestione dei moduli. Questi si trovano normalmente in archivi il cui nome è organizzato in modo simile a quello dei sorgenti del kernel: modules-x.y.z.tar.gz. La struttura della versione rappresentata dai numeri x.y.z rispecchia lo stesso meccanismo utilizzato per i sorgenti del kernel, però non ne vengono prodotte altrettante versioni, pertanto si deve badare a utilizzare la versione più vicina a quella del kernel che si utilizza. Questo archivio si trova normalmente nella stessa directory del sito dal quale si ottengono i sorgenti del kernel.

Anche i programmi contenuti nell'archivio modules-x.y.z.tar.gz sono in forma sorgente e prima di poterli utilizzare devono essere compilati e installati.

Se si sta ricompilando il kernel attraverso i sorgenti della distribuzione GNU/Linux che si utilizza, è ragionevole supporre che questi programmi di gestione dei moduli siano già stati installati correttamente.

Per ottenere un kernel modulare, dopo la preparazione del file principale del kernel attraverso lo stesso procedimento visto nel caso di un kernel monolitico, si devono compilare i moduli:

make modules[Invio]

Quindi si installano, ma con i privilegi dell'utente root:

make modules_install[Invio]

Quello che si ottiene sono una serie di file oggetto, il cui nome ha un'estensione .o, raggruppati ordinatamente all'interno di directory discendenti da /lib/modules/x.y.z/, dove x.y.z rappresenta il numero della versione dei sorgenti del kernel. La posizione di questi file non deve essere cambiata.

Si osservi che la compilazione dei moduli deve essere ripetuta ogni volta che si ricompila la parte principale del kernel; in altre parole, i moduli non sono compatibili con un kernel differente da quello per il quale sono stati realizzati specificatamente, anche se si tratta della stessa versione.

34.1.3   Compilazione del kernel in una distribuzione GNU/Linux Debian

Teoricamente, la distribuzione GNU/Linux Debian consente di compilare il kernel e i moduli secondo il procedimento standard; tuttavia ciò non conviene, se non altro perché l'installazione dei moduli va a rimuovere un collegamento simbolico nella directory /lib/modules/ che punta a /etc/modprobe.conf.

La distribuzione GNU/Linux Debian mette a disposizione uno strumento per facilitare la compilazione del kernel, passando per la creazione di un pacchetto Debian vero e proprio, che poi può essere installato secondo la procedura comune della distribuzione stessa. Il pacchetto in questione è denominato kernel-package e per questo scopo può essere usato direttamente senza bisogno di alcuna configurazione. È sufficiente procedere nel modo seguente:

  1. cd directory_iniziale_dei_sorgenti
    

    ci si sposta nella directory iniziale dei sorgenti del kernel;

  2. make  {config|menuconfig|xconfig|...}
    

    si procede con la configurazione del kernel che si vuole ottenere;

  3. make-kpkg clean
    

    ci si prepara alla compilazione;

  4. make-kpkg --revision=versione kernel_image
    

    si esegue la compilazione generando l'archivio Debian corrispondente, nella directory precedente (la directory genitrice), completo di moduli se previsti.

    Questo ultimo passaggio richiede però i privilegi dell'utente root per arrivare alla creazione del pacchetto Debian.

L'esempio seguente si riferisce alla compilazione di un kernel 2.6.7 (compresi i moduli eventuali) collocato nella directory ~/linux-2.6.7/.

Questa collocazione è volutamente differente da quella standard per la distribuzione GNU/Linux Debian, che invece dovrebbe essere ~/kernel-source-2.6.7/, proprio per mostrare che ciò non influisce in questo contesto.

cd ~/linux-2.6.7[Invio]

make-kpkg clean[Invio]

su root[Invio]

make-kpkg --revision=custom.1.0 kernel_image[Invio]

Si può osservare che la versione è stata definita dalla stringa custom.1.0. Questo è ciò che viene suggerito nella documentazione originale. In particolare, il numero «1.0» va incrementato ogni volta che si predispone una versione successiva.

Al termine si ottiene l'archivio kernel-image-2.6.7_custom.1.0_i386.deb, collocato nella directory precedente a quella dei sorgenti da cui è stato ottenuto; per installarlo basta procedere come segue, usando naturalmente i privilegi dell'utente root:

dpkg -i ../kernel-image-2.6.7_custom.1.0_i386.deb[Invio]

34.2   Elementi della configurazione

Gli elementi richiesti per la configurazione del kernel prima della sua compilazione, dipendono molto dalla versione che si possiede. In particolare, può capitare che alcune voci vengano spostate da una versione all'altra del kernel.

Le varie opzioni sono raggruppate in alcuni gruppi principali, che dovrebbero guidare intuitivamente nella configurazione prima della compilazione del kernel:

  • {Code maturity level options}

    selezione del dettaglio con cui si vogliono definire le voci della configurazione;

  • {General setup}

    caratteristiche generali, sia fisiche, sia logiche del sistema;

  • {Loadable module support}

    gestione dei moduli del kernel;

  • {Processor type and features}

    caratteristiche del microprocessore o dei microprocessori;

  • {Power management options (ACPI, APM)}

    controllo del sistema di alimentazione e del risparmio energetico;

  • {Bus options (PCI, PCMCIA, EISA, MCA, ISA)}

    caratteristiche di vari tipi di bus;

  • {Executable file formats}

    formati dei file eseguibili;

  • {Device Drivers}

    controllo dei dispositivi di vario genere;

    • {Generic Driver Options}

      opzioni generali riferite alla gestione dei dispositivi;

    • {Memory Technology Devices (MTD)}

      gestione di memorie MTD, ovvero memoria speciale che ha la proprietà di non essere volatile come la RAM comune;

    • {Parallel port support}

      gestione delle porte parallele;

    • {Plug and Play configuration}

      gestione del Plug & Play;

    • {Block devices}

      gestione dei dispositivi a blocchi;

    • {ATA/IDE/MFM/RLL support}

      gestione di dischi ATA/ATAPI e simili;

    • {SCSI support}

      gestione di unità SCSI;

    • {Old CD-ROM drivers (not for SCSI or IDE/ATAPI drives)}

      gestione di vecchi tipi di lettori CD-ROM, che non sono compatibili con gli standard ATA/ATAPI e nemmeno con lo standard SCSI;

    • {Multi-device support (RAID and LVM)}

      gestione software di unità multiple di memorizzazione, come nel caso dei dischi RAID;

    • {Fusion MTP device support}

      gestione di dispositivi Fusion MPT;

    • {IEEE 1394 (FireWire) support}

      gestione di un bus IEEE 1394, noto anche con il nome FireWire;

    • {I2O device support}

      gestione di dispositivi periferici speciali denominati «I2O»;

    • {Network support}

      funzionalità di rete e gestione delle interfacce relative;

    • {ISDN subsystem}

      gestione di alcune schede speciali per la connessione a una rete ISDN (non è necessario utilizzare queste opzioni se si dispone di un «modem» ISDN esterno);

    • {Telephony Support}

      gestione di hardware speciale per la telefonia digitale su IP;

    • {Input device support}

      gestione di hardware per l'inserimento dati (tastiere, mouse ecc.);

    • {Character devices}

      gestione dei dispositivi a caratteri (terminali, porte seriali, porte parallele, mouse, ecc.);

    • {Multimedia devices}

      gestione di dispositivi multimediali;

    • {Graphics support}

      gestione della console;

    • {Sound}

      gestione dell'audio;

    • {USB support}

      gestione del bus USB e delle unità periferiche relative;

  • {File systems}

    gestione di file system, con le problematiche relative;

  • {Profiling support}

  • {Kernel hacking}

    configurazione particolare per chi vuole lavorare attivamente allo sviluppo del kernel;

  • {Security options}

    configurazione dei sistemi di sicurezza attuati dal kernel;

  • {Cryptographic options}

    funzionalità crittografiche;

  • {Library routines}

    librerie.

Nelle sezioni seguenti vengono descritte in parte solo alcuni di questi gruppi di configurazione, mostrando qualche esempio che comunque non può esaurire il problema.

34.2.1   Code maturity level options

Questa sezione della procedura di configurazione si riferisce al livello di dettaglio a cui si è interessati, per quanto riguarda le opzioni di configurazione che possono essere richieste. Se si è interessati a funzionalità relativamente nuove, conviene abilitare il dettaglio massimo nella selezione delle opzioni di configurazione.

[*] Prompt for development and/or incomplete code/drivers
[*]   Select only drivers expected to compile cleanly (NEW)   
[*]   Select only drivers that don't need compile-time external firmware

34.2.2   General setup

Questa sezione raccoglie una serie di opzioni di importanza generale, che non hanno trovato una collocazione specifica in un'altra posizione della procedura di configurazione.

[*] Support for paging of anonymous memory (NEW)
[*] System V IPC
[*] BSD Process Accounting
[*] Sysctl support
[ ] Kernel .config support
[ ] Remove kernel features (for embedded systems) (NEW)  --->

34.2.3   Loadable module support

Questa sezione della procedura di configurazione permette di attivare il sistema di gestione dei moduli. I moduli sono blocchetti di kernel separati che possono essere attivati e disattivati durante il funzionamento del sistema. Solo alcune parti del kernel possono essere gestite in forma di modulo.

Se si intende creare un kernel modulare, è evidente la necessità di attivare questa gestione all'interno della parte principale del kernel stesso.

[*] Enable loadable module support
[*]   Module unloading
[ ]     Forced module unloading (NEW)
[ ]   Module versioning support (EXPERIMENTAL)
[*]   Automatic kernel module loading

34.2.4   Processor type and features

Questa sezione serve a definire il tipo di microprocessore utilizzato. In generale, se si utilizza un'architettura di tipo ix86, la selezione del tipo di microprocessore 386 garantisce la creazione di un kernel compatibile nella maggior parte delle situazioni, a discapito però delle prestazioni.

Sempre nel caso di architettura di tipo ix86, è possibile abilitare l'emulazione per il coprocessore matematico (i387), che in alcuni elaboratori molto vecchi non è incluso. Di solito, l'inclusione del codice di emulazione non crea problemi di conflitti, perché viene individuata automaticamente la presenza dell'hardware relativo e l'emulazione non viene attivata se non quando necessario. In tal modo, includendo questa funzionalità si genera un kernel più compatibile.

L'esempio che si vede sotto si riferisce a una compatibilità limitata a microprocessori i586 o superiori:

    Subarchitecture Type (PC-compatible)  --->
    Processor family (586/K5/5x86/6x86/6x86MX)  --->
[ ] Generic x86 support
[ ] 486 emulation
[ ] HPET Timer Support
[ ] Symmetric multi-processing support
[ ] Preemptible Kernel
[ ] Local APIC support on uniprocessors
[*] Machine Check Exception
[ ]   Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium
< > Toshiba Laptop support
< > Dell laptop support
< > /dev/cpu/microcode - Intel IA32 CPU microcode support
< > /dev/cpu/*/msr - Model-specific register support
< > /dev/cpu/*/cpuid - CPU information support
< > BIOS Enhanced Disk Drive calls determine boot disk (EXPERIMENTAL)
    High Memory Support (off)  --->
[ ] Math emulation
[*] MTRR (Memory Type Range Register) support

34.2.5   Power management options

Questa sezione permette di accedere alle funzionalità legate al controllo dell'alimentazione e al risparmio energetico. In generale si tratta di opzioni delicate che dipendono molto dalle caratteristiche fisiche dell'elaboratore.

[*] Power Management support
[ ]   Software Suspend (EXPERIMENTAL)
[ ]   Suspend-to-Disk Support
    ACPI (Advanced Configuration and Power Interface) Support  --->
    APM (Advanced Power Management) BIOS Support  --->
    CPU Frequency scaling  --->

L'esempio mostra l'attivazione delle funzionalità in generale, che però devono essere specificate all'interno di altri menù. In generale, dovrebbe essere possibile attivare le funzioni che consentono di spegnere l'elaboratore via software, senza problemi particolari di incompatibilità, selezionando la voce {APM (Advanced Power Management) BIOS Support} e compilando la maschera relativa nel modo seguente:

<*> APM (Advanced Power Management) BIOS support
[ ]   Ignore USER SUSPEND
[ ]   Enable PM at boot time
[*]   Make CPU Idle calls when idle
[ ]   Enable console blanking using APM
[*]   RTC stores time in GMT
[ ]   Allow interrupts during APM BIOS calls
[ ]   Use real mode APM BIOS call to power off

Si osservi che l'attivazione della voce {Use real mode APM BIOS call to power off} può essere controproducente con alcune schede madri che dispongono del BIOS AMI.

34.2.6   Bus options

Questa sezione permette di selezionare la gestione di alcuni tipi di bus. Generalmente è necessario abilitare l'uso di bus ISA e PCI:

[*] PCI support
      PCI access mode (Any)  --->
[ ]   Legacy /proc/pci interface
[*]   PCI device name database
[*] ISA support
[ ]   EISA support
[ ] MCA support
< > NatSemi SCx200 support
[*] Support for hot-pluggable devices
      PCMCIA/CardBus support  --->
      PCI Hotplug Support  --->

Per quanto riguarda la gestione di schede PCMCIA, è necessario attivare la gestione dei vari tipi di integrati che sono in grado di gestire un bus di questo tipo. Si accede a queste voci da {PCMCIA/CardBus support}:

<*> PCMCIA/CardBus support
<*>   CardBus yenta-compatible bridge support
<*>   i82092 compatible bridge support
<*>   i82365 compatible bridge support
<*>   Databook TCIC host bridge support

34.2.7   Executable file formats

Il kernel deve essere predisposto per il tipo di eseguibili che si vogliono usare. In generale, se possibile, conviene abilitare tutti i tipi disponibili:

<*> Kernel support for ELF binaries
<*> Kernel support for a.out and ECOFF binaries
<*> Kernel support for MISC binaries

34.2.8   Parallel port support

La gestione della porta parallela non riguarda solo la stampa, dal momento che consente anche l'uso di altri tipi di unità periferiche. In questo gruppo di opzioni è possibile abilitare l'uso delle porte parallele, stabilendo eventualmente il grado di compatibilità di queste.

<*> Parallel port support
<*>   PC-style hardware
< >     Multi-IO cards (parallel and serial)
[ ]     Use FIFO/DMA if available (EXPERIMENTAL)
[ ]     SuperIO chipset support (EXPERIMENTAL)
<*>   Support for PCMCIA management for PC-style ports
[*] Support foreign hardware
[*] IEEE 1284 transfer modes

34.2.9   Plug and Play support

La gestione del Plug & Play permette al kernel di configurare automaticamente alcuni dispositivi che aderiscono a queste specifiche.

[*] Plug and Play support
[ ]   PnP Debug Messages
---   Protocols
[*]   ISA Plug and Play support (EXPERIMENTAL)
[*]   Plug and Play BIOS support (EXPERIMENTAL)

34.2.10   Block devices

Un dispositivo a blocchi è quello che utilizza una comunicazione a blocchi di byte di dimensione fissa, contrapponendosi al dispositivo a caratteri con cui la comunicazione avviene byte per byte. Il dispositivo a blocchi tipico è un'unità a disco.

Merita attenzione particolare anche il dispositivo definito loopback,(1) che rappresenta in pratica un file contenente l'immagine di un disco, che viene letto come se fosse un disco o una partizione reale. Questa possibilità, tra le altre cose, consente di gestire direttamente i file che contengono la riproduzione esatta di dischetti, senza bisogno di trasferire questi file su dischetti reali.

Infine, è qui che si può abilitare e configurare la gestione dei dischi RAM, ovvero di dischi che vengono rappresentati nella memoria RAM.

<*> Normal floppy disk support
< > XT hard disk support
<M> Parallel port IDE device support
---   Parallel IDE high-level drivers
<M>   Parallel port IDE disks
<M>   Parallel port ATAPI CD-ROMs
<M>   Parallel port ATAPI disks
<M>   Parallel port ATAPI tapes
<M>   Parallel port generic ATAPI devices
---   Parallel IDE protocol modules
<M>   ATEN EH-100 protocol
<M>   MicroSolutions backpack (Series 5) protocol
<M>   MicroSolutions backpack (Series 6) protocol
<M>   DataStor Commuter protocol
<M>   DataStor EP-2000 protocol
<M>   FIT TD-2000 protocol
<M>   FIT TD-3000 protocol
<M>   Shuttle EPAT/EPEZ protocol
[*]     Support c7/c8 chips (EXPERIMENTAL)
<M>   Shuttle EPIA protocol
<M>   Freecom IQ ASIC-2 protocol
<M>   FreeCom power protocol
<M>   KingByte KBIC-951A/971A protocols
<M>   KT PHd protocol
<M>   OnSpec 90c20 protocol
<M>   OnSpec 90c26 protocol
<M> Compaq SMART2 support
<M> Compaq Smart Array 5xxx support
[*]   SCSI tape drive support for Smart Array 5xxx
<M> Mylex DAC960/DAC1100 PCI RAID Controller support
<M> Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)
<*> Loopback device support
<*>   Cryptoloop Support
<*> Network block device support
<*> RAM disk support
(8192) Default RAM disk size
[*] Initial RAM disk (initrd) support
[ ] Support for Large Block Devices

34.2.11   ATA/IDE/MFM/RLL support

La gestione di unità a blocchi tradizionali ed economiche, ATA/ATAPI, viene inserita in un menù apposito. In particolare, è possibile includere una gestione specifica per alcuni integrati, specialmente per quelli che hanno dimostrato di avere dei difetti di funzionamento. È molto importante anche la possibilità di gestire secondo il protocollo SCSI alcuni dispositivi ATA.

<*> ATA/ATAPI/MFM/RLL support
<*>   Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
---     Please see Documentation/ide.txt for help/info on IDE drives
[ ]     Use old disk-only driver on primary interface
<*>     Include IDE/ATA-2 DISK support
[ ]       Use multi-mode by default
[ ]       Auto-Geometry Resizing support
<M>     PCMCIA IDE support
<*>     Include IDE/ATAPI CDROM support
<M>     Include IDE/ATAPI TAPE support (EXPERIMENTAL)
<*>     Include IDE/ATAPI FLOPPY support
<*>     SCSI emulation support
[ ]     IDE Taskfile Access
[*]     IDE Taskfile IO (EXPERIMENTAL)
---     IDE chipset support/bugfixes
[*]     CMD640 chipset bugfix/support
[ ]       CMD640 enhanced support
< >     PNP EIDE support
[*]     PCI IDE chipset support
[*]       Sharing PCI IDE interrupts support
[ ]       Boot off-board chipsets first support
<*>       Generic PCI IDE Chipset Support
<M>       OPTi 82C621 chipset enhanced support (EXPERIMENTAL)
<*>       RZ1000 chipset bugfix/support
[*]       Generic PCI bus-master DMA support
[ ]         ATA tagged command queueing (EXPERIMENTAL)
[ ]         Force enable legacy 2.0.X HOSTS to use DMA
[*]         Use PCI DMA by default when available
[*]           Enable DMA only for disks
[ ]         ATA Work(s) In Progress (EXPERIMENTAL)
<M>         AEC62XX chipset support
<M>         ALI M15x3 chipset support
[ ]           ALI M15x3 WDC support (DANGEROUS)
<M>         AMD and nVidia IDE support
<M>         CMD64{3|6|8|9} chipset support
<M>         Compaq Triflex IDE support
<M>         CY82C693 chipset support
<M>         Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTAL)
<M>         Cyrix/National Semiconductor CS5530 MediaGX chipset support   
<M>         HPT34X chipset support
<M>         HPT36X/37X chipset support
<M>         National SCx200 chipset support
<M>         Intel PIIXn chipsets support
<M>         NS87415 chipset support
<M>         PROMISE PDC202{46|62|65|67} support
<M>         PROMISE PDC202{68|69|70|71|75|76|77} support
<M>         ServerWorks OSB4/CSB5/CSB6 chipsets support
<M>         Silicon Image chipset support
<*>         SiS5513 chipset support
<M>         SLC90E66 chipset support
<M>         Tekram TRM290 chipset support
<*>         VIA82CXXX chipset support
[ ]     Other IDE chipset support
[ ]     IGNORE word93 Validation BITS

34.2.12   SCSI support

Questa sezione riguarda la gestione del kernel delle unità SCSI. Le interfacce SCSI non hanno uno standard comune come avviene nel caso di quelle ATA e derivate, per cui è indispensabile includere il codice specifico per tutte le interfacce che si intendono utilizzare.

In certe situazioni può essere necessario abilitare la «gestione generica» SCSI. In particolare, questo serve nel caso si preveda l'uso di un masterizzatore SCSI.

--- SCSI device support
[*]   legacy /proc/scsi/ support
---   SCSI support type (disk, tape, CD-ROM)
<*>   SCSI disk support
<M>   SCSI tape support
<M>   SCSI OnStream SC-x0 tape support
<*>   SCSI CDROM support
[ ]     Enable vendor-specific extensions (for SCSI CDROM)
<*>   SCSI generic support
---   Some SCSI devices (e.g. CD jukebox) support multiple LUNs
[*]   Probe all LUNs on each SCSI device
[*]   Build with SCSI REPORT LUNS support
[*]   Verbose SCSI error reporting (kernel size +=12K)
[*]   SCSI logging facility
      SCSI low-level drivers  --->
      PCMCIA SCSI adapter support  --->

34.2.13   Multi-device support (RAID and LVM)

La gestione software di più unità di memorizzazione in modo combinato richiede la selezione di un gruppo speciale di opzioni. Può trattarsi di dischi o partizioni ridondanti come forma di protezione dalle perdite di dati, oppure può essere un modo per fondere assieme più partizioni in una partizione logica più grande. Se c'è la possibilità, conviene attivare almeno le funzionalità necessarie a gestire il livello RAID 1.

[*] Multiple devices driver support (RAID and LVM)
<*>   RAID support
<*>     Linear (append) mode
<*>     RAID-0 (striping) mode
<*>     RAID-1 (mirroring) mode
<*>     RAID-4/RAID-5 mode
<*>     Multipath I/O support
< >   Device mapper support

34.2.14   Networking support

La configurazione delle funzionalità di rete è importante anche se il proprio elaboratore è isolato. Quando è attiva la gestione della rete, il kernel fornisce implicitamente le funzionalità di inoltro dei pacchetti, consentendo in pratica il funzionamento come router. Tuttavia, l'attivazione di ciò dipende dall'inclusione della gestione del file system /proc/ e dell'interfaccia sysctl. Inoltre, durante il funzionamento del sistema è necessario attivare espressamente l'inoltro IPv4 attraverso un comando simile a quello seguente:

echo '1' > /proc/sys/net/ipv4/ip_forward[Invio]

Esiste anche un comando analogo per IPv6, che però va usato soltanto quando serve veramente, perché con la funzionalità di inoltro attiva il nodo non prende in considerazione la configurazione automatica di Radvd:

echo 1 > /proc/sys/net/ipv6/conf/interfaccia/forwarding[Invio]

[*] Networking support
      Networking options  --->
[*]   Network device support
        ARCnet devices  --->
<*>     Dummy net driver support
<M>     Bonding driver support
<M>     EQL (serial line load balancing) support
<*>     Universal TUN/TAP device driver support
<M>     Ethertap network tap
<M>     General Instruments Surfboard 1000
        Ethernet (10 or 100Mbit)  --->
        Ethernet (1000 Mbit)  --->
        Ethernet (10000 Mbit)  --->
[*]     FDDI driver support
<M>       Digital DEFEA and DEFPA adapter support
<M>       SysKonnect FDDI PCI support
[*]     HIPPI driver support (EXPERIMENTAL)
<M>       Essential RoadRunner HIPPI PCI adapter support (EXPERIMENTAL)
[ ]         Use large TX/RX rings (EXPERIMENTAL)
<*>     PLIP (parallel port) support
<*>     PPP (point-to-point protocol) support
[ ]       PPP multilink support (EXPERIMENTAL)
[*]       PPP filtering
<*>       PPP support for async serial ports
<*>       PPP support for sync tty ports
<*>       PPP Deflate compression
<*>       PPP BSD-Compress compression
<*>       PPP over Ethernet (EXPERIMENTAL)
<M>     SLIP (serial line) support
[*]       CSLIP compressed headers
[*]       Keepalive and linefill
[*]       Six bit SLIP encapsulation
        Wireless LAN (non-hamradio)  --->
        Token Ring devices  --->
[*]     Fibre Channel driver support
<M>     Red Creek Hardware VPN (EXPERIMENTAL)
<M>     Traffic Shaper (EXPERIMENTAL)
        Wan interfaces  --->
        PCMCIA network device support  --->
    Amateur Radio support  --->
    IrDA (infrared) support  --->
    Bluetooth support  --->

Le opzioni di funzionamento della rete sono raccolte in un menù a cui si accede dalla voce {Networking options}:

<*> Packet socket
[ ]   Packet socket: mmapped IO
<*> Netlink device emulation
<*> Unix domain sockets
<*> PF_KEY sockets
[*] TCP/IP networking
[*]   IP: multicasting
[*]   IP: advanced router
[*]     IP: policy routing
[*]       IP: use netfilter MARK value as routing key
[*]       IP: fast network address translation
[*]     IP: equal cost multipath
[*]     IP: use TOS value as routing key
[*]     IP: verbose route monitoring
[ ]   IP: kernel level autoconfiguration
<*>   IP: tunneling
<*>   IP: GRE tunnels over IP
[ ]     IP: broadcast GRE over IP
[*] IP: multicast routing
[ ]   IP: PIM-SM version 1 support
[ ]   IP: PIM-SM version 2 support
[ ] IP: ARP daemon support (EXPERIMENTAL)
[ ] IP: TCP Explicit Congestion Notification support
[*] IP: TCP syncookie support (disabled per default)
<*> IP: AH transformation
<*> IP: ESP transformation
<*> IP: IPComp transformation
    IP: Virtual Server Configuration  --->
<*> The IPv6 protocol (EXPERIMENTAL)
[*]   IPv6: Privacy Extensions (RFC 3041) support
<M>   IPv6: AH transformation
<M>   IPv6: ESP transformation
<M>   IPv6: IPComp transformation
<M>   IPv6: IPv6-in-IPv6 tunnel
< > DECnet Support
< > 802.1d Ethernet Bridging
[*] Network packet filtering (replaces ipchains)  --->
<M> IPsec user configuration interface
    SCTP Configuration (EXPERIMENTAL)  --->
< > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
< > 802.1Q VLAN Support
< > ANSI/IEEE 802.2 LLC type 2 Support
< > The IPX protocol
< > Appletalk protocol support
< > CCITT X.25 Packet Layer (EXPERIMENTAL)
< > LAPB Data Link Driver (EXPERIMENTAL)
[ ] Frame Diverter (EXPERIMENTAL)
< > Acorn Econet/AUN protocols (EXPERIMENTAL)
< > WAN router
[ ] Fast switching (read help!)
[ ] Forwarding between high speed interfaces
    QoS and/or fair queueing  --->
    Network testing  --->

La gestione relativa a IPTables, diventa accessibile in un menù separato, dopo aver attivato la voce {Network packet filtering}:

--- Network packet filtering (replaces ipchains)
[ ]   Network packet filtering debugging
      IP: Netfilter Configuration  --->
      IPv6: Netfilter Configuration  --->

Per accedere alla gestione di filtro IPv4, occorre selezionare la voce {IP: Netfilter Configuration}:

<*> Connection tracking (required for masq/NAT)
<*>   FTP protocol support
<*>   IRC protocol support
<*>   TFTP protocol support
<*>   Amanda backup protocol support
<*> Userspace queueing via NETLINK
<*> IP tables support (required for filtering/masq/NAT)
<*>   limit match support
<*>   IP range match support
<*>   MAC address match support
<*>   Packet type match support
<*>   netfilter MARK match support
<*>   Multiple port match support
<*>   TOS match support
<M>   recent match support
<M>   ECN match support
<M>   DSCP match support
<*>   AH/ESP match support
<*>   LENGTH match support
<*>   TTL match support
<*>   tcpmss match support
<M>   Helper match support
<*>   Connection state match support
<M>   Connection tracking match support
<*>   Owner match support
<*>   Packet filtering
<*>     REJECT target support
<*>   Full NAT
<*> MASQUERADE target support
<*> REDIRECT target support
<M> NETMAP target support
<M> SAME target support
[ ] NAT of local connections (READ HELP)
<M> Basic SNMP-ALG support (EXPERIMENTAL)
<*> Packet mangling
<*>   TOS target support
<M>   ECN target support
<M>   DSCP target support
<*>   MARK target support
<M>   CLASSIFY target support
<*> LOG target support
<M> ULOG target support
<M> TCPMSS target support
<M> ARP tables support
<M>   ARP packet filtering
<M>   ARP payload mangling

Naturalmente, dal menù principale di questo gruppo è necessario accedere ad altri menù secondari per la selezione delle interfacce di rete utilizzate effettivamente.

34.2.15   Input device support

I dispositivi per l'inserimento dati richiedono la selezione di una serie di opzioni, che fanno capo a questo menù:

< > ct82c710 Aux port controller
<*> Parallel port keyboard adapter
<M> PCI PS/2 keyboard and PS/2 mouse controller
--- Input Device Drivers
--- Keyboards
<*>   Sun Type 4 and Type 5 keyboard support
<*>   XT Keyboard support
<*>   Newton keyboard
[*] Mice
<*>   PS/2 mouse
[ ]     Synaptics TouchPad
<*>   Serial mouse
<M>   InPort/MS/ATIXL busmouse
[ ]     ATI XL variant (NEW)
<M>   Logitech busmouse
<M>   IBM PC110 touchpad
[ ] Joysticks
[ ] Touchscreens
[*] Misc
<M>   PC Speaker support
< >   User level driver support (NEW)

34.2.16   Character devices

Un dispositivo a caratteri è quello che utilizza una comunicazione byte per byte e si contrappone a quello a blocchi con cui la comunicazione avviene attraverso l'uso di blocchi di byte di dimensione fissa.

[*] Non-standard serial port support
<M>   Computone IntelliPort Plus serial support
<M>   Comtrol RocketPort support
<M>   Cyclades async mux support
[ ]     Cyclades-Z interrupt mode operation (EXPERIMENTAL)
<M>   Digiboard Intelligent Async Support
<M>   Hayes ESP serial port support
<M>   Moxa Intellio support
<M>   Moxa SmartIO support
<M>   Multi-Tech multiport card support (EXPERIMENTAL)
<M>   Microgate SyncLink card support
<M>   SyncLink Multiport support
<M>   HDLC line discipline support
<M>   SDL RISCom/8 card support
<M>   Specialix IO8+ card support
[*]     Specialix DTR/RTS pin is RTS
<M>   Specialix SX (and SI) card support
<M>   Specialix RIO system support
[ ]     Support really old RIO/PCI cards
[*]   Stallion multiport serial support
<M>     Stallion EasyIO or EC8/32 support
<M>     Stallion EC8/64, ONboard, Brumby support
    Serial drivers  --->
[*] Unix98 PTY support
(256) Maximum number of Unix98 PTYs in use (0-2048)
<*> Parallel printer support
[*]   Support for console on line printer
<M> Support for user-space parallel port device drivers
<M> Texas Instruments parallel link cable support
    I2C support  --->
    Mice  --->
<M> QIC-02 tape support
[*]   Do you want runtime configuration for QIC-02
---     Setting runtime QIC-02 configuration is done with qic02conf
---     from the tpqic02-support package.  It is available at
---     metalab.unc.edu or ftp://titus.cfw.com/pub/Linux/util/
    IPMI  --->
    Watchdog Cards  --->
<M> Intel/AMD/VIA HW Random Number Generator support
<*> /dev/nvram support
<*> Enhanced Real Time Clock Support
<M> Double Talk PC internal speech card support
<M> Siemens R3964 line discipline
<M> Applicom intelligent fieldbus card support
<M> Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL)
    Ftape, the floppy tape device driver  --->
<M> /dev/agpgart (AGP Support)
<M>   ALI chipset support
<M>   ATI chipset support
<M>   AMD Irongate, 761, and 762 chipset support
<M>   AMD Opteron/Athlon64 on-CPU GART support
<M>   Intel 440LX/BX/GX, I8xx and E7x05 chipset support
<M>   NVIDIA nForce/nForce2 chipset support
<M>   SiS chipset support
<M>   Serverworks LE/HE chipset support
<M>   VIA chipset support
[*] Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)
<M>   3dfx Banshee/Voodoo3+
<M>   3dlabs GMX 2000
<M>   ATI Rage 128
<M>   ATI Radeon
<M>   Intel I810
<M>   Intel 830M, 845G, 852GM, 855GM, 865G
<M>   Matrox g200/g400
<M>   SiS video cards
    PCMCIA character devices  --->
<*> ACP Modem (Mwave) support
<M> RAW driver (/dev/raw/rawN)
(256) Maximum number of RAW devices to support (1-8192)
<M> Hangcheck timer

34.2.17   Graphic support

Questa sezione riguarda la gestione della console, dal punto di vista grafico:

[*] Support for frame buffer devices
<M>   CyberPro 2000/2010/5000 support
[ ]   IMS Twin Turbo display support
<M>   VGA 16-color graphics support
<M>   VESA VGA graphics support
<M>   Hercules mono graphics support
<M>   nVidia Riva support
<M>   Intel 810/815 support (EXPERIMENTAL)
[ ]     use VESA Generalized Timing Formula (NEW)
<M>   Matrox acceleration
[*]     Millennium I/II support
[*]     Mystique support
[*]     G100/G200/G400/G450/G550 support
<M>     Matrox I2C support
<M>       G400 second head support
[*]     Multihead support
<M>   ATI Radeon display support
<M>   ATI Rage128 display support
<M>   ATI Mach64 display support
[*]     Mach64 CT/VT/GT/LT (incl. 3D RAGE) support
[*]     Mach64 GX support
[ ]       Rage XL No-BIOS Init support
<M>   SIS acceleration
[*]     SIS 630/540/730 support
[*]     SIS 315H/315 support
<M>   NeoMagic display support
<M>   3Dfx Banshee/Voodoo3 display support
<M>   3Dfx Voodoo Graphics (sst1) support
<M>   Trident support
< > Virtual Frame Buffer support (ONLY FOR TESTING!)
    Console display driver support  --->
    Logo configuration  --->

Può essere importante verificare la configurazione contenuta nel menù a cui si accede dalla voce {Console display driver support}:

--- VGA text console
[*]   Video mode selection support
<M> MDA text console (dual-headed) (EXPERIMENTAL)
< > Framebuffer Console support

34.2.18   Sound

Questo gruppo di opzioni consente di gestire le funzionalità audio, specificando l'uso di una scheda audio particolare.

<*> Sound card support
    Advanced Linux Sound Architecture  --->
    Open Sound System  --->

Attraverso la voce {Advanced Linux Sound Architecture} si raggiunge un menù specifico; l'altro menù, riferito alla voce {Open Sound System}, non è più consigliato.

<*> Advanced Linux Sound Architecture
<M>   Sequencer support              
<M>     Sequencer dummy client       
[*]   OSS API emulation              
<M>     OSS Mixer API                
<M>     OSS PCM (digital audio) API  
[*]     OSS Sequencer API            
<M>   RTC Timer support              
[ ]   Verbose printk                 
[ ]   Debug (NEW)                    
      Generic devices  --->          
      ISA devices  --->              
      PCI devices  --->              
      ALSA USB devices  --->         
      PCMCIA devices  --->           

34.2.19   USB support

Questo gruppo di opzioni consente la gestione di adattatori USB e delle unità periferiche relative. In generale conviene prevedere l'uso di tutti i tipi di adattatori USB, assieme all'accesso a memorie di massa (dischi esterni), che sono componenti abbastanza comuni.

<*> Support for USB
[ ]   USB verbose debug messages                                     
---   Miscellaneous USB options                                      
[*]   USB device filesystem                                          
[ ]   Enforce USB bandwidth allocation (EXPERIMENTAL)                
[ ]   Dynamic USB minor allocation (EXPERIMENTAL)                    
---   USB Host Controller Drivers                                    
<*>   EHCI HCD (USB 2.0) support                                     
<*>   OHCI HCD support                                               
<*>   UHCI HCD (most Intel and VIA) support                          
---   USB Device Class drivers                                       
<*>   USB Audio support                                              
< >   USB Bluetooth TTY support                                      
<M>   USB MIDI support                                               
<*>   USB Modem (CDC ACM) support                                    
<*>   USB Printer support                                            
<*>   USB Mass Storage support                                       
[ ]     USB Mass Storage verbose debug                               
[*]     Datafab Compact Flash Reader support (EXPERIMENTAL)          
[*]     Freecom USB/ATAPI Bridge support                             
[*]     ISD-200 USB/ATA Bridge support                               
[*]     Microtech CompactFlash/SmartMedia support                    
[*]     HP CD-Writer 82xx support (EXPERIMENTAL)                     
[*]     SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)
[*]     SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)            
[*]     Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)           
---   USB Human Interface Devices (HID)                              
<M>   USB Human Interface Device (full HID) support                  
[*] HID input layer support                                          
[ ]   Force feedback support (EXPERIMENTAL)                          
[*] /dev/hiddev raw HID device support                               
    USB HID Boot Protocol drivers  --->                              
<M> Aiptek 6000U/8000U tablet support                                
<M> Wacom Intuos/Graphire tablet support                             
<M> KB Gear JamStudio tablet support                                 
<M> Griffin PowerMate and Contour Jog support                        
<M> X-Box gamepad support                                            
--- USB Imaging devices                                              
<M> USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)          
<*> USB Scanner support                                              
<M> Microtek X6USB scanner support                                   
<M> HP53xx USB scanner support (EXPERIMENTAL)                        
--- USB Multimedia devices                                           
<M> USB 3com HomeConnect (aka vicam) support (EXPERIMENTAL)          
<M> D-Link USB FM radio support (EXPERIMENTAL)                       
<M> USB IBM (Xirlink) C-it Camera support                            
<M> USB Konica Webcam support                                        
<M> USB OV511 Camera support                                         
<M> USB Philips Cameras                                              
<M> USB SE401 Camera support                                         
<M> USB STV680 (Pencam) Camera support                               
--- USB Network adaptors                                             
<M> USB CATC NetMate-based Ethernet device support (EXPERIMENTAL)    
<M> USB KLSI KL5USB101-based ethernet device support                 
<M> USB Pegasus/Pegasus-II based ethernet device support             
<M> USB RTL8150 based ethernet device support (EXPERIMENTAL)         
<M> Multi-purpose USB Networking Framework                           
---   USB Host-to-Host Cables                                        
[*]   AnchorChips 2720 based cables (Xircom PGUNET, ...)             
[*]   eTEK based host-to-host cables (Advance, Belkin, ...)          
[*]   GeneSys GL620USB-A based cables                                
[*]   NetChip 1080 based cables (Laplink, ...)                       
[*]   Prolific PL-2301/2302 based cables                             
---   Intelligent USB Devices/Gadgets                                
[*]   Embedded ARM Linux links (iPaq, ...)                           
[*]   Epson 2888 based firmware (DEVELOPMENT)                        
[*]   Sharp Zaurus (stock ROMs)                                      
[*]   CDC Ethernet support (smart devices such as cable modems)      
---   USB Network Adapters                                           
[*]   ASIX AX88172 Based USB 2.0 Ethernet Devices                    
--- USB port drivers                                                 
<*> USS720 parport driver                                            
    USB Serial Converter support  --->                               
--- USB Miscellaneous drivers                                        
<M> EMI 2|6 USB Audio interface support                              
<M> Texas Instruments Graph Link USB (aka SilverLink) cable support  
<M> USB Auerswald ISDN support (EXPERIMENTAL)                        
<M> USB Diamond Rio500 support (EXPERIMENTAL)                        
<M> Tieman Voyager USB Braille display support (EXPERIMENTAL)        
<M> USB LCD driver support                                           
< > USB testing driver (DEVELOPMENT)                                 
<M> Support for USB Gadgets  --->                                    

34.2.20   Filesystems

Attraverso questa sezione si definiscono i tipi di file system che si vogliono gestire. In particolare, anche i file system virtuali, come /proc/ e /dev/pty/, vengono definiti qui.

Il file system standard dei sistemi GNU/Linux è il tipo Second-extended, ovvero Ext2 o Ext3. La gestione di questo tipo di file system deve essere inclusa nel kernel, a meno che si stia cercando di produrre del codice specifico per un'applicazione particolare.

In questo gruppo di opzioni trovano posto anche quelle necessarie alla condivisione attraverso la rete, per esempio con il protocollo NFS.

È interessante osservare che è necessario specificare anche i sistemi di partizionamento dei dischi. In generale è indispensabile la gestione delle partizioni tipiche dei sistemi Dos.

Infine, è importante anche tenere in considerazione il tipo di codifica che si vuole poter utilizzare nell'ambito del file system. La codifica in questione riguarda il modo di rappresentare i nomi dei file, che potrebbe richiedere estensioni particolari. In generale viene abilitata la codifica UTF-8, ma per il momento assieme a ISO 8859-1, che è ancora quella più frequente nel mondo occidentale.

<*> Second extended fs support
[ ]   Ext2 extended attributes
<*> Ext3 journalling file system support   
[*]   Ext3 extended attributes             
[*]     Ext3 POSIX Access Control Lists    
[ ]     Ext3 Security Labels               
[ ] JBD (ext3) debugging support           
<*> Reiserfs support                       
[*]   Enable reiserfs debug mode           
[*]   Stats in /proc/fs/reiserfs           
<M> JFS filesystem support                 
[*]   JFS POSIX Access Control Lists       
[ ]   JFS debugging                        
[ ]   JFS statistics                       
<M> XFS filesystem support                 
[ ]   Realtime support (EXPERIMENTAL) (NEW)
[ ]   Quota support (NEW)                  
[ ]   ACL support (NEW)                    
<*> Minix fs support                       
<M> ROM file system support                
[*] Quota support                          
< >   Old quota format support             
<M>   Quota format v2 support              
<*> Kernel automounter support             
<*> Kernel automounter version 4 support (also supports v3)
    CD-ROM/DVD Filesystems  --->
    DOS/FAT/NT Filesystems  --->
    Pseudo filesystems  --->       
    Miscellaneous filesystems  --->
    Network File Systems  --->     
    Partition Types  --->          
    Native Language Support  --->  

La voce {Pseudo filesystems} consente di accedere alle funzioni relative a file system virtuali:

[*] /proc file system support
[*] /dev file system support (OBSOLETE)               
[*]   Automatically mount at boot                     
[ ]   Debug devfs                                     
[*] /dev/pts file system for Unix98 PTYs              
[ ]   /dev/pts Extended Attributes                    
[*] Virtual memory file system support (former shm fs)
[ ] HugeTLB file system support

34.3   Come fare per configurare correttamente il kernel che si vuole compilare

Il kernel Linux è molto dinamico e il suo sviluppo prende spesso delle strade imprevedibili. Questa vitalità è molto importante per il futuro del software libero; senza di essa non ci sarebbe modo di usare domani le nuove tecnologie proposte. In questo senso, diventa difficile dare delle indicazioni precise e durature sul modo corretto di configurare il kernel prima della compilazione.

L'unica documentazione sicura sotto questo aspetto è quella che si può consultare in modo contestuale quando si utilizza il comando make menuconfig, oppure make xconfig. Eventualmente, può essere utile sapere che le informazioni che si leggono lì sono contenute nel file Documentation/Configure.help (nell'ambito dei sorgenti), fino alle versioni 2.4.*, mentre in quelle successive si trovano suddivise in vari file Kconfig contenuti nelle directory contenenti il codice relativo al contesto a cui si riferiscono. Segue un estratto di uno di questi file Kconfig, precisamente si tratta di drivers/usb/Kconfig:

#
# USB device configuration
#

menu "USB support"

# ARM SA1111 chips have a non-PCI based "OHCI-compatible" USB host interface.
config USB
        tristate "Support for USB"
        depends on PCI || SA1111
        ---help---
          Universal Serial Bus (USB) is a specification for a serial bus
          subsystem which offers higher speeds and more features than the
          traditional PC serial port.  The bus supplies power to peripherals
          and allows for hot swapping.  Up to 127 USB peripherals can be
          connected to a single USB port in a tree structure.  The USB port is
          the root of the tree, the peripherals are the leaves and the inner
          nodes are special USB devices called hubs.  Many newer PC's have USB
          ports and newer peripherals such as scanners, keyboards, mice,
          modems, and printers support the USB protocol and can be connected
          to the PC via those ports.

          Say Y here if your computer has a USB port and you want to use USB
          devices.  You then need to say Y to at least one of "UHCI HCD support"
          or "OHCI HCD support" below (the type of interface that the USB hardware
          in your computer provides to the operating system) and then choose
          from amongst the drivers for USB peripherals.  You may want to check
          out the information provided in <file:Documentation/usb/> and
          especially the links given in <file:Documentation/usb/usb-help.txt>.

          If you have a new USB 2.0 High Speed system, you should also choose
          "EHCI HCD (USB 2.0) support" as well as at least one of UHCI or OHCI.

          It doesn't normally hurt to select them all if you are not certain.

          To compile this driver as a module, choose M here: the
          module will be called usbcore.

Quando si parte da zero, è sufficiente accertarsi di eliminare il file .config, che comunque viene eliminato con il comando make mrproper. In questo modo, il programma che guida alla configurazione del kernel offre già le risposte più ovvie alle domande che fa. Naturalmente è sempre necessario leggere le prime volte il testo delle spiegazioni disponibili, fino a che si raggiunge una dimestichezza adeguata al tipo di esigenze che si hanno.

Come la documentazione interna suggerisce spesso, nella directory Documentation/ sono contenuti tanti file di testo contenenti spiegazioni particolareggiate rispetto a problemi specifici della configurazione. A questo punto dovrebbe essere evidente che non si può configurare e compilare un kernel se non si conosce minimamente la lingua inglese.

Questo tipo di lavoro passa poi necessariamente per una lunga serie di tentativi falliti (avendo cura di conservare i file .config, per poter ripartire almeno dall'ultima configurazione tentata). Tuttavia, il principiante non deve pensare di essersi messo involontariamente nei guai, perché queste difficoltà riguardano tutti, anche gli esperti, proprio perché la dinamicità nello sviluppo del kernel Linux porta continue novità.

34.4   Riferimenti

Appunti di informatica libera 2006.01.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>, <daniele·giacomini (ad) poste·it>


1) Il termine loop device usato qui, non deve essere confuso con loopback device usato nella configurazione dei servizi di rete.


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome kernel_linux_1.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [violazione licenza] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!

Static Wikipedia 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Sub-domains

CDRoms - Magnatune - Librivox - Liber Liber - Encyclopaedia Britannica - Project Gutenberg - Wikipedia 2008 - Wikipedia 2007 - Wikipedia 2006 -

Other Domains

https://www.classicistranieri.it - https://www.ebooksgratis.com - https://www.gutenbergaustralia.com - https://www.englishwikipedia.com - https://www.wikipediazim.com - https://www.wikisourcezim.com - https://www.projectgutenberg.net - https://www.projectgutenberg.es - https://www.radioascolto.com - https://www.debitoformtivo.it - https://www.wikipediaforschools.org - https://www.projectgutenbergzim.com