Esempio configurazione kernel: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(marcata come "Da adottare")
 
(12 versioni intermedie di 5 utenti non mostrate)
Riga 1: Riga 1:
==Premessa==
{{Guida da adottare}}
Oggi che la maggior parte degli utenti domestici ha la possibilit� di accede ad internet con connessioni a [http://it.wikipedia.org/wiki/Larghezza_di_banda banda] larga (ad esempio [http://it.wikipedia.org/wiki/ADSL ADSL]) e che � sempre pi� frequente avere a disposizione almeno un paio di computers si avverte la necessit� di poter condividere la connessione tra i vari computer della nostra rete domestica.
<big>'''''Introduzione'''''</big>


GNU/Linux � probabilmente la scelta pi� indicata in questi frangenti, essendo un sistema operativo nato espressamente in ambiente di rete: moltissimi dei [http://it.wikipedia.org/wiki/Router router] sul mercato fanno uso di GNU/Linux come sistema operativo, perch� non farlo anche noi ?
In questa pagina troverete la configurazione del kernel 2.6.13 usata sul mio PC desktop, condita con varie considerazioni sparse che possano aiutare a comprendere le varie voci. Alcune parti della configurazioni sono generiche; altre, sebbene specifiche del mio hardware, possono servire da spunto per altri che stiano cercando di configurare il proprio kernel.


==Prerequisiti==
La presente configurazione è orientata ad ottenere la più bassa latenza possibile da un kernel "Vanilla", tipicamente per applicazioni audio realtime. Forse in futuro aggiungerò una sezione riguardo l'applicazioni delle patch realtime al kernel (necessarie per ottenere latenze ancora più basse).  
Tutto quello di cui abbiamo bisogno � la nostra Debian, una scheda di rete per ciascun pc da collegare alla rete locale ed un hub o switch.


Se avete un collegamento adsl tramite modem usb e due soli computer, basta collegare le due schede di rete tramite cavetto ethernet cross (incrociato), non serve nient'altro. Uno dei due computer dovr� poi essere connesso ad internet tramite modem USB (vedere [[Indice_Guide#Modem_e_periferiche_di_rete|Modem e periferiche di rete]] per l'installazione e la configurazione), oppure tramite una seconda scheda di rete.
Il secondo scopo di questa configurazione è quello di ottenere il kernel minimo (compilando meno cose possibili) per ottenere la funzionalità richiesta. Per questo motivo invito chiunque abbia consigli per ridurre ulteriormente questa configurazione, o che sappia anche solo chiarire certe voci più oscure della configurazione, a scrivere qui ampliando e integrando il testo.


Per fare in modo che Debian si comporti come un router avremo bisogno anche di iptables. Vi rimando alla guida [[Debian e iptables]] per la sua corretta installazione e configurazione.
Attraverso l'indice è possibile accedere direttamente alle varie sezioni della configurazione del kernel. Per cui questa guida può essere anche usata come veloce riferimento o confronto.


==Configurazione Router==
Come ultima cosa aggiungo che con questa configurazione riesco a non avere mai interruzioni nella musica che ascolto anche se sto ricompilando il kernel o installando Openoffice (queste prestazioni le raggiungo soltanto usando l'[[Esempio_configurazione_kernel#IO_Schedulers__---.3E|I/O Scheduler]] '''cfq''').
Per fare in modo che Debian faccia da [http://it.wikipedia.org/wiki/Gateway gateway] tra i pc della LAN e internet dobbiamo utilizzare il [http://it.wikipedia.org/wiki/Network_address_translation NAT] ''(Network Address Translation)''.<br>
Il tipo di NAT che ci interessa in questa guida � chiamato '''masquerading''' ''(mascheramento)'' degli indirizzi locali.<br>
Il motivo � semplice: per accedere a internet � necessario avere un [http://it.wikipedia.org/wiki/Indirizzo_IP indirizzo IP] di tipo pubblico, che il nostro ISP ci fornisce. Per permettere anche ai computer sprovvisti di indirizzo pubblico di navigare, dobbiamo fare in modo che i loro indirizzi di tipo privato vengano "nascosti" dietro a quello pubblico.


===Masquerading===
Happy Debian!
Loghiamoci come utente '''root''' e digitiamo il seguente comando:
<pre># iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE</pre>
questo abilita il mascheramento degli indirizzi privati.


Per caricare queste regole di iptable ad ogni avvio conviene salvarle una volta e per tutte con '''iptables-save''' e caricarle ad ogni avvio con '''iptables-restore'''. Questi comandi leggono e scrivono su STDIN e STDOUT quindi bisogna usare la redirezione di shell.
{{Warningbox|Ottimizzare un kernel per la bassa latenza implica la diminuzione del throughput complessivo del processore, e quindi una diminuzione delle prestazioni assolute. La bassa latenza si ottiene a scapito delle prestazioni, questa è una limitazione intrinseca dei sistemi realtime (non specifica di linux).  Quindi questa configurazione è sconsigliata per applicazioni server. Per macchine poco potenti (indicativamente sotto il GHz) si consiglia comunque di usare un kernel 2.4 patchato per la bassa latenza, in tal modo è possibile ottenere delle ottime prestazioni realtime anche su PC relativamente vetusti.}}


Per salvare le regole correnti di iptables basta scrivere da root:
== Descrizione PC ==
<pre># iptables-save > /etc/iptables-save</pre>


Poi ad ogni avvio dovremo richiamare il seguente comando:
Il PC è un desktop abbastanza standard, nessuna periferica SCSI, hard disk EIDE ata 100, CD-ROM e masterizzare EIDE, scheda audio Audigy 1, scheda video ati radeon 7000ve, floppy, porte usb (sono abilitati nella configurazione l'uso di chiavette USB).
<pre>
# cat /etc/iptables-save | iptables-restore
</pre>


Questo comando si pu� inserire in uno script di avvio come /etc/init.d/bootmisc, forse � pi� logico inserirlo in /etc/init.d/networking anche perch�, in tal modo, riavviando la rete vengono anche reimpostate le regole di iptables. Per inserire il comando in /etc/init.d/networking scorrete il file fino a quasi la fine dove troverete le seguenti righe:
La connessione avviene tramite scheda di rete ethernet 10/100, quindi non è necessario nessun particolare supporto per modem. Inoltre '''non viene usata l'immagine initrd''' e quindi i relativi supporti (file system, chipset, ecc...) vengono compilati staticamente.


Ecco per completezza l'output di lspci:
<pre>
<pre>
case "$1" in
0000:00:00.0 Host bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] System Controller (rev 13)
    start)
0000:00:01.0 PCI bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] AGP Bridge
0000:00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:07.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.4 SMBus: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
0000:00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:0f.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)
0000:00:0f.1 Input device controller: Creative Labs SB Audigy MIDI/Game port (rev 03)
0000:00:0f.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port
0000:01:05.0 VGA compatible controller: ATI Technologies Inc Radeon RV100 QY [Radeon 7000/VE]
</pre>
</pre>


ora appena prima di
== Code maturity level options  ---> ==
  │ │      [*] Prompt for development and/or incomplete code/drivers        │ │
  │ │      [*]  Select only drivers expected to compile cleanly            │ │


<pre>;;
== General setup  ---> ==
stop)
  │ ┌────────────────────────────────────────────────────────────────────────┐ │
</pre>
  │ │  ()  Local version - append to kernel release                        │ │
  │ │  [*] Support for paging of anonymous memory (swap)                   │ │
  │ │  [*] System V IPC                                                    │ │
  │ │  [ ] POSIX Message Queues                                            │ │
  │ │  [*] BSD Process Accounting                                          │ │
  │ │  [ ]  BSD Process Accounting version 3 file format                  │ │
  │ │  [*] Sysctl support                                                  │ │
  │ │  [ ] Auditing support                                                │ │
  │ │  [*] Support for hot-pluggable devices                                │ │
  │ │  [*] Kernel Userspace Events                                          │ │
  │ │  [ ] Kernel .config support                                          │ │
  │ │  [ ] Configure standard kernel features (for small systems)  --->     │ │
  │ └────────────────────────────────────────────────────────────────────────┘ │


si potr� inserire questo codice (al posto del singolo comando) per maggiore eleganza:
== Loadable module support  ---> ==
  │ │            [*] Enable loadable module support                          │ │
  │ │            [*]  Module unloading                                      │ │
  │ │            [ ]    Forced module unloading                            │ │
  │ │            [*]  Module versioning support (EXPERIMENTAL)             │ │
  │ │            [ ]  Source checksum for all modules                      │ │
  │ │            [*]  Automatic kernel module loading                      │ │


<pre>
== Processor type and features  ---> ==
        # Carica le regole di iptables salvate
Questa sezione è particolarmente importante. Qui si seleziona il tipo di processore, l'mtrr, il tipo di preemption. Notare in particolare le voci:
if [ -r /etc/iptables-save ]; then
    echo -en " * Loading iptables saved state ... "
    cat /etc/iptables-save | iptables-restore &&\
    echo "[ OK ]"
fi
</pre>
in questo modo la regola verr� caricata ad ogni avvio del sistema, senza che sia necessario digitarla nuovamente, e solo se il file /etc/iptables-save esiste ed � leggibile.


===Ip Forwarding===
* Preemption Model (Preemptible Kernel (Low-Latency Desktop))
Configurare iptables non � per� sufficiente. I comuni pc, infatti, non devono essere in grado di comportarsi come i [http://it.wikipedia.org/wiki/Router routers] e cio� non devono poter [[routing|instradare]] pacchetti da una rete all' altra.<br>
* Preempt The Big Kernel Lock
Dato che per noi � fondamentale abilitare questa possibilit�, dobbiamo agire su un paramentro del kernel che regola questa funzione: l' '''ip-forwarding'''.


L' ip-forwarding � abilitabile "al volo", semplicemente impostando a "1" la relativa variabile del kernel, con il comando:
per ottenere bassa latenza e
<pre># echo 1 > /proc/sys/net/ipv4/ip_forward</pre>
cos� facendo per�, ad ogni riavvio dovremo reimpostare la variabile.


E' possibile creare scripts appositi che impostano a "1" l' ip-forwarding, ma il sistema che presumibilmente � pi� comodo, consiste nell' associare questo comando alla creazione delle interfacce di rete, in fase di boot.
* Timer frequency (1000 HZ)


Per prima cosa, apriamo con il nostro editor preferito il file '''/etc/network/interfaces''' e cerchiamo la sezione relativa alla nostra scheda di rete.
per avere un timer più preciso.


Dovreste individuare qualcosa di simile a:
  │ ┌────────────────────────────────────────────────────────────────────────┐ │
  │ │    Subarchitecture Type (PC-compatible)  --->                          │ │
  │ │    Processor family (Athlon/Duron/K7)  --->                            │ │
  │ │[ ] Generic x86 support                                                │ │
  │ │[*] HPET Timer Support                                                  │ │
  │ │[ ] Symmetric multi-processing support                                  │ │
  │ │    Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->  │ │
  │ │[*] Preempt The Big Kernel Lock                                        │ │
  │ │[*] Local APIC support on uniprocessors                                │ │
  │ │[*]  IO-APIC support on uniprocessors                                  │ │
  │ │[*] Machine Check Exception                                            │ │
  │ │<*>  Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4  │ │
  │ │[ ]  check for P4 thermal throttling interrupt.                        │ │
  │ │< > Toshiba Laptop support                                              │ │
  │ │< > Dell laptop support                                                │ │
  │ │[ ] Enable X86 board specific fixups for reboot                        │ │
  │ │< > /dev/cpu/microcode - Intel IA32 CPU microcode support              │ │
  │ │<M> /dev/cpu/*/msr - Model-specific register support                    │ │
  │ │<M> /dev/cpu/*/cpuid - CPU information support                          │ │
  │ │    Firmware Drivers  --->                                              │ │
  │ │    High Memory Support (off)  --->                                    │ │
  │ │    Memory model (Flat Memory)  --->                                    │ │
  │ │[ ] Math emulation                                                      │ │
  │ │[*] MTRR (Memory Type Range Register) support                          │ │
  │ │[ ] Boot from EFI support (EXPERIMENTAL)                                │ │
  │ │[ ] Use register arguments (EXPERIMENTAL)                              │ │
  │ │[*] Enable seccomp to safely compute untrusted bytecode                │ │
  │ │    Timer frequency (1000 HZ)  --->                                    │ │
  │ │[ ] kexec system call (EXPERIMENTAL)                                    │ │
  │ └────────────────────────────────────────────────────────────────────────┘ │


<pre>
== Power management options (ACPI, APM)  ---> ==
auto eth0
  │ │[*] Power Management support                                            │ │
iface eth0 inet static
  │ │[ ]  Power Management Debug Support                                    │ │
address 192.168.0.1
  │ │[ ]  Software Suspend                                                  │ │
netmask 255.255.255.0
  │ │      ACPI (Advanced Configuration and Power Interface) Support  --->  │ │
network 192.168.0.0
  │ │      APM (Advanced Power Management) BIOS Support  --->                │ │
broadcast 192.168.0.255
  │ │    CPU Frequency scaling  --->                                        │ │
</pre>
=== ACPI (Advanced Configuration and Power Interface) Support  ---> ===
  │ │  [*] ACPI Support                                                      │ │
  │ │  [ ]  Sleep States (EXPERIMENTAL)                                    │ │
  │ │  < >  AC Adapter                                                      │ │
  │ │  < >  Battery                                                        │ │
  │ │  < >  Button                                                          │ │
  │ │  <M>  Video                                                          │ │
  │ │  < >  Generic Hotkey                                                  │ │
  │ │  <M>  Fan                                                            │ │
  │ │  <M>  Processor                                                      │ │
  │ │  <M>     Thermal Zone                                                  │ │
  │ │  < >  ASUS/Medion Laptop Extras                                      │ │
  │ │  < >  IBM ThinkPad Laptop Extras                                      │ │
  │ │  < >  Toshiba Laptop Extras                                          │ │
  │ │  (0)  Disable ACPI for systems before Jan 1st this year              │ │
  │ │  [ ]  Debug Statements                                                │ │
  │ │  [ ]  Power Management Timer Support                                  │ │
  │ │  < >   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)    │ │


A questo punto, nella riga immediatamente successiva a "broadcast ...", inseriamo questa direttiva:


<pre>
== Bus options (PCI, PCMCIA, EISA, MCA, ISA)  ---> ==
auto eth0
Non sono sicuro se la voce "PCI device name database" sia necessaria. Se qualcuno ha informazioni in proposito per favore lo segnali.
iface eth0 inet static
address 192.168.0.1
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
        pre-up /etc/network/iface-secure
</pre>


Questo comando dice allo script che si occupa di configurare la scheda di rete di lanciare un' altro script, e cio� '''/etc/network/iface-secure''', che provvediamo subito a creare con il comando:
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │        [*] PCI support                                            │ │
  │ │              PCI access mode (Any)  --->                          │ │
  │ │        [ ]  PCI Express support                                  │ │
  │ │        [ ]  Message Signaled Interrupts (MSI and MSI-X)          │ │
  │ │        [ ]  Legacy /proc/pci interface                            │ │
  │ │        [*]  PCI device name database                              │ │
  │ │        [ ]  PCI Debugging                                        │ │
  │ │        [ ] ISA support                                            │ │
  │ │        [ ] MCA support                                            │ │
  │ │        < > NatSemi SCx200 support                                  │ │
  │ │            PCCARD (PCMCIA/CardBus) support  ---> (niente)          │ │
  │ │            PCI Hotplug Support  --->            (niente)          │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


<pre># touch /etc/network/iface-secure</pre>
== Executable file formats  ---> ==
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │          [*] Kernel support for ELF binaries                        │ │
  │ │          <*> Kernel support for a.out and ECOFF binaries            │ │
  │ │          <M> Kernel support for MISC binaries                      │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Dopodiche' rendiamolo eseguibile con:
== Networking  ---> ==
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │          [*] Networking support                                    │ │
  │ │                Networking options  --->                            │ │
  │ │          [ ]  Amateur Radio support  --->                        │ │
  │ │          < >  IrDA (infrared) subsystem support  --->            │ │
  │ │          < >  Bluetooth subsystem support  --->                  │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │
=== Networking options  ---> ===
Sono attivate solo le opzioni minime per navigare. Nessun firewall, o capacità di routing è attivata. Se qualcuno sa cosa si può ancora togliere è ben gradito un consiglio. Con questa configurazione è possibile fare file-sharing e ricevere trasmissioni broadcast tramite internet.
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │      <*> Packet socket                                              │ │
  │ │      [*]  Packet socket: mmapped IO                                │ │
  │ │      <*> Unix domain sockets                                        │ │
  │ │      < > PF_KEY sockets                                            │ │
  │ │      [*] TCP/IP networking                                          │ │
  │ │      [*]  IP: multicasting                                        │ │
  │ │      [ ]  IP: advanced router                                      │ │
  │ │      [ ]  IP: kernel level autoconfiguration                      │ │
  │ │      < >  IP: tunneling                                            │ │
  │ │      < >  IP: GRE tunnels over IP                                  │ │
  │ │      [ ]  IP: multicast routing                                    │ │
  │ │      [ ]  IP: ARP daemon support (EXPERIMENTAL)                    │ │
  │ │      [ ]  IP: TCP syncookie support (disabled per default)        │ │
  │ │      < >  IP: AH transformation                                    │ │
  │ │      < >  IP: ESP transformation                                  │ │
  │ │      < >  IP: IPComp transformation                                │ │
  │ │      < >  IP: tunnel transformation                                │ │
  │ │      < >  IP: TCP socket monitoring interface                      │ │
  │ │      [ ]  TCP: advanced congestion control                        │ │
  │ │      < >  The IPv6 protocol                                        │ │
  │ │      [ ] Network packet filtering (replaces ipchains)  ---> (niente)│ │
  │ │          SCTP Configuration (EXPERIMENTAL)  --->            (niente)│ │
  │ │      < > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)            │ │
  │ │      < > 802.1d Ethernet Bridging                                  │ │
  │ │      < > 802.1Q VLAN Support                                        │ │
  │ │      < > DECnet 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                                                │ │
  │ │      [ ] QoS and/or fair queueing  --->  (niente)                  │ │
  │ │          Network testing  --->          (niente)                  │ │
  │ │                                                                    │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


<pre># chmod +x /etc/network/iface-secure</pre>
== Device Drivers  ---> ==
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │              Generic Driver Options  --->                          │ │
  │ │              Memory Technology Devices (MTD)  --->    (niente)    │ │
  │ │              Parallel port support  --->              (niente)    │ │
  │ │              Plug and Play support  --->              (niente)    │ |
  │ │              Block devices  --->                                   │ │
  │ │              ATA/ATAPI/MFM/RLL support  --->                      │ │
  │ │              SCSI device support  --->                            │ │
  │ │              Multi-device support (RAID and LVM)  --->  (niente)  │ │
  │ │              Fusion MPT device support  --->            (niente)  │ │
  │ │              IEEE 1394 (FireWire) support  --->        (niente)  │ │
  │ │              I2O device support  --->                              │ │
  │ │              Network device support  --->                          │ │
  │ │              ISDN subsystem  --->                      (niente)  │ │
  │ │              Telephony Support  --->                    (niente)  │ │
  │ │              Input device support  --->                            │ │
  │ │              Character devices  --->                              │ │
  │ │              I2C support  --->                                    │ │
  │ │              Dallas's 1-wire bus  --->                  (niente)  │ │
  │ │              Hardware Monitoring support  --->                    │ │
  │ │              Misc devices  --->                        (niente)  │ │
  │ │              Multimedia devices  --->                  (niente)  │ │
  │ │              Graphics support  --->                                │ │
  │ │              Sound  --->                                          │ │
  │ │              USB support  --->                                    │ │
  │ │              MMC/SD Card support  --->                  (niente)  │ │
  │ │              InfiniBand support  --->                  (niente)  │ │
  │ │              SN Devices  --->                          (niente)  │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │
=== Generic Driver Options  ---> === 
  | │[*] Select only drivers that don't need compile-time external firmwar│ │
  │ │[*] Prevent firmware from being built                                │ │
  │ │< > Hotplug firmware loading support                                │ │
  │ │[ ] Driver Core verbose debug messages                              │ │


All' interno di questo file scriveremo il nostro comando per abilitare l' ip-forwarding:


<pre>
=== Block devices  ---> ===
### Abilita il forwarding di pacchetti non locali - FONDAMENTALE
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
echo 1 > /proc/sys/net/ipv4/ip_forward
  │ │ <M> Normal floppy disk support                                      │ │
</pre>
  │ │ < > Compaq SMART2 support                                          │ │
  │ │ < > Compaq Smart Array 5xxx support                                │ │
  │ │ < > Mylex DAC960/DAC1100 PCI RAID Controller support                │ │
  │ │ < > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)  │ │
  │ │ <M> Loopback device support                                        │ │
  │ │ < >  Cryptoloop Support                                            │ │
  │ │ < > Network block device support                                    │ │
  │ │ < > Promise SATA SX8 support                                        │ │
  │ │ < > Low Performance USB Block driver                                │ │
  │ │ < > RAM disk support                                                │ │
  │ │ ()  Initramfs source file(s)                                        │ │
  │ │ [ ] Support for Large Block Devices                                │ │
  │ │ < > Packet writing on CD/DVD media                                  │ │
  │ │    IO Schedulers  --->                                            │ │
  │ │ < > ATA over Ethernet support                                      │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │
==== IO Schedulers  ---> ====
Questi sono gli scheduler per da usare per l'I/O su disco. Ecco come li descrive il kernel hacker ''Jen Axboe'' ([http://bhhdoa.org.au/pipermail/ck/2006-April/005817.html link]):


E' opportuno impostare anche alcune misure di sicurezza:
:''On Thursday 06 April 2006 20:31, Jens Axboe wrote:
:> Low latency isn't always the primary goal. If you want that, you'd just
:> use noop - that will always get you the lowest latency. deadline is a
:> little worse than noop, but latency is still very good. cfq has higher
:> latency, which is a design goal as you simply need to for good
:> throughput. So while deadline does 100ms read latencies for 8 threads
:> reading 8 files, cfq will get you average 700ms latency per thread
:> there. cfq will also maintain 50MiB/sec throughput (or whatever your
:> disk does sequentially) distributed evenly between threads, while
:> deadline will probably do 2MiB/sec there.''


<pre>
Generalmente il <code>cfq</code> dà i migliori risultati grazie al suo elevato throughput, infatti per applicazioni audio di solito non è importante la latenza di accesso al disco ma throughput complessivo.
### Ignora finti messaggi di errore ICMP
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses


### Non risponde ai ping inviati al broadcast della subnet
In ogni caso meglio compilarli tutti (questo non genera overhead). Di default viene scelto "Anticipatory" ma può essere cambiato a sistema avviato con:
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts


### Non accetta pacchetti ICMP di route redirection
# echo cfq > /sys/block/hda/queue/scheduler
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
</pre>


Oltre a queste regole Debian imposta per default la protezione dallo [http://it.wikipedia.org/wiki/IP_spoofing spoofing] degli indirizzi, che quindi non abbiamo necessit� di inserire nello script.Per completezza di informazione, comunque, questa regola risulta essere la seguente:
''(ad esempio se vogliamo impostare il '''cfq''')''


<pre>
oppure usando il parametro di boot del kernel <code>elevator</code>, es:
### Protezione anti spoofing
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
</pre>


Per un approfondimento riguardante i parametri del kernel networking modificabili a run-time, vi rimandiamo alla guida [[Parametri a run-time per Netfilter]].
elevator=cfq


===Server DNS===
I valori possibili si ottengono con un cat di <code>/sys/block/hda/queue/scheduler</code> (lo scheduler in uso è indicato tra parentesi quadre).
Per poter navigare su internet, � necessario che i PC della nostra rete locale abbiano accesso ad un server [[DNS]] che traduca per noi gli indirizzi internet in indiritti IP.  


Un modo per fare questo consiste nell' impostare per ciascuno dei nostri PC i server [[DNS]] forniti dal nostro provider.
Ecco la configurazione:
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │                  <*> Anticipatory I/O scheduler                    │ │
  │ │                  <*> Deadline I/O scheduler                        │ │
  │ │                  <*> CFQ I/O scheduler                              │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Esiste tuttavia un' alternativa molto pi� comoda e performante: creare un nostro server [[DNS]] ed utilizzarlo in sostituzione di quelli del provider. Questa soluzione porta ad alcuni vantaggi:
=== ATA/ATAPI/MFM/RLL support  ---> ===
* sui pc della LAN dovremo configurare sempre un solo server [[DNS]] immutabile e che conosciamo bene (senza faticose ricerche);
* i tempi di risposta sono nettamente pi� performanti rispetto a server esterni alla LAN, sia perch� il server � raggiungibile direttamente (senza instradamento attraverso internet), sia perch� sfrutta un sistema di cache (se 10 pc chiedono l' indirizzo di debian.org, ad esempio, il nostro [[DNS]] effetter� la richiesta solo la prima volta e per le restanti 9 utilizzer� le informazioni memorizzate nella propria cache);
* grazie a questo meccanismo di caching i [[DNS]] del provider sono meno stressati e quindi pi� performanti a loro volta.


Per realizzare il nostro server useremo '''bind''', probabilmente il miglior software esistente per questo compito.
Qui al posto di "VIA82CXXX chipset support" (alla fine) selezionate il supporto per il chipset del vostro hardware. Per il resto la configurazione è abbastanza generica.


Per prima cosa installiamo bind9 ed alcuni strumenti utili:
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │<*> 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 │ │
  │ │[ ]    Support for SATA (deprecated; conflicts with libata SATA driv│ │
  │ │[ ]    Use old disk-only driver on primary interface                │ │
  │ │<*>    Include IDE/ATA-2 DISK support                              │ │
  │ │[ ]    Use multi-mode by default                                    │ │
  │ │<M>    Include IDE/ATAPI CDROM support                              │ │
  │ │< >    Include IDE/ATAPI TAPE support (EXPERIMENTAL)                │ │
  │ │< >    Include IDE/ATAPI FLOPPY support                            │ │
  │ │< >    SCSI emulation support                                      │ │
  │ │[ ]    IDE Taskfile Access                                          │ │
  │ │---    IDE chipset support/bugfixes                                │ │
  │ │<*>    generic/default IDE chipset support                          │ │
  │ │[ ]    CMD640 chipset bugfix/support                                │ │
  │ │[*]    PCI IDE chipset support                                      │ │
  │ │[ ]      Sharing PCI IDE interrupts support                        │ │
  │ │[ ]      Boot off-board chipsets first support                      │ │
  │ │< >      Generic PCI IDE Chipset Support                            │ │
  │ │< >      OPTi 82C621 chipset enhanced support (EXPERIMENTAL)        │ │
  │ │< >      RZ1000 chipset bugfix/support                              │ │
  │ │[*]      Generic PCI bus-master DMA support                        │ │
  │ │[ ]        Force enable legacy 2.0.X HOSTS to use DMA              │ │
  │ │[*]        Use PCI DMA by default when available                    │ │
  │ │[ ]          Enable DMA only for disks                              │ │
  │ │< >        AEC62XX chipset support                                  │ │
  │ │< >        ALI M15x3 chipset support                                │ │
  │ │< >        AMD and nVidia IDE support                              │ │
  │ │< >        ATI IXP chipset IDE support                              │ │
  │ │< >        CMD64{3|6|8|9} chipset support                          │ │
  │ │< >        Compaq Triflex IDE support                              │ │
  │ │< >        CY82C693 chipset support                                │ │
  │ │< >        Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTA│ │
  │ │< >        Cyrix/National Semiconductor CS5530 MediaGX chipset suppo│ │
  │ │< >        HPT34X chipset support                                  │ │
  │ │< >        HPT36X/37X chipset support                              │ │
  │ │< >        National SCx200 chipset support                          │ │
  │ │< >        Intel PIIXn chipsets support                            │ │
  │ │< >        IT821X IDE support                                      │ │
  │ │< >        NS87415 chipset support                                  │ │
  │ │< >        PROMISE PDC202{46|62|65|67} support                      │ │
  │ │< >        PROMISE PDC202{68|69|70|71|75|76|77} support            │ │
  │ │< >        ServerWorks OSB4/CSB5/CSB6 chipsets support              │ │
  │ │< >        Silicon Image chipset support                            │ │
  │ │< >        SiS5513 chipset support                                  │ │
  │ │< >        SLC90E66 chipset support                                │ │
  │ │< >        Tekram TRM290 chipset support                            │ │
  │ │<*>        VIA82CXXX chipset support                                │ │
  │ │[ ]    IGNORE word93 Validation BITS                                │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


<pre># apt-get install bind9 bind9-host dnsutils</pre>
=== SCSI device support  ---> ===
Queste voci sono necessarie per avere l'emulazione scsi ed usare le chiavette usb.
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │  <M> SCSI device support                                            │ │
  │ │  [*]  legacy /proc/scsi/ support                                  │ │
  │ │  ---   SCSI support type (disk, tape, CD-ROM)                      │ │
  │ │  <M>  SCSI disk support                                            │ │
  │ │  < >  SCSI tape support                                            │ │
  │ │  < >  SCSI OnStream SC-x0 tape support                            │ │
  │ │  < >  SCSI CDROM support                                          │ │
  │ │  <M>  SCSI generic support                                        │ │
  │ │  < >  SCSI media changer support                                  │ │
  │ │  ---  Some SCSI devices (e.g. CD jukebox) support multiple LUNs    │ │
  │ │  [ ]  Probe all LUNs on each SCSI device                          │ │
  │ │  [ ]  Verbose SCSI error reporting (kernel size +=12K)            │ │
  │ │  [ ]  SCSI logging facility                                        │ │
  │ │        SCSI Transport Attributes  --->              (nessuno)      │ │
  │ │        SCSI low-level drivers  --->                 (nessuno)      │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Ora configuriamo il server in modo che faccia le sue richieste ai server [[DNS]] che vogliamo noi anzich ai ROOT SERVERS (sono pochi in tutto il mondo, molto stressati e aggiornati pi lentamente di altri). Tutto quello che dobbiamo fare editare la sezione '''options''' del file '''/etc/bind/named.conf.options''':


<pre>options {
=== I2O device support  ---> ===
directory "/var/cache/bind";
Queste voci servono per attivare i sensori (temperatura, ventola, ecc...).


forward first;
  │ │                  <M> I2O support                                    │ │
forwarders {
  │ │                  [ ]  Enable Adaptec extensions                    │ │
INDIRIZZO IP DNS PRIMARIO; #varia a seconda del provider
  │ │                  < >  I2O Configuration support                    │ │
INDIRIZZO IP DNS SECONDARIO; #varia a seconda del provider
  │ │                  < >  I2O Bus Adapter OSM                          │ │
};
  │ │                  < >  I2O Block OSM                                │ │
  │ │                  < >  I2O SCSI OSM                                │ │
  │ │                  <M>  I2O /proc support                            │ │


auth-nxdomain no; # conform to RFC1035
=== Network device support  ---> ===
};</pre>
Tutto deselezionato tranne:
  Ethernet (10 or 100Mbit)  --->
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │[*] Ethernet (10 or 100Mbit)                                        │ │
  │ │<M>  Generic Media Independent Interface device support            │ │
  │ │[*] EISA, VLB, PCI and on board controllers                          │ │
  │ │<M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support    │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Ora non ci resta che riavviare bind con il comando:


<pre># /etc/init.d/bind9 restart</pre>
=== Input device support  ---> ===
Tutto delesezionato tranne:
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │    --- Generic input layer (needed for keyboard, mouse, ...)      │ │
  │ │    ---  Userland interfaces                                      │ │
  │ │    ---  Mouse interface                                          │ │
  │ │    [*]    Provide legacy /dev/psaux device                        │ │
  │ │    (1024)  Horizontal screen resolution                            │ │
  │ │    (768)  Vertical screen resolution                              │ │
  │ │    [*]  Mouse  --->                                               │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


e configurarlo come [[DNS]] sui pc della nostra rete.
==== Mouse  ---> ====
Supporto per mouse ps2:
  <*>  PS/2 mouse


===Altri Protocolli===
=== Character devices  ---> ===
====FTP====
Attenzione questa sezione è particolarmente delicata. Le due voci da adattare al vostro hardware sono:
Con la configurazione svolta fino a questo punto dovrebbe essere possibile accedere dai PC della lan a server ftp esterni in ''passive mode'' (se ci� non fosse possibile vedere pi� avanti: [[Condividere_la_connessione_a_internet#Problemi_con_MTU|Problemi con MTU]]).  
* AMD Irongate, 761, and 762 chipset support
* ATI Radeon
Per il resto la configurazione dovrebbe essere abbastanza generica.  


Se si vuole accedere a server ftp in active mode il router deve tracciare le connessioni ftp, e a tal scopo basta caricare i due moduli:
Come curiosità, notare l'ultima voce tramite la quale è possibile aggiungere il supporto per il così detto '''[http://www.gnu.org/philosophy/can-you-trust.html "hardware inaffidabile"]''', qui chiamato '''TPM''' (Trusted Platform Module).


<pre>
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
# modprobe ip_conntrack_ftp
  │ │[ ] Non-standard serial port support                                │ │
# modprobe ip_nat_ftp
  │ │    Serial drivers  --->                                            │ │
</pre>
  │ │[*] Legacy (BSD) PTY support                                        │ │
  │ │(256) Maximum number of legacy PTY in use                            │ │
  │ │    IPMI  --->                                                      │ │
  │ │    Watchdog Cards  --->                                            │ │
  │ │<M> Intel/AMD/VIA HW Random Number Generator support                │ │
  │ │< > /dev/nvram support                                              │ │
  │ │<M> Enhanced Real Time Clock Support                                │ │
  │ │<M> Generic /dev/rtc emulation                                      │ │
  │ │[*]  Extended RTC operation                                        │ │
  │ │< > Double Talk PC internal speech card support                      │ │
  │ │< > Siemens R3964 line discipline                                    │ │
  │ │< > Applicom intelligent fieldbus card support                      │ │
  │ │< > Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL) │ │
  │ │    Ftape, the floppy tape device driver  --->                      │ │
  │ │<M> /dev/agpgart (AGP Support)                                      │ │
  │ │< >  ALI chipset support                                            │ │
  │ │< >  ATI chipset support                                            │ │
  │ │<M>  AMD Irongate, 761, and 762 chipset support                    │ │
  │ │< >   AMD Opteron/Athlon64 on-CPU GART support                      │ │
  │ │< >  Intel 440LX/BX/GX, I8xx and E7x05 chipset support              │ │
  │ │< >  NVIDIA nForce/nForce2 chipset support                          │ │
  │ │< >  SiS chipset support                                            │ │
  │ │< >  Serverworks LE/HE chipset support                              │ │
  │ │< >   VIA chipset support                                            │ │
  │ │< >  Transmeta Efficeon support                                    │ │
  │ │<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  │ │
  │ │< >  3dfx Banshee/Voodoo3+                                          │ │
  │ │< >  ATI Rage 128                                                  │ │
  │ │<M>  ATI Radeon                                                    │ │
  │ │< >  Matrox g200/g400                                              │ │
  │ │< >  SiS video cards                                                │ │
  │ │< >  Via unichrome video cards                                      │ │
  │ │< > ACP Modem (Mwave) support                                        │ │
  │ │< > RAW driver (/dev/raw/rawN) (OBSOLETE)                            │ │
  │ │[ ] HPET - High Precision Event Timer                                │ │
  │ │< > Hangcheck timer                                                  │ │
  │ │    TPM devices  --->                                                │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Da questo momento in poi i pc della lan dovrebbero essere in grado di accedere ai server ftp anche in ''active mode''.
=== I2C support  ---> ===
Selezionati solo:
  <*>  I2C device interface


====IRC====
e le sottovoci degli algoritmi:
Dovreste essere in grado di usare IRC senza problemi dai pc della vostra LAN. In caso contrario potreste provare a caricare manualmente i moduli che servono al router per gestire le connessioni ad IRC:


<pre>
  I2C Algorithms  --->
# modprobe ip_conntrack_irc ports=5555,6666,6667,6668,6669,7000
  <M> I2C PCF 8584 interfaces
# modprobe ip_nat_irc
  <M> I2C PCA 9564 interfaces
</pre>


dove, con la direttiva "ports=" indichiamo le porte generalmente utilizzate dai server IRC.
e del chip che governa i sensori (questo è da adattare al proprio hardware):


Se avete problemi, leggete pi� avanti: [[Condividere_la_connessione_a_internet#Problemi_con_MTU|Problemi con MTU]].
  <*> VIA 82C586B


==Configurazione LAN==
=== Hardware Monitoring support  ---> ===
Passiamo ora alla configurazione degli altri PC della nostra rete domestica.<br>
Solo le voci (da adattare al proprio hardware):
===Premessa===
  <M> Hardware Monitoring support
Generalmente per le reti locali domestiche si utilizzano indirizzi IP del tipo 192.168.0.x dove x � un numero variabile tra 1 e 254. Questo significa che all' interno della stessa rete possiamo avere fino a 254 indirizzi IP univoci.<br>
  <M>   VIA686A
Generalmente il router di una rete ha come indirizzo IP il primo o l' ultimo della rete e cio� 192.168.0.1 oppure 192.168.0.254. In questo esempio noi useremo il primo.
===Assegnare un IP===
Ad ogni pc della LAN si deve assegnare un indirizzo ip per poter comunicare con gli altri pc della rete interna (che nel caso limite � il solo pc che fa da router). Per assegnare un indirizzo IP statico basta usare il comando:
<pre>
# ifconfig eth0 192.168.0.2 up
</pre>
dove 192.168.0.2 � l'indirizzo arbitrario che si � scelto per la particolare macchina.<br>
Il comando '''ifconfig''' permette di specificare molti pi� parametri, ma utilizzando l' indirizzo dell' esempio, questi verranno preconfigurati automaticamente.
Per non riscrivere questo comando ad ogni boot, si pu� inserire in /etc/network/interfaces:
<pre>
auto eth0
iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    network 192.168.0.0
    broadcast 192.168.0.255
</pre>


===Impostare il gateway===
=== Graphics support  ---> ===
Ora bisogna dire ad ogni macchina della lan di instradare tutti i pacchetti diretti verso l'esterno al pc fisicamente collegato ad internet (che fa da router). A tal scopo basta impostare il default gateway:
Qui si configura il supporto per il frame buffer. In genere è consigliabile usare il driver generico vesa:
<pre>
# route add default gw 192.168.0.1
</pre>
Per non dover scrivere questo comando ad ogni riavvio, � sufficiente aggiungere al file /etc/network/interfaces, subito al di sotto della direttiva ''''broadcast ...'''' la seguente linea:
<pre>
  gateway 192.168.0.1
</pre>


===Impostare il server DNS===
* VESA VGA graphics support
Per impostare il server [[DNS]] che i nostri PC useranno � necessario editare il file '''/etc/resolv.conf''' inserendo la seguente linea:
<pre>nameserver 192.168.0.1</pre>
assicurandoci di scriverlo nella prima riga del file ''(ordine con cui il sistema interroga i [[DNS]] � identico a quello in cui compaiono in /etc/resolv.conf)''


===Client Windows�===
tuttavia nel mio caso uso il modulo radeon che mi permette di avere un frame buffer accelerato, con una risoluzione di 1280x1024 e un'alta frequenza di refresh (~ 74 Hz). Nella mia esperienza il modulo vesa ha la precedenza sul radeon, quindi per usare quest'ultimo bisogna disabilitare il vesa.
Per la configurazione di eventuali PC con installato Microsoft� Windows� vi rimandiamo alla Guida in Linea, al sito di supporto ed al vostro rivenditore hardware (che per contratto � tenuto a fornirvi assistenza).


==Problemi con MTU==
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
Pu� capitare a volte, specialmente con collegamenti adsl, che l'MTU impostato di default  per le interfacce di rete (1500) non sia appropriato e causi vari mafunzionamenti. Ad esempio, io non riuscivo ad usare wget, ftp, apt-get e irc. Altri hanno riportato di non potere accedere a certi siti.
  │ │  <*> Support for frame buffer devices                              │ │
  │ │  ---  Enable Video Mode Handling Helpers                          │ │
  │ │  [ ]  Enable Tile Blitting Support                                │ │
  │ │  < >  Cirrus Logic support                                        │ │
  │ │  < >  Permedia2 support                                          │ │
  │ │  < >  CyberPro 2000/2010/5000 support                            │ │
  │ │  < >  Arc Monochrome LCD board support                            │ │
  │ │  [ ]  Chips 69000 display support                                │ │
  │ │  [ ]  IMS Twin Turbo display support                              │ │
  │ │  < >  VGA 16-color graphics support                              │ │
  │ │  [ ]  VESA VGA graphics support                                  │ │
  │ │  < >  Hercules mono graphics support                              │ │
  │ │  < >  nVidia Framebuffer Support                                  │ │
  │ │  < >  nVidia Riva support                                        │ │
  │ │  < >  Intel 810/815 support (EXPERIMENTAL)                        │ │
  │ │  < >  Intel 830M/845G/852GM/855GM/865G support (EXPERIMENTAL)    │ │
  │ │  < >  Matrox acceleration                                        │ │
  │ │  < >  ATI Radeon display support (Old driver)                    │ │
  │ │  <*>  ATI Radeon display support                                  │ │
  │ │  [*]    DDC/I2C for ATI Radeon support                            │ │
  │ │  [ ]    Lots of debug output from Radeon driver                  │ │
  │ │  < >  ATI Rage128 display support                                │ │
  │ │  < >  ATI Mach64 display support                                  │ │
  │ │  < >  S3 Savage support                                          │ │
  │ │  < >  SiS acceleration                                            │ │
  │ │  < >  NeoMagic display support                                    │ │
  │ │  < >  IMG Kyro support                                            │ │
  │ │  < >  3Dfx Banshee/Voodoo3 display support                        │ │
  │ │  < >  3Dfx Voodoo Graphics (sst1) support                        │ │
  │ │  < >  Trident support                                            │ │
  │ │  [ ]  AMD Geode family framebuffer support (EXPERIMENTAL)        │ │
  │ │  < > Epson S1D13XXX framebuffer support                            │ │
  │ │  < > Virtual Frame Buffer support (ONLY FOR TESTING!)             │ │
  │ │      Console display driver support  --->                          │ │
  │ │      Logo configuration  --->                                      │ │
  │ │  [ ] Backlight & LCD device support  --->                          │ │
  │ │                                                                    │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Risolvere questo problema � semplice, basta impostare l'MTU di tutte le interfacce ethernet ad un valore pi� basso di 1500. A tal scopo basta aggiungere in /etc/network/interfaces una riga apposita:
==== Console display driver support  ---> ====
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │                --- VGA text console                                │ │
  │ │                [*]  Video mode selection support                  │ │
  │ │                <*> Framebuffer Console support                      │ │
  │ │                [ ] Select compiled-in fonts                        │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


<pre>
=== Sound  ---> ===
iface eth0 inet static
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
address 192.168.0.2
  │ │            <*> Sound card support                                  │ │
netmask 255.255.255.0
  │ │                Advanced Linux Sound Architecture  --->              │ │
network 192.168.0.0
  │ │                Open Sound System  --->                    (niente) │ │
broadcast 192.168.0.255
  │ └─────────────────────────────────────────────────────────────────────┘ │
        mtu 1412
</pre>


Questo su tutti i computer della LAN e anche sul pc che funge da router. Se si ha poi una connessione ppp per collegarsi ad internet sul pc-router bisogner� impostare l'MTU anche per questa interfaccia. Qu�, la configurazione potrebbe variare a seconda dei casi ma usualmente � possibile impostare l'MTU in '''/etc/ppp/options''' e/o in '''/etc/ppp/peers/tuo-provider'''.
==== Advanced Linux Sound Architecture ====
Supporti generici ed emulazione oss:
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │              <*> Advanced Linux Sound Architecture                │ │
  │ │              <*>  Sequencer support                              │ │
  │ │              <M>    Sequencer dummy client                        │ │
  │ │              <M>  OSS Mixer API                                  │ │
  │ │              <M>  OSS PCM (digital audio) API                    │ │
  │ │              [*]  OSS Sequencer API                              │ │
  │ │              <M>  RTC Timer support                              │ │
  │ │              [ ]  Verbose printk                                  │ │
  │ │              [ ]  Debug                                          │ │
  │ │                    Generic devices  --->                          │ │
  │ │                    PCI devices  --->                              │ │
  │ │                    USB devices  --->                              │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Riavviando ora tutte le interfacce di rete sia eth0 che ppp, avremo impostato il novo valore per l'MTU e sperabilmente avremo eliminato i malfunzionamenti.
===== Generic devices  ---> =====
Qui seleziono solo il virtualmidi che talvolta può tornare utile:
  <M> Virtual MIDI soundcard 


==Test==
===== PCI devices  ---> =====
Finalmente siamo arrivati al momento di testare la nostra rete domestica.
Scegliere il driver delle propria scheda audio PCI, nel mio caso:
  <M> Emu10k1 (SB Live!, Audigy, E-mu APS)


Nei prossimi minuti cercheremo di appurare se i vari elementi che abbiamo predisposto in precedenza sono effettivamente funzionanti e, se non lo sono, per quale motivo.
===== USB devices  ---> =====
Da selezionare solo se si possiedono periferiche audio USB, io non ne possiedo e non seleziono niente.


Per fare questo avremo bisogno di alcuni tra i pi� usati strumenti diagnostici: '''ping''' e '''nslookup''', ma non preoccupatevi: il primo viene installato automaticamente ed il secondo abbiamo provveduto ad installarlo contestualmente a bind.
=== USB support  ---> ===
In questa sezione si attiva il supporto per l'usb. Se avete porte USB1 dovrete scegliere tra:


{{Warningbox| L'eseguibile '''/bin/ping''' deve avere il bit suid impostato per funzionare da utente normale. }}
* OHCI HCD support
* UHCI HCD (most Intel and VIA) support


===Comunicazione tra router e client===
a seconda del vostro controller usb. Se invece avete un controller USB2 dovrete scegliere:
Prima di tutto annotiamo l' indirizzo IP del client (in questo esempio: 192.168.0.2).


Ora apriamo una shell sul pc che funge da router e digitiamo il comando
* EHCI HCD (USB 2.0) support
<pre>
$ ping -c 4 192.168.0.2
PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data.
64 bytes from 192.168.0.2: icmp_seq=1 ttl=255 time=1.41 ms
64 bytes from 192.168.0.2: icmp_seq=2 ttl=255 time=0.953 ms
64 bytes from 192.168.0.2: icmp_seq=3 ttl=255 time=0.988 ms
64 bytes from 192.168.0.2: icmp_seq=4 ttl=255 time=1.02 ms


--- 192.168.2.0 ping statistics ---
Non metto il supporto HID non possedendo nessuna periferica che lo richiede. Inoltre la mia connessione è tramite scheda di rete, quindi non seleziono nessuna voce relativa a periferiche di networking USB.
4 packets transmitted, 4 received, 0% packet loss, time 3002ms
rtt min/avg/max/mdev = 0.953/1.094/1.417/0.191 ms
</pre>


Per ora non ci interessa il significato dei messaggi a video, ma unicamente il fatto che dal router � effettivamente possibile raggiungere (pingare) il client.
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │<M> Support for Host-side USB                                        │ │
  │ │[ ]  USB verbose debug messages                                    │ │
  │ │---  Miscellaneous USB options                                      │ │
  │ │[*]  USB device filesystem                                          │ │
  │ │[*]  Enforce USB bandwidth allocation (EXPERIMENTAL)                │ │
  │ │[ ]  Dynamic USB minor allocation (EXPERIMENTAL)                    │ │
  │ │[ ]  USB suspend/resume (EXPERIMENTAL)                              │ │
  │ │---  USB Host Controller Drivers                                    │ │
  │ │< >  EHCI HCD (USB 2.0) support                                    │ │
  │ │< >  ISP116X HCD support                                            │ │
  │ │< >  OHCI HCD support                                              │ │
  │ │<M>  UHCI HCD (most Intel and VIA) support                          │ │
  │ │< >  SL811HS HCD support                                            │ │
  │ │---  USB Device Class drivers                                      │ │
  │ │< >  USB Audio support                                              │ │
  │ │< >  USB Bluetooth TTY support                                      │ │
  │ │< >  USB MIDI support                                              │ │
  │ │< >  USB Modem (CDC ACM) support                                    │ │
  │ │<M>  USB Printer support                                            │ │
  │ │---  NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may als│ │
  │ │<M>  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/ZiO! CompactFlash/SmartMedia support              │ │
  │ │[ ]    USBAT/USBAT02-based storage support (EXPERIMENTAL)          │ │
  │ │[ ]    SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)│ │
  │ │[ ]    SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)            │ │
  │ │[ ]    Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)          │ │
  │ │---  USB Input Devices                                              │ │
  │ │< >  USB Human Interface Device (full HID) support                  │ │
  │ │        USB HID Boot Protocol drivers  --->          (nessuno)      │ │
  │ │< >  Aiptek 6000U/8000U tablet support                              │ │
  │ │< >  Wacom Intuos/Graphire tablet support                          │ │
  │ │< >  Acecad Flair tablet support                                    │ │
  │ │< >  KB Gear JamStudio tablet support                              │ │
  │ │< >  Griffin PowerMate and Contour Jog support                      │ │
  │ │< >  MicroTouch USB Touchscreen Driver                              │ │
  │ │< >  ITM Touch USB Touchscreen Driver                              │ │
  │ │< >  eGalax TouchKit USB Touchscreen Driver                        │ │
  │ │< >  X-Box gamepad support                                          │ │
  │ │< >  ATI / X10 USB RF remote control                                │ │
  │ │< >  Keyspan DMR USB remote control (EXPERIMENTAL)                  │ │
  │ │---  USB Imaging devices                                            │ │
  │ │< >  USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)        │ │
  │ │< >  Microtek X6USB scanner support                                │ │
  │ │---  USB Multimedia devices                                        │ │
  │ │< >  DABUSB driver                                                  │ │
  │ │---  Video4Linux support is needed for USB Multimedia device support│ │
  │ │      USB Network Adapters  --->                    (nessuno)      │ │
  │ │[ ]  USB Monitor                                                    │ │
  │ │---  USB port drivers                                              │ │
  │ │      USB Serial Converter support  --->            (nessuno)      │ │
  │ │---  USB Miscellaneous drivers                                      │ │
  │ │< >  EMI 6|2m USB Audio interface support                          │ │
  │ │< >  EMI 2|6 USB Audio interface support                            │ │
  │ │< >  USB Auerswald ISDN support (EXPERIMENTAL)                      │ │
  │ │< >  USB Diamond Rio500 support (EXPERIMENTAL)                      │ │
  │ │< >  USB Lego Infrared Tower support (EXPERIMENTAL)                │ │
  │ │< >  USB LCD driver support                                        │ │
  │ │< >  USB LED driver support                                        │ │
  │ │< >  Cypress USB thermometer driver support                        │ │
  │ │< >  USB PhidgetKit support                                        │ │
  │ │< >  USB PhidgetServo support                                      │ │
  │ │< >  Siemens ID USB Mouse Fingerprint sensor support                │ │
  │ │< >  USB LD driver                                                  │ │
  │ │< >  USB testing driver (DEVELOPMENT)                              │ │
  │ │      USB DSL modem support  --->                        (nessuno)  │ │
  │ │    USB Gadget Support  --->                            (nessuno)   │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Possiamo essere certi che � cos� guardando semplicemente le statistiche riassuntive stampate al termine del test, la frase
== File systems  ---> ==
Qui sceglieremo i filesystem che il nostro sistema dovrà supportare. Notare la presenza del nuovo inotify, usato ad esempio da beagle.
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │    <*> Second extended fs support                                  │ │
  │ │    [ ]  Ext2 extended attributes                                  │ │
  │ │    [ ]  Ext2 execute in place support                              │ │
  │ │    <*> 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                                │ │
  │ │    [ ]  ReiserFS extended attributes                              │ │
  │ │    < > JFS filesystem support                                      │ │
  │ │        XFS support  --->                                            │ │
  │ │    < > Minix fs support                                            │ │
  │ │    < > ROM file system support                                      │ │
  │ │    [*] Inotify file change notification support                    │ │
  │ │    [ ] Quota support                                                │ │
  │ │    < > Kernel automounter support                                  │ │
  │ │    <M> Kernel automounter version 4 support (also supports v3)      │ │
  │ │        CD-ROM/DVD Filesystems  --->                                │ │
  │ │        DOS/FAT/NT Filesystems  --->                                │ │
  │ │        Pseudo filesystems  --->                                    │ │
  │ │        Miscellaneous filesystems  --->  (niente)                  │ │
  │ │        Network File Systems  --->                                  │ │
  │ │        Partition Types  --->            (niente)                  │ │
  │ │        Native Language Support  --->                                │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


<pre>4 packets transmitted, 4 received, 0% packet loss, time 3002ms</pre>
Ecco ora le sottovoci non vuote:


infatti ci informa che abbiamo trasmesso al client 4 pacchetti e che il client li ha ricevuti tutti.
=== CD-ROM/DVD Filesystems  ---> ===
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
  │ │            <M> ISO 9660 CDROM file system support                  │ │
  │ │            [*]  Microsoft Joliet CDROM extensions                │ │
  │ │            [*]  Transparent decompression extension              │ │
  │ │            < > UDF file system support                            │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Se cos� non fosse, avremmo avuto un output del tipo
=== DOS/FAT/NT Filesystems  ---> ===
<pre>
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
$ ping -c 4 192.168.0.2
  │ │              <M> MSDOS fs support                                  │ │
PING 192.168.0.1 (192.168.0.2) 56(84) bytes of data.
  │ │              <M> VFAT (Windows-95) fs support                      │ │
From 192.168.0.1 icmp_seq=1 Destination Host Unreachable
  │ │              (850) Default codepage for FAT                        │ │
From 192.168.0.1 icmp_seq=2 Destination Host Unreachable
  │ │              (iso8859-1) Default iocharset for FAT                │ │
From 192.168.0.1 icmp_seq=3 Destination Host Unreachable
  │ │              <M> NTFS file system support                          │ │
From 192.168.0.1 icmp_seq=4 Destination Host Unreachable
  │ │              [*]  NTFS debugging support                          │ │
  │ │              [*]  NTFS write support                              │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


--- 192.168.0.2 ping statistics ---
=== Pseudo filesystems  ---> ===
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2998ms
Molto importante questa sezione. Il server audio a bassa latenza '''jack''' necessita della voce
, pipe 3
* Virtual memory file system support
</pre>
per poter funzionare correttamente.


Possiamo vedere che il client (192.168.0.2) non raggiungibile (Destination Host Unreachable) dal router (from 192.168.0.1).
Se tutto andato bene passiamo al punto seguente, in caso contrario controlliamo:
* che l' indirizzo del client sia corretto.
* che i cavi di rete siano collegati correttamente;
* che le schede di rete segnalino la presenza del segnale elettrico (ethernel link);


===Comunicazione tra client e router===
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
Il traffico della nostra rete deve essere necessariamente di tipo bidirezionale: dobbiamo quindi assicurarci che dal client sia possibile raggiungere il router.
  │ │      [*] /proc file system support                                  │ │
  │ │      [*]  /proc/kcore support                                      │ │
  │ │      [ ] /dev/pts Extended Attributes                              │ │
  │ │      [*] Virtual memory file system support (former shm fs)        │ │
  │ │      [ ]  tmpfs Extended Attributes                                │ │
  │ │      [ ] HugeTLB file system support                                │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │
=== Network File Systems  ---> ===
Attivo il supporto per il NFS (Network File System), bastano le voci:
  <M> NFS file system support
  <M> NFS server support


Ripetiamo le operazioni del punto precedente, questa volta, per�, operando dal client in direzione del router.
=== Native Language Support  ---> ===
Non sono sicuro che questa sia la configurazione ottimale, la riporto solo per completezza. Sono elencate le sole voci selezionate:
  │ ┌──────────────────────────────────────────────────────────────────────────┐ │
  │ │ <*> Base native language support                                        │ │
  │ │ (UTF8) Default NLS Option                                                │ │
  │ │ <M>  Codepage 850 (Europe)                                              │ │
  │ │ <M>  Codepage 852 (Central/Eastern Europe)                              │ │
  │ │ <M>  NLS ISO 8859-1  (Latin 1; Western European Languages)              │ │
  │ │ <M>  NLS ISO 8859-2  (Latin 2; Slavic/Central European Languages)      │ │
  │ │ <M>  NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)    │ │
  │ │ <M>  NLS UTF8                                                          │ │
  │ └──────────────────────────────────────────────────────────────────────────┘ │


===Risoluzione dei nomi===
== Profiling support  ---> ==
Verifichiamo che il nostro client sia in grado di risolvere i nomi degli host (di qui in seguito [[FQDN]]): questo significa che deve essere in grado di poter identificare un computer presente in internet non solo in base al suo indirizzo IP, ma anche in base ad un nome facilmente memorizzabile.
Niente, non siamo sviluppatori del kernel (almeno io :-P).


Facciamo subito un esempio usando come riferimento il FQDN '''www.debianizzati.org'''.
== Kernel hacking  ---> ==
<pre>
Con queste opzioni si attivano i tasti magici che permettono di uscire da configurazione di stallo del sistema. Molto utile se si provano molti sofware audio (e non solo) sperimentali che rischiano di destabilizzare il sistema.
# nslookup www.debianizzati.org
Per maggiori informazioni vedere la documentazione del kernel.
Server:        192.168.0.1
  │ ┌─────────────────────────────────────────────────────────────────────┐ │
Address:        192.168.0.1#53
  │ │      [ ] Show timing information on printks                        │ │
  │ │      [*] Kernel debugging                                          │ │
  │ │      [*]  Magic SysRq key                                          │ │
  │ │      (14)  Kernel log buffer size (16 => 64KB, 17 => 128KB)        │ │
  │ │      [ ]  Collect scheduler statistics                            │ │
  │ │      [ ]  Debug memory allocations                                │ │
  │ │      [ ]  Debug preemptible kernel                                │ │
  │ │      [ ]  Spinlock debugging                                      │ │
  │ │      [ ]  Sleep-inside-spinlock checking                          │ │
  │ │      [ ]  kobject debugging                                        │ │
  │ │      [ ]  Compile the kernel with debug info                      │ │
  │ │      [ ]  Debug Filesystem                                        │ │
  │ │      [ ]  Compile the kernel with frame pointers                  │ │
  │ │      [*]  Check for stack overflows                                │ │
  │ │      [ ]  Kprobes                                                  │ │
  │ │      [ ]  Stack utilization instrumentation                        │ │
  │ │      [ ]  Page alloc debugging                                    │ │
  │ │      [ ]  Use 4Kb for kernel stacks instead of 8Kb                │ │
  │ └─────────────────────────────────────────────────────────────────────┘ │


Non-authoritative answer:
== Security options  ---> ==
Name:   www.debianizzati.org
Queste voci sono necessarie per poter compilare successivamente il modulo realtime-lsm che permette di eseguire applicazioni in realtime anche ad utenti non-root.
Address: 66.199.227.58
   │ ┌─────────────────────────────────────────────────────────────────────┐ │
</pre>
  │ │          [ ] Enable access key retention support                    │ │
Possiamo vedere che il server che ci fornisce l' indirizzo � 192.168.0.1, cio� il nostro router, e che siamo in grado di risolvere gli FQDN in indirizzi IP. A riprova di questo, se tentiamo di pingare www.debianizzati.org, otterremo il seguente output:
  │ │          [*] Enable different security models                      │ │
<pre>
  │ │          [ ]  Socket and Networking Security Hooks                │ │
$ ping -c 2 www.debianizzati.org
  │ │          <M>   Default Linux Capabilities                          │ │
PING www.debianizzati.org (66.199.227.58) 56(84) bytes of data.
  │ │          < >  Root Plug Support                                    │ │
64 bytes from cp4.idleserv.net (66.199.227.58): icmp_seq=1 ttl=50 time=153 ms
  │ │          < >   BSD Secure Levels                                    │ │
64 bytes from cp4.idleserv.net (66.199.227.58): icmp_seq=2 ttl=50 time=152 ms
  │ │          [*]  NSA SELinux Support                                  │ │
</pre>
  │ │          [ ]    NSA SELinux boot parameter                        │ │
mentre se non fosse possibile associare www.debianizzati.org al corretto IP, leggeremmo:
  │ │          [ ]    NSA SELinux runtime disable                        │ │
<pre>
  │ │          [*]    NSA SELinux Development Support                    │ │
$ ping www.debianizzati.org
  │ │          [ ]    NSA SELinux AVC Statistics                        │ │
ping: unknown host www.debianizzati.org
  │ │          (1)     NSA SELinux checkreqprot default value            │ │
</pre>
  │ └─────────────────────────────────────────────────────────────────────┘ │
== Cryptographic options  ---> ==
Normalmente vengono attivate queste opzioni nelle reti wireless o comunque nelle configurazioni in cui i dati vengono criptati (vpn, etc.)


===Navigazione===
Un esempio potrebbe essere quello della configurazione di rete wireless (mi viene in mente wpasupplicant) in cui si imposta la connessione criptata.


==Conclusioni==
== Library routines  ---> ==
Neanche qui niente, qualcuno sa se va bene?


{{Autori
|Autore=[[User:TheNoise|TheNoise]]
}}


----
[[Categoria:Linux]]
Autore: [[Utente:Guide @ Debianizzati.Org|Debianizzati.Org]]<br>
Revisione: [[Utente:Keltik|keltik]]<br>
Revisione: [[Utente:TheNoise|The Noise]]

Versione attuale delle 15:45, 2 nov 2014

Guida da adottare! Bannermv.png


Introduzione

In questa pagina troverete la configurazione del kernel 2.6.13 usata sul mio PC desktop, condita con varie considerazioni sparse che possano aiutare a comprendere le varie voci. Alcune parti della configurazioni sono generiche; altre, sebbene specifiche del mio hardware, possono servire da spunto per altri che stiano cercando di configurare il proprio kernel.

La presente configurazione è orientata ad ottenere la più bassa latenza possibile da un kernel "Vanilla", tipicamente per applicazioni audio realtime. Forse in futuro aggiungerò una sezione riguardo l'applicazioni delle patch realtime al kernel (necessarie per ottenere latenze ancora più basse).

Il secondo scopo di questa configurazione è quello di ottenere il kernel minimo (compilando meno cose possibili) per ottenere la funzionalità richiesta. Per questo motivo invito chiunque abbia consigli per ridurre ulteriormente questa configurazione, o che sappia anche solo chiarire certe voci più oscure della configurazione, a scrivere qui ampliando e integrando il testo.

Attraverso l'indice è possibile accedere direttamente alle varie sezioni della configurazione del kernel. Per cui questa guida può essere anche usata come veloce riferimento o confronto.

Come ultima cosa aggiungo che con questa configurazione riesco a non avere mai interruzioni nella musica che ascolto anche se sto ricompilando il kernel o installando Openoffice (queste prestazioni le raggiungo soltanto usando l'I/O Scheduler cfq).

Happy Debian!

Warning.png ATTENZIONE
Ottimizzare un kernel per la bassa latenza implica la diminuzione del throughput complessivo del processore, e quindi una diminuzione delle prestazioni assolute. La bassa latenza si ottiene a scapito delle prestazioni, questa è una limitazione intrinseca dei sistemi realtime (non specifica di linux). Quindi questa configurazione è sconsigliata per applicazioni server. Per macchine poco potenti (indicativamente sotto il GHz) si consiglia comunque di usare un kernel 2.4 patchato per la bassa latenza, in tal modo è possibile ottenere delle ottime prestazioni realtime anche su PC relativamente vetusti.


Descrizione PC

Il PC è un desktop abbastanza standard, nessuna periferica SCSI, hard disk EIDE ata 100, CD-ROM e masterizzare EIDE, scheda audio Audigy 1, scheda video ati radeon 7000ve, floppy, porte usb (sono abilitati nella configurazione l'uso di chiavette USB).

La connessione avviene tramite scheda di rete ethernet 10/100, quindi non è necessario nessun particolare supporto per modem. Inoltre non viene usata l'immagine initrd e quindi i relativi supporti (file system, chipset, ecc...) vengono compilati staticamente.

Ecco per completezza l'output di lspci:

0000:00:00.0 Host bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] System Controller (rev 13)
0000:00:01.0 PCI bridge: Advanced Micro Devices [AMD] AMD-760 [IGD4-1P] AGP Bridge
0000:00:07.0 ISA bridge: VIA Technologies, Inc. VT82C686 [Apollo Super South] (rev 40)
0000:00:07.1 IDE interface: VIA Technologies, Inc. VT82C586A/B/VT82C686/A/B/VT823x/A/C PIPC Bus Master IDE (rev 06)
0000:00:07.2 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.3 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 1a)
0000:00:07.4 SMBus: VIA Technologies, Inc. VT82C686 [Apollo Super ACPI] (rev 40)
0000:00:0b.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
0000:00:0f.0 Multimedia audio controller: Creative Labs SB Audigy (rev 03)
0000:00:0f.1 Input device controller: Creative Labs SB Audigy MIDI/Game port (rev 03)
0000:00:0f.2 FireWire (IEEE 1394): Creative Labs SB Audigy FireWire Port
0000:01:05.0 VGA compatible controller: ATI Technologies Inc Radeon RV100 QY [Radeon 7000/VE]

Code maturity level options --->

 │ │      [*] Prompt for development and/or incomplete code/drivers         │ │
 │ │      [*]   Select only drivers expected to compile cleanly             │ │

General setup --->

 │ ┌────────────────────────────────────────────────────────────────────────┐ │
 │ │   ()  Local version - append to kernel release                         │ │
 │ │   [*] Support for paging of anonymous memory (swap)                    │ │
 │ │   [*] System V IPC                                                     │ │
 │ │   [ ] POSIX Message Queues                                             │ │
 │ │   [*] BSD Process Accounting                                           │ │
 │ │   [ ]   BSD Process Accounting version 3 file format                   │ │
 │ │   [*] Sysctl support                                                   │ │
 │ │   [ ] Auditing support                                                 │ │
 │ │   [*] Support for hot-pluggable devices                                │ │
 │ │   [*] Kernel Userspace Events                                          │ │
 │ │   [ ] Kernel .config support                                           │ │
 │ │   [ ] Configure standard kernel features (for small systems)  --->     │ │
 │ └────────────────────────────────────────────────────────────────────────┘ │

Loadable module support --->

 │ │            [*] Enable loadable module support                          │ │
 │ │            [*]   Module unloading                                      │ │
 │ │            [ ]     Forced module unloading                             │ │
 │ │            [*]   Module versioning support (EXPERIMENTAL)              │ │
 │ │            [ ]   Source checksum for all modules                       │ │
 │ │            [*]   Automatic kernel module loading                       │ │

Processor type and features --->

Questa sezione è particolarmente importante. Qui si seleziona il tipo di processore, l'mtrr, il tipo di preemption. Notare in particolare le voci:

  • Preemption Model (Preemptible Kernel (Low-Latency Desktop))
  • Preempt The Big Kernel Lock

per ottenere bassa latenza e

  • Timer frequency (1000 HZ)

per avere un timer più preciso.

 │ ┌────────────────────────────────────────────────────────────────────────┐ │
 │ │    Subarchitecture Type (PC-compatible)  --->                          │ │
 │ │    Processor family (Athlon/Duron/K7)  --->                            │ │
 │ │[ ] Generic x86 support                                                 │ │
 │ │[*] HPET Timer Support                                                  │ │
 │ │[ ] Symmetric multi-processing support                                  │ │
 │ │    Preemption Model (Preemptible Kernel (Low-Latency Desktop))  --->   │ │
 │ │[*] Preempt The Big Kernel Lock                                         │ │
 │ │[*] Local APIC support on uniprocessors                                 │ │
 │ │[*]   IO-APIC support on uniprocessors                                  │ │
 │ │[*] Machine Check Exception                                             │ │
 │ │<*>   Check for non-fatal errors on AMD Athlon/Duron / Intel Pentium 4  │ │
 │ │[ ]   check for P4 thermal throttling interrupt.                        │ │
 │ │< > Toshiba Laptop support                                              │ │
 │ │< > Dell laptop support                                                 │ │
 │ │[ ] Enable X86 board specific fixups for reboot                         │ │
 │ │< > /dev/cpu/microcode - Intel IA32 CPU microcode support               │ │
 │ │<M> /dev/cpu/*/msr - Model-specific register support                    │ │
 │ │<M> /dev/cpu/*/cpuid - CPU information support                          │ │
 │ │    Firmware Drivers  --->                                              │ │
 │ │    High Memory Support (off)  --->                                     │ │
 │ │    Memory model (Flat Memory)  --->                                    │ │
 │ │[ ] Math emulation                                                      │ │
 │ │[*] MTRR (Memory Type Range Register) support                           │ │
 │ │[ ] Boot from EFI support (EXPERIMENTAL)                                │ │
 │ │[ ] Use register arguments (EXPERIMENTAL)                               │ │
 │ │[*] Enable seccomp to safely compute untrusted bytecode                 │ │
 │ │    Timer frequency (1000 HZ)  --->                                     │ │
 │ │[ ] kexec system call (EXPERIMENTAL)                                    │ │
 │ └────────────────────────────────────────────────────────────────────────┘ │

Power management options (ACPI, APM) --->

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

ACPI (Advanced Configuration and Power Interface) Support --->

 │ │  [*] ACPI Support                                                      │ │
 │ │  [ ]   Sleep States (EXPERIMENTAL)                                     │ │
 │ │  < >   AC Adapter                                                      │ │
 │ │  < >   Battery                                                         │ │
 │ │  < >   Button                                                          │ │
 │ │  <M>   Video                                                           │ │
 │ │  < >   Generic Hotkey                                                  │ │
 │ │  <M>   Fan                                                             │ │
 │ │  <M>   Processor                                                       │ │
 │ │  <M>     Thermal Zone                                                  │ │
 │ │  < >   ASUS/Medion Laptop Extras                                       │ │
 │ │  < >   IBM ThinkPad Laptop Extras                                      │ │
 │ │  < >   Toshiba Laptop Extras                                           │ │
 │ │  (0)   Disable ACPI for systems before Jan 1st this year               │ │
 │ │  [ ]   Debug Statements                                                │ │
 │ │  [ ]   Power Management Timer Support                                  │ │
 │ │  < >   ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)    │ │


Bus options (PCI, PCMCIA, EISA, MCA, ISA) --->

Non sono sicuro se la voce "PCI device name database" sia necessaria. Se qualcuno ha informazioni in proposito per favore lo segnali.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │         [*] PCI support                                             │ │
 │ │               PCI access mode (Any)  --->                           │ │
 │ │         [ ]   PCI Express support                                   │ │
 │ │         [ ]   Message Signaled Interrupts (MSI and MSI-X)           │ │
 │ │         [ ]   Legacy /proc/pci interface                            │ │
 │ │         [*]   PCI device name database                              │ │
 │ │         [ ]   PCI Debugging                                         │ │
 │ │         [ ] ISA support                                             │ │
 │ │         [ ] MCA support                                             │ │
 │ │         < > NatSemi SCx200 support                                  │ │
 │ │             PCCARD (PCMCIA/CardBus) support  ---> (niente)          │ │
 │ │             PCI Hotplug Support  --->             (niente)          │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Executable file formats --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │          [*] Kernel support for ELF binaries                        │ │
 │ │          <*> Kernel support for a.out and ECOFF binaries            │ │
 │ │          <M> Kernel support for MISC binaries                       │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Networking --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │           [*] Networking support                                    │ │
 │ │                 Networking options  --->                            │ │
 │ │           [ ]   Amateur Radio support  --->                         │ │
 │ │           < >   IrDA (infrared) subsystem support  --->             │ │
 │ │           < >   Bluetooth subsystem support  --->                   │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Networking options --->

Sono attivate solo le opzioni minime per navigare. Nessun firewall, o capacità di routing è attivata. Se qualcuno sa cosa si può ancora togliere è ben gradito un consiglio. Con questa configurazione è possibile fare file-sharing e ricevere trasmissioni broadcast tramite internet.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │      <*> Packet socket                                              │ │
 │ │      [*]   Packet socket: mmapped IO                                │ │
 │ │      <*> Unix domain sockets                                        │ │
 │ │      < > PF_KEY sockets                                             │ │
 │ │      [*] TCP/IP networking                                          │ │
 │ │      [*]   IP: multicasting                                         │ │
 │ │      [ ]   IP: advanced router                                      │ │
 │ │      [ ]   IP: kernel level autoconfiguration                       │ │
 │ │      < >   IP: tunneling                                            │ │
 │ │      < >   IP: GRE tunnels over IP                                  │ │
 │ │      [ ]   IP: multicast routing                                    │ │
 │ │      [ ]   IP: ARP daemon support (EXPERIMENTAL)                    │ │
 │ │      [ ]   IP: TCP syncookie support (disabled per default)         │ │
 │ │      < >   IP: AH transformation                                    │ │
 │ │      < >   IP: ESP transformation                                   │ │
 │ │      < >   IP: IPComp transformation                                │ │
 │ │      < >   IP: tunnel transformation                                │ │
 │ │      < >   IP: TCP socket monitoring interface                      │ │
 │ │      [ ]   TCP: advanced congestion control                         │ │
 │ │      < >   The IPv6 protocol                                        │ │
 │ │      [ ] Network packet filtering (replaces ipchains)  ---> (niente)│ │
 │ │          SCTP Configuration (EXPERIMENTAL)  --->            (niente)│ │
 │ │      < > Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)            │ │
 │ │      < > 802.1d Ethernet Bridging                                   │ │
 │ │      < > 802.1Q VLAN Support                                        │ │
 │ │      < > DECnet 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                                                 │ │
 │ │      [ ] QoS and/or fair queueing  --->  (niente)                   │ │
 │ │          Network testing  --->           (niente)                   │ │
 │ │                                                                     │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Device Drivers --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │               Generic Driver Options  --->                          │ │
 │ │               Memory Technology Devices (MTD)  --->     (niente)    │ │
 │ │               Parallel port support  --->               (niente)    │ │
 │ │               Plug and Play support  --->               (niente)    │ |
 │ │               Block devices  --->                                   │ │
 │ │               ATA/ATAPI/MFM/RLL support  --->                       │ │
 │ │               SCSI device support  --->                             │ │
 │ │               Multi-device support (RAID and LVM)  --->  (niente)   │ │
 │ │               Fusion MPT device support  --->            (niente)   │ │
 │ │               IEEE 1394 (FireWire) support  --->         (niente)   │ │
 │ │               I2O device support  --->                              │ │
 │ │               Network device support  --->                          │ │
 │ │               ISDN subsystem  --->                       (niente)   │ │
 │ │               Telephony Support  --->                    (niente)   │ │
 │ │               Input device support  --->                            │ │
 │ │               Character devices  --->                               │ │
 │ │               I2C support  --->                                     │ │
 │ │               Dallas's 1-wire bus  --->                  (niente)   │ │
 │ │               Hardware Monitoring support  --->                     │ │
 │ │               Misc devices  --->                         (niente)   │ │
 │ │               Multimedia devices  --->                   (niente)   │ │
 │ │               Graphics support  --->                                │ │
 │ │               Sound  --->                                           │ │
 │ │               USB support  --->                                     │ │
 │ │               MMC/SD Card support  --->                  (niente)   │ │
 │ │               InfiniBand support  --->                   (niente)   │ │
 │ │               SN Devices  --->                           (niente)   │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Generic Driver Options --->

 | │[*] Select only drivers that don't need compile-time external firmwar│ │
 │ │[*] Prevent firmware from being built                                │ │
 │ │< > Hotplug firmware loading support                                 │ │
 │ │[ ] Driver Core verbose debug messages                               │ │


Block devices --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │ <M> Normal floppy disk support                                      │ │
 │ │ < > Compaq SMART2 support                                           │ │
 │ │ < > Compaq Smart Array 5xxx support                                 │ │
 │ │ < > Mylex DAC960/DAC1100 PCI RAID Controller support                │ │
 │ │ < > Micro Memory MM5415 Battery Backed RAM support (EXPERIMENTAL)   │ │
 │ │ <M> Loopback device support                                         │ │
 │ │ < >   Cryptoloop Support                                            │ │
 │ │ < > Network block device support                                    │ │
 │ │ < > Promise SATA SX8 support                                        │ │
 │ │ < > Low Performance USB Block driver                                │ │
 │ │ < > RAM disk support                                                │ │
 │ │ ()  Initramfs source file(s)                                        │ │
 │ │ [ ] Support for Large Block Devices                                 │ │
 │ │ < > Packet writing on CD/DVD media                                  │ │
 │ │     IO Schedulers  --->                                             │ │
 │ │ < > ATA over Ethernet support                                       │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

IO Schedulers --->

Questi sono gli scheduler per da usare per l'I/O su disco. Ecco come li descrive il kernel hacker Jen Axboe (link):

On Thursday 06 April 2006 20:31, Jens Axboe wrote:
> Low latency isn't always the primary goal. If you want that, you'd just
> use noop - that will always get you the lowest latency. deadline is a
> little worse than noop, but latency is still very good. cfq has higher
> latency, which is a design goal as you simply need to for good
> throughput. So while deadline does 100ms read latencies for 8 threads
> reading 8 files, cfq will get you average 700ms latency per thread
> there. cfq will also maintain 50MiB/sec throughput (or whatever your
> disk does sequentially) distributed evenly between threads, while
> deadline will probably do 2MiB/sec there.

Generalmente il cfq dà i migliori risultati grazie al suo elevato throughput, infatti per applicazioni audio di solito non è importante la latenza di accesso al disco ma throughput complessivo.

In ogni caso meglio compilarli tutti (questo non genera overhead). Di default viene scelto "Anticipatory" ma può essere cambiato a sistema avviato con:

# echo cfq > /sys/block/hda/queue/scheduler

(ad esempio se vogliamo impostare il cfq)

oppure usando il parametro di boot del kernel elevator, es:

elevator=cfq

I valori possibili si ottengono con un cat di /sys/block/hda/queue/scheduler (lo scheduler in uso è indicato tra parentesi quadre).

Ecco la configurazione:

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │                  <*> Anticipatory I/O scheduler                     │ │
 │ │                  <*> Deadline I/O scheduler                         │ │
 │ │                  <*> CFQ I/O scheduler                              │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

ATA/ATAPI/MFM/RLL support --->

Qui al posto di "VIA82CXXX chipset support" (alla fine) selezionate il supporto per il chipset del vostro hardware. Per il resto la configurazione è abbastanza generica.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │<*> 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 │ │
 │ │[ ]     Support for SATA (deprecated; conflicts with libata SATA driv│ │
 │ │[ ]     Use old disk-only driver on primary interface                │ │
 │ │<*>     Include IDE/ATA-2 DISK support                               │ │
 │ │[ ]     Use multi-mode by default                                    │ │
 │ │<M>     Include IDE/ATAPI CDROM support                              │ │
 │ │< >     Include IDE/ATAPI TAPE support (EXPERIMENTAL)                │ │
 │ │< >     Include IDE/ATAPI FLOPPY support                             │ │
 │ │< >     SCSI emulation support                                       │ │
 │ │[ ]     IDE Taskfile Access                                          │ │
 │ │---     IDE chipset support/bugfixes                                 │ │
 │ │<*>     generic/default IDE chipset support                          │ │
 │ │[ ]     CMD640 chipset bugfix/support                                │ │
 │ │[*]     PCI IDE chipset support                                      │ │
 │ │[ ]       Sharing PCI IDE interrupts support                         │ │
 │ │[ ]       Boot off-board chipsets first support                      │ │
 │ │< >       Generic PCI IDE Chipset Support                            │ │
 │ │< >       OPTi 82C621 chipset enhanced support (EXPERIMENTAL)        │ │
 │ │< >       RZ1000 chipset bugfix/support                              │ │
 │ │[*]       Generic PCI bus-master DMA support                         │ │
 │ │[ ]         Force enable legacy 2.0.X HOSTS to use DMA               │ │
 │ │[*]         Use PCI DMA by default when available                    │ │
 │ │[ ]           Enable DMA only for disks                              │ │
 │ │< >         AEC62XX chipset support                                  │ │
 │ │< >         ALI M15x3 chipset support                                │ │
 │ │< >         AMD and nVidia IDE support                               │ │
 │ │< >         ATI IXP chipset IDE support                              │ │
 │ │< >         CMD64{3|6|8|9} chipset support                           │ │
 │ │< >         Compaq Triflex IDE support                               │ │
 │ │< >         CY82C693 chipset support                                 │ │
 │ │< >         Cyrix CS5510/20 MediaGX chipset support (VERY EXPERIMENTA│ │
 │ │< >         Cyrix/National Semiconductor CS5530 MediaGX chipset suppo│ │
 │ │< >         HPT34X chipset support                                   │ │
 │ │< >         HPT36X/37X chipset support                               │ │
 │ │< >         National SCx200 chipset support                          │ │
 │ │< >         Intel PIIXn chipsets support                             │ │
 │ │< >         IT821X IDE support                                       │ │
 │ │< >         NS87415 chipset support                                  │ │
 │ │< >         PROMISE PDC202{46|62|65|67} support                      │ │
 │ │< >         PROMISE PDC202{68|69|70|71|75|76|77} support             │ │
 │ │< >         ServerWorks OSB4/CSB5/CSB6 chipsets support              │ │
 │ │< >         Silicon Image chipset support                            │ │
 │ │< >         SiS5513 chipset support                                  │ │
 │ │< >         SLC90E66 chipset support                                 │ │
 │ │< >         Tekram TRM290 chipset support                            │ │
 │ │<*>         VIA82CXXX chipset support                                │ │
 │ │[ ]     IGNORE word93 Validation BITS                                │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

SCSI device support --->

Queste voci sono necessarie per avere l'emulazione scsi ed usare le chiavette usb.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │  <M> SCSI device support                                            │ │
 │ │  [*]   legacy /proc/scsi/ support                                   │ │
 │ │  ---   SCSI support type (disk, tape, CD-ROM)                       │ │
 │ │  <M>   SCSI disk support                                            │ │
 │ │  < >   SCSI tape support                                            │ │
 │ │  < >   SCSI OnStream SC-x0 tape support                             │ │
 │ │  < >   SCSI CDROM support                                           │ │
 │ │  <M>   SCSI generic support                                         │ │
 │ │  < >   SCSI media changer support                                   │ │
 │ │  ---   Some SCSI devices (e.g. CD jukebox) support multiple LUNs    │ │
 │ │  [ ]   Probe all LUNs on each SCSI device                           │ │
 │ │  [ ]   Verbose SCSI error reporting (kernel size +=12K)             │ │
 │ │  [ ]   SCSI logging facility                                        │ │
 │ │        SCSI Transport Attributes  --->               (nessuno)      │ │
 │ │        SCSI low-level drivers  --->                  (nessuno)      │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │


I2O device support --->

Queste voci servono per attivare i sensori (temperatura, ventola, ecc...).

 │ │                  <M> I2O support                                    │ │
 │ │                  [ ]   Enable Adaptec extensions                    │ │
 │ │                  < >   I2O Configuration support                    │ │
 │ │                  < >   I2O Bus Adapter OSM                          │ │
 │ │                  < >   I2O Block OSM                                │ │
 │ │                  < >   I2O SCSI OSM                                 │ │
 │ │                  <M>   I2O /proc support                            │ │

Network device support --->

Tutto deselezionato tranne:

 Ethernet (10 or 100Mbit)  ---> 
 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │[*] Ethernet (10 or 100Mbit)                                         │ │
 │ │<M>   Generic Media Independent Interface device support             │ │
 │ │[*] EISA, VLB, PCI and on board controllers                          │ │
 │ │<M> RealTek RTL-8129/8130/8139 PCI Fast Ethernet Adapter support     │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │


Input device support --->

Tutto delesezionato tranne:

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │     --- Generic input layer (needed for keyboard, mouse, ...)       │ │
 │ │     ---   Userland interfaces                                       │ │
 │ │     ---   Mouse interface                                           │ │
 │ │     [*]     Provide legacy /dev/psaux device                        │ │
 │ │     (1024)  Horizontal screen resolution                            │ │
 │ │     (768)   Vertical screen resolution                              │ │
 │ │     [*]   Mouse  --->                                               │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Mouse --->

Supporto per mouse ps2:

 <*>   PS/2 mouse 

Character devices --->

Attenzione questa sezione è particolarmente delicata. Le due voci da adattare al vostro hardware sono:

* AMD Irongate, 761, and 762 chipset support
* ATI Radeon 

Per il resto la configurazione dovrebbe essere abbastanza generica.

Come curiosità, notare l'ultima voce tramite la quale è possibile aggiungere il supporto per il così detto "hardware inaffidabile", qui chiamato TPM (Trusted Platform Module).

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │[ ] Non-standard serial port support                                 │ │
 │ │    Serial drivers  --->                                             │ │
 │ │[*] Legacy (BSD) PTY support                                         │ │
 │ │(256) Maximum number of legacy PTY in use                            │ │
 │ │    IPMI  --->                                                       │ │
 │ │    Watchdog Cards  --->                                             │ │
 │ │<M> Intel/AMD/VIA HW Random Number Generator support                 │ │
 │ │< > /dev/nvram support                                               │ │
 │ │<M> Enhanced Real Time Clock Support                                 │ │
 │ │<M> Generic /dev/rtc emulation                                       │ │
 │ │[*]   Extended RTC operation                                         │ │
 │ │< > Double Talk PC internal speech card support                      │ │
 │ │< > Siemens R3964 line discipline                                    │ │
 │ │< > Applicom intelligent fieldbus card support                       │ │
 │ │< > Sony Vaio Programmable I/O Control Device support (EXPERIMENTAL) │ │
 │ │    Ftape, the floppy tape device driver  --->                       │ │
 │ │<M> /dev/agpgart (AGP Support)                                       │ │
 │ │< >   ALI chipset support                                            │ │
 │ │< >   ATI chipset support                                            │ │
 │ │<M>   AMD Irongate, 761, and 762 chipset support                     │ │
 │ │< >   AMD Opteron/Athlon64 on-CPU GART support                       │ │
 │ │< >   Intel 440LX/BX/GX, I8xx and E7x05 chipset support              │ │
 │ │< >   NVIDIA nForce/nForce2 chipset support                          │ │
 │ │< >   SiS chipset support                                            │ │
 │ │< >   Serverworks LE/HE chipset support                              │ │
 │ │< >   VIA chipset support                                            │ │
 │ │< >   Transmeta Efficeon support                                     │ │
 │ │<M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support)  │ │
 │ │< >   3dfx Banshee/Voodoo3+                                          │ │
 │ │< >   ATI Rage 128                                                   │ │
 │ │<M>   ATI Radeon                                                     │ │
 │ │< >   Matrox g200/g400                                               │ │
 │ │< >   SiS video cards                                                │ │
 │ │< >   Via unichrome video cards                                      │ │
 │ │< > ACP Modem (Mwave) support                                        │ │
 │ │< > RAW driver (/dev/raw/rawN) (OBSOLETE)                            │ │
 │ │[ ] HPET - High Precision Event Timer                                │ │
 │ │< > Hangcheck timer                                                  │ │
 │ │    TPM devices  --->                                                │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

I2C support --->

Selezionati solo:

 <*>   I2C device interface

e le sottovoci degli algoritmi:

 I2C Algorithms  --->
 <M> I2C PCF 8584 interfaces 
 <M> I2C PCA 9564 interfaces 

e del chip che governa i sensori (questo è da adattare al proprio hardware):

 <*> VIA 82C586B 

Hardware Monitoring support --->

Solo le voci (da adattare al proprio hardware):

 <M> Hardware Monitoring support
 <M>   VIA686A 

Graphics support --->

Qui si configura il supporto per il frame buffer. In genere è consigliabile usare il driver generico vesa:

  • VESA VGA graphics support

tuttavia nel mio caso uso il modulo radeon che mi permette di avere un frame buffer accelerato, con una risoluzione di 1280x1024 e un'alta frequenza di refresh (~ 74 Hz). Nella mia esperienza il modulo vesa ha la precedenza sul radeon, quindi per usare quest'ultimo bisogna disabilitare il vesa.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │   <*> Support for frame buffer devices                              │ │
 │ │   ---   Enable Video Mode Handling Helpers                          │ │
 │ │   [ ]   Enable Tile Blitting Support                                │ │
 │ │   < >   Cirrus Logic support                                        │ │
 │ │   < >   Permedia2 support                                           │ │
 │ │   < >   CyberPro 2000/2010/5000 support                             │ │
 │ │   < >   Arc Monochrome LCD board support                            │ │
 │ │   [ ]   Chips 69000 display support                                 │ │
 │ │   [ ]   IMS Twin Turbo display support                              │ │
 │ │   < >   VGA 16-color graphics support                               │ │
 │ │   [ ]   VESA VGA graphics support                                   │ │
 │ │   < >   Hercules mono graphics support                              │ │
 │ │   < >   nVidia Framebuffer Support                                  │ │
 │ │   < >   nVidia Riva support                                         │ │
 │ │   < >   Intel 810/815 support (EXPERIMENTAL)                        │ │
 │ │   < >   Intel 830M/845G/852GM/855GM/865G support (EXPERIMENTAL)     │ │
 │ │   < >   Matrox acceleration                                         │ │
 │ │   < >   ATI Radeon display support (Old driver)                     │ │
 │ │   <*>   ATI Radeon display support                                  │ │
 │ │   [*]     DDC/I2C for ATI Radeon support                            │ │
 │ │   [ ]     Lots of debug output from Radeon driver                   │ │
 │ │   < >   ATI Rage128 display support                                 │ │
 │ │   < >   ATI Mach64 display support                                  │ │
 │ │   < >   S3 Savage support                                           │ │
 │ │   < >   SiS acceleration                                            │ │
 │ │   < >   NeoMagic display support                                    │ │
 │ │   < >   IMG Kyro support                                            │ │
 │ │   < >   3Dfx Banshee/Voodoo3 display support                        │ │
 │ │   < >   3Dfx Voodoo Graphics (sst1) support                         │ │
 │ │   < >   Trident support                                             │ │
 │ │   [ ]   AMD Geode family framebuffer support (EXPERIMENTAL)         │ │
 │ │   < > Epson S1D13XXX framebuffer support                            │ │
 │ │   < > Virtual Frame Buffer support (ONLY FOR TESTING!)              │ │
 │ │       Console display driver support  --->                          │ │
 │ │       Logo configuration  --->                                      │ │
 │ │   [ ] Backlight & LCD device support  --->                          │ │
 │ │                                                                     │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Console display driver support --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │                --- VGA text console                                 │ │
 │ │                [*]   Video mode selection support                   │ │
 │ │                <*> Framebuffer Console support                      │ │
 │ │                [ ] Select compiled-in fonts                         │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Sound --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │            <*> Sound card support                                   │ │
 │ │                Advanced Linux Sound Architecture  --->              │ │
 │ │                Open Sound System  --->                     (niente) │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Advanced Linux Sound Architecture

Supporti generici ed emulazione oss:

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │               <*> Advanced Linux Sound Architecture                 │ │
 │ │               <*>   Sequencer support                               │ │
 │ │               <M>     Sequencer dummy client                        │ │
 │ │               <M>   OSS Mixer API                                   │ │
 │ │               <M>   OSS PCM (digital audio) API                     │ │
 │ │               [*]   OSS Sequencer API                               │ │
 │ │               <M>   RTC Timer support                               │ │
 │ │               [ ]   Verbose printk                                  │ │
 │ │               [ ]   Debug                                           │ │
 │ │                     Generic devices  --->                           │ │
 │ │                     PCI devices  --->                               │ │
 │ │                     USB devices  --->                               │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │
Generic devices --->

Qui seleziono solo il virtualmidi che talvolta può tornare utile:

 <M> Virtual MIDI soundcard  
PCI devices --->

Scegliere il driver delle propria scheda audio PCI, nel mio caso:

 <M> Emu10k1 (SB Live!, Audigy, E-mu APS) 
USB devices --->

Da selezionare solo se si possiedono periferiche audio USB, io non ne possiedo e non seleziono niente.

USB support --->

In questa sezione si attiva il supporto per l'usb. Se avete porte USB1 dovrete scegliere tra:

  • OHCI HCD support
  • UHCI HCD (most Intel and VIA) support

a seconda del vostro controller usb. Se invece avete un controller USB2 dovrete scegliere:

  • EHCI HCD (USB 2.0) support

Non metto il supporto HID non possedendo nessuna periferica che lo richiede. Inoltre la mia connessione è tramite scheda di rete, quindi non seleziono nessuna voce relativa a periferiche di networking USB.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │<M> Support for Host-side USB                                        │ │
 │ │[ ]   USB verbose debug messages                                     │ │
 │ │---   Miscellaneous USB options                                      │ │
 │ │[*]   USB device filesystem                                          │ │
 │ │[*]   Enforce USB bandwidth allocation (EXPERIMENTAL)                │ │
 │ │[ ]   Dynamic USB minor allocation (EXPERIMENTAL)                    │ │
 │ │[ ]   USB suspend/resume (EXPERIMENTAL)                              │ │
 │ │---   USB Host Controller Drivers                                    │ │
 │ │< >   EHCI HCD (USB 2.0) support                                     │ │
 │ │< >   ISP116X HCD support                                            │ │
 │ │< >   OHCI HCD support                                               │ │
 │ │<M>   UHCI HCD (most Intel and VIA) support                          │ │
 │ │< >   SL811HS HCD support                                            │ │
 │ │---   USB Device Class drivers                                       │ │
 │ │< >   USB Audio support                                              │ │
 │ │< >   USB Bluetooth TTY support                                      │ │
 │ │< >   USB MIDI support                                               │ │
 │ │< >   USB Modem (CDC ACM) support                                    │ │
 │ │<M>   USB Printer support                                            │ │
 │ │---   NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support' may als│ │
 │ │<M>   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/ZiO! CompactFlash/SmartMedia support               │ │
 │ │[ ]     USBAT/USBAT02-based storage support (EXPERIMENTAL)           │ │
 │ │[ ]     SanDisk SDDR-09 (and other SmartMedia) support (EXPERIMENTAL)│ │
 │ │[ ]     SanDisk SDDR-55 SmartMedia support (EXPERIMENTAL)            │ │
 │ │[ ]     Lexar Jumpshot Compact Flash Reader (EXPERIMENTAL)           │ │
 │ │---   USB Input Devices                                              │ │
 │ │< >   USB Human Interface Device (full HID) support                  │ │
 │ │        USB HID Boot Protocol drivers  --->          (nessuno)       │ │
 │ │< >   Aiptek 6000U/8000U tablet support                              │ │
 │ │< >   Wacom Intuos/Graphire tablet support                           │ │
 │ │< >   Acecad Flair tablet support                                    │ │
 │ │< >   KB Gear JamStudio tablet support                               │ │
 │ │< >   Griffin PowerMate and Contour Jog support                      │ │
 │ │< >   MicroTouch USB Touchscreen Driver                              │ │
 │ │< >   ITM Touch USB Touchscreen Driver                               │ │
 │ │< >   eGalax TouchKit USB Touchscreen Driver                         │ │
 │ │< >   X-Box gamepad support                                          │ │
 │ │< >   ATI / X10 USB RF remote control                                │ │
 │ │< >   Keyspan DMR USB remote control (EXPERIMENTAL)                  │ │
 │ │---   USB Imaging devices                                            │ │
 │ │< >   USB Mustek MDC800 Digital Camera support (EXPERIMENTAL)        │ │
 │ │< >   Microtek X6USB scanner support                                 │ │
 │ │---   USB Multimedia devices                                         │ │
 │ │< >   DABUSB driver                                                  │ │
 │ │---   Video4Linux support is needed for USB Multimedia device support│ │
 │ │      USB Network Adapters  --->                     (nessuno)       │ │
 │ │[ ]   USB Monitor                                                    │ │
 │ │---   USB port drivers                                               │ │
 │ │      USB Serial Converter support  --->             (nessuno)       │ │
 │ │---   USB Miscellaneous drivers                                      │ │
 │ │< >   EMI 6|2m USB Audio interface support                           │ │
 │ │< >   EMI 2|6 USB Audio interface support                            │ │
 │ │< >   USB Auerswald ISDN support (EXPERIMENTAL)                      │ │
 │ │< >   USB Diamond Rio500 support (EXPERIMENTAL)                      │ │
 │ │< >   USB Lego Infrared Tower support (EXPERIMENTAL)                 │ │
 │ │< >   USB LCD driver support                                         │ │
 │ │< >   USB LED driver support                                         │ │
 │ │< >   Cypress USB thermometer driver support                         │ │
 │ │< >   USB PhidgetKit support                                         │ │
 │ │< >   USB PhidgetServo support                                       │ │
 │ │< >   Siemens ID USB Mouse Fingerprint sensor support                │ │
 │ │< >   USB LD driver                                                  │ │
 │ │< >   USB testing driver (DEVELOPMENT)                               │ │
 │ │      USB DSL modem support  --->                        (nessuno)   │ │
 │ │    USB Gadget Support  --->                             (nessuno)   │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

File systems --->

Qui sceglieremo i filesystem che il nostro sistema dovrà supportare. Notare la presenza del nuovo inotify, usato ad esempio da beagle.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │    <*> Second extended fs support                                   │ │
 │ │    [ ]   Ext2 extended attributes                                   │ │
 │ │    [ ]   Ext2 execute in place support                              │ │
 │ │    <*> 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                                 │ │
 │ │    [ ]   ReiserFS extended attributes                               │ │
 │ │    < > JFS filesystem support                                       │ │
 │ │        XFS support  --->                                            │ │
 │ │    < > Minix fs support                                             │ │
 │ │    < > ROM file system support                                      │ │
 │ │    [*] Inotify file change notification support                     │ │
 │ │    [ ] Quota support                                                │ │
 │ │    < > Kernel automounter support                                   │ │
 │ │    <M> Kernel automounter version 4 support (also supports v3)      │ │
 │ │        CD-ROM/DVD Filesystems  --->                                 │ │
 │ │        DOS/FAT/NT Filesystems  --->                                 │ │
 │ │        Pseudo filesystems  --->                                     │ │
 │ │        Miscellaneous filesystems  --->   (niente)                   │ │
 │ │        Network File Systems  --->                                   │ │
 │ │        Partition Types  --->             (niente)                   │ │
 │ │        Native Language Support  --->                                │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Ecco ora le sottovoci non vuote:

CD-ROM/DVD Filesystems --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │             <M> ISO 9660 CDROM file system support                  │ │
 │ │             [*]   Microsoft Joliet CDROM extensions                 │ │
 │ │             [*]   Transparent decompression extension               │ │
 │ │             < > UDF file system support                             │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

DOS/FAT/NT Filesystems --->

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │               <M> MSDOS fs support                                  │ │
 │ │               <M> VFAT (Windows-95) fs support                      │ │
 │ │               (850) Default codepage for FAT                        │ │
 │ │               (iso8859-1) Default iocharset for FAT                 │ │
 │ │               <M> NTFS file system support                          │ │
 │ │               [*]   NTFS debugging support                          │ │
 │ │               [*]   NTFS write support                              │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Pseudo filesystems --->

Molto importante questa sezione. Il server audio a bassa latenza jack necessita della voce

* Virtual memory file system support

per poter funzionare correttamente.


 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │      [*] /proc file system support                                  │ │
 │ │      [*]   /proc/kcore support                                      │ │
 │ │      [ ] /dev/pts Extended Attributes                               │ │
 │ │      [*] Virtual memory file system support (former shm fs)         │ │
 │ │      [ ]   tmpfs Extended Attributes                                │ │
 │ │      [ ] HugeTLB file system support                                │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Network File Systems --->

Attivo il supporto per il NFS (Network File System), bastano le voci:

 <M> NFS file system support
 <M> NFS server support 

Native Language Support --->

Non sono sicuro che questa sia la configurazione ottimale, la riporto solo per completezza. Sono elencate le sole voci selezionate:

 │ ┌──────────────────────────────────────────────────────────────────────────┐ │
 │ │ <*> Base native language support                                         │ │
 │ │ (UTF8) Default NLS Option                                                │ │
 │ │ <M>   Codepage 850 (Europe)                                              │ │
 │ │ <M>   Codepage 852 (Central/Eastern Europe)                              │ │
 │ │ <M>   NLS ISO 8859-1  (Latin 1; Western European Languages)              │ │
 │ │ <M>   NLS ISO 8859-2  (Latin 2; Slavic/Central European Languages)       │ │
 │ │ <M>   NLS ISO 8859-15 (Latin 9; Western European Languages with Euro)    │ │
 │ │ <M>   NLS UTF8                                                           │ │
 │ └──────────────────────────────────────────────────────────────────────────┘ │

Profiling support --->

Niente, non siamo sviluppatori del kernel (almeno io :-P).

Kernel hacking --->

Con queste opzioni si attivano i tasti magici che permettono di uscire da configurazione di stallo del sistema. Molto utile se si provano molti sofware audio (e non solo) sperimentali che rischiano di destabilizzare il sistema. Per maggiori informazioni vedere la documentazione del kernel.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │      [ ] Show timing information on printks                         │ │
 │ │      [*] Kernel debugging                                           │ │
 │ │      [*]   Magic SysRq key                                          │ │
 │ │      (14)  Kernel log buffer size (16 => 64KB, 17 => 128KB)         │ │
 │ │      [ ]   Collect scheduler statistics                             │ │
 │ │      [ ]   Debug memory allocations                                 │ │
 │ │      [ ]   Debug preemptible kernel                                 │ │
 │ │      [ ]   Spinlock debugging                                       │ │
 │ │      [ ]   Sleep-inside-spinlock checking                           │ │
 │ │      [ ]   kobject debugging                                        │ │
 │ │      [ ]   Compile the kernel with debug info                       │ │
 │ │      [ ]   Debug Filesystem                                         │ │
 │ │      [ ]   Compile the kernel with frame pointers                   │ │
 │ │      [*]   Check for stack overflows                                │ │
 │ │      [ ]   Kprobes                                                  │ │
 │ │      [ ]   Stack utilization instrumentation                        │ │
 │ │      [ ]   Page alloc debugging                                     │ │
 │ │      [ ]   Use 4Kb for kernel stacks instead of 8Kb                 │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Security options --->

Queste voci sono necessarie per poter compilare successivamente il modulo realtime-lsm che permette di eseguire applicazioni in realtime anche ad utenti non-root.

 │ ┌─────────────────────────────────────────────────────────────────────┐ │
 │ │          [ ] Enable access key retention support                    │ │
 │ │          [*] Enable different security models                       │ │
 │ │          [ ]   Socket and Networking Security Hooks                 │ │
 │ │          <M>   Default Linux Capabilities                           │ │
 │ │          < >   Root Plug Support                                    │ │
 │ │          < >   BSD Secure Levels                                    │ │
 │ │          [*]   NSA SELinux Support                                  │ │
 │ │          [ ]     NSA SELinux boot parameter                         │ │
 │ │          [ ]     NSA SELinux runtime disable                        │ │
 │ │          [*]     NSA SELinux Development Support                    │ │
 │ │          [ ]     NSA SELinux AVC Statistics                         │ │
 │ │          (1)     NSA SELinux checkreqprot default value             │ │
 │ └─────────────────────────────────────────────────────────────────────┘ │

Cryptographic options --->

Normalmente vengono attivate queste opzioni nelle reti wireless o comunque nelle configurazioni in cui i dati vengono criptati (vpn, etc.)

Un esempio potrebbe essere quello della configurazione di rete wireless (mi viene in mente wpasupplicant) in cui si imposta la connessione criptata.

Library routines --->

Neanche qui niente, qualcuno sa se va bene?




Guida scritta da: TheNoise Swirl-auth20.png Debianized 20%
Estesa da:
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized