A questo punto diamo inizio all'articolo vero e proprio e addentriamoci nel primo obiettivo del topic 101: determinare e configurare i parametri dell'hardware.
Una delle prime cose da conoscere è la gestione del BIOS dei sistemi hardware. Il BIOS è quel firmware che permette il processo di boot del sistema operativo ed è contenuto in una EEPROM (Electronically erasable programmable read-only memory) o memoria flash. Quando avviate il pc il BIOS si occupa di avviare il POST (Power-on self-test), inizializza l'hardware, e carica il boot loader dal dispositivo di boot (normalmente un hard disk). A questo punto il controllo passa al boot loader che carica il sistema operativo.
Ovviamente non è possibile in poco tempo spiegare tutte le opzioni contenute nel BIOS, ma quelle principali è sicuramente necessario conoscerle. In particolare per accedere al BIOS bisogna premere il tasto CANC o F2 o F1 o altri tasti indicati all'accensione del sistema durante la visualizzazione della prima schermata. Naturalmente per approffondire ulteriori informazioni sul BIOS leggete bene il manuale della vostra motherboard. Per altre informazioni nel sito troverete alcuni articoli (un pò datati ma pur sempre validi) sull'utilizzo del BIOS e dei parametri di configurazione.
Adesso, vediamo quali sono i files che normalmente in un sistema GNU/Linux visualizzano una serie di informazioni importanti sui dispositivi hardware. Il sistema GNU/Linux mette a disposizione degli utenti una serie di strumenti che permettono di raccogliere numerose informazioni sia sui dispositivi (device) e sia sulle periferiche (peripheral). Per prima cosa, bisogna aprire una finestra terminale o shell, e da utente root accedere alla directory /proc.
Però, prima di visualizzare il contenuto dei files di interrupts, dma e ioports che sono i files che ci interessano principalmente dobbiamo introdurre i concetti di interrupt request, I/O ports e DMA.
Un interrupt request (IRQ) è un segnale di interruzione inviato alla CPU, la quale sospende l'esecuzione delle istruzioni correnti e processa un evento esterno generato da un modulo I/O, per esempio una tastiera. I segnali di interrupts nelle architetture x86 sono numerati da 0 a 15, mentre nei pc più moderni e architetture x86-64 sono in un numero maggiore. Alcuni segnali sono riservati per compiti specifici come per esempio l'IRQ 1 della tastiera o l'IRQ 8 del "Real-time" clock, mentre altri possono essere condivisi.
Ecco un esempio di utilizzo degli IRQ in un classico sistema x86 nella tabella seguente.
IRQ |
Utilizzo |
Descrizione |
0 |
System timer |
Riservato per uso interno |
1 |
Tastiera |
Riservato solamente per la tastiera |
2 |
Cascade per IRQs 8-15 |
|
3 |
COM2 |
Può essere condiviso solo con la porta seriale COM1 |
4 |
COM1 |
Può essere condiviso solo con la porta seriale COM2 |
5 |
Scheda Audio o LPT2 (seconda porta parallela) |
|
6 |
Controllore del disco floppy |
Riservato per il controller del disco floppy |
7 |
Prima porta parallela o LPT1 |
|
8 |
Real-time cloclk |
Riservata |
9 |
|
Può essere condivisa |
10 |
|
Può essere condivisa |
11 |
|
Può essere condivisa |
12 |
PS/2 Mouse |
|
13 |
Coprocessore Matematico |
Riservato per uso interno |
14 |
Controller ATA primario |
/dev/hda /dev/hdb |
15 |
Controller ATA secondario |
/dev/hdc e /dev/hdd |
Con il comando cat interrupts eseguito da riga di comando si ottiene il risultato visualizzato nell'immagine seguente.
Dalla lettura del file si legge che l'interrupts 0 è utilizzato per il system time, l'interrupts 1 per la tastiera, l'interrupts 8 è utilizzato per il real time clock, l'interrupts 6 è usato per il floppy, l'interrupts 193 per l'Intel 82801AA-ICH, e l'interrupts 9 per la gestione acpi. Gli interrupts 177,185 per le porte usb, e per il controller ethernet è dedicato l'interrupts 177. Gli interrupts 14 e 15 sono utilizzati per le interfacce IDE.