Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial

Il Bootstrap: parte prima

L'avvio del sistema: esaminiamo quali operazioni compie Linux una volta avviato
L'avvio del sistema: esaminiamo quali operazioni compie Linux una volta avviato
Link copiato negli appunti

Molto probabilmente, alcuni avranno già a questo punto tentato di avviare per la prima volta il loro nuovo sistema linux: la prima sorpresa è il processo di bootstrap (chiamato in seguito semplicemente boot).

A differenza di sistemi come Windows, dove tutto avviene in maniera celata agli occhi dell'utente, linux ed in generale gli unix tutti non fanno segreto di cosa avviene al momento dell'avvio: se windows ci ha abituati alla schermata colorata dove, per pochi attimi, si poteva vedere qualche riga dell'autoexec.bat, con linux sarete letteralmente sommersi dai messaggi che il sistema ci propone (sebbene sia presente una "simpatica" patch del kernel che permette di visualizzare una schermata in stile Windows all'avvio, con tanto di progress-bar e immagine a scelta, fra cui pure Matrix! Se vi interessa, provate a cercare lpp, acronimo di "linux progress patch" su freshmeat.net o siti simili). Sebbene ai più tali messaggi possano sembrare inutili, spesso sono invece utilissimi per capire cosa sta facendo il sistema, quali periferiche ha individuato (e, ahinoi, quali no!), quali servizi ha avviato e simili.

Un esempio, preso dal mio portatile, potrebbe essere qualcosa del genere:

[1] Linux version 2.2.18 (root@khufu) (gcc version 2.95.2 20000220 (Debian GNU/Linux)) #11 Sun Mar 4 19:54:27 CET 2001
Detected 497435 kHz processor.
[2] Console: colour VGA+ 80x25
Calibrating delay loop... 992.87 BogoMIPS
[3] Memory: 63120k/65472k available (1040k kernel code, 416k reserved, 852k data, 44k init)
Dentry hash table entries: 8192 (order 4, 64k)
Buffer cache hash table entries: 65536 (order 6, 256k)
Page cache hash table entries: 16384 (order 4, 64k)
[4] CPU serial number disabled.
[5] Intel machine check architecture supported.
[6] Intel machine check reporting enabled on CPU#0.
[7] 256K L2 cache (8 way)
[8] CPU: L2 Cache: 256K
[9] CPU: Intel Pentium III (Coppermine) stepping 03
[10] Checking 386/387 coupling... OK, FPU using exception 16 error reporting.
[11] Checking 'hlt' instruction... OK.
POSIX conformance testing by UNIFIX
mtrr: v1.35a (19990819) Richard Gooch (rgooch@atnf.csiro.au)
[12] PCI: PCI BIOS revision 2.10 entry at 0xf0200
[13] PCI: Using configuration type 1
[14] PCI: Probing PCI hardware
[15] Linux NET4.0 for Linux 2.2
[16] Based upon Swansea University Computer Society NET3.039
[17] NET4: Unix domain sockets 1.0 for Linux NET4.0.
[18] NET4: Linux TCP/IP 1.0 for NET4.0
[19] IP Protocols: ICMP, UDP, TCP
[20] TCP: Hash tables configured (ehash 65536 bhash 65536)
Initializing RT netlink socket
Starting kswapd v 1.5
[21] Detected PS/2 Mouse Port.
Serial driver version 4.27 with no serial options enabled
[22] ttyS00 at 0x03f8 (irq = 4) is a 16550A
[23] ttyS01 at 0x02f8 (irq = 3) is a 16550A
Real Time Clock Driver v1.09
[24] ALI: version v0.1 time 19:55:36 Mar 4 2001
[25] ALI15X3: IDE controller on PCI bus 00 dev 80
[26] ALI15X3: not 100% native mode: will probe irqs later
[27] ide0: BM-DMA at 0x6050-0x6057, BIOS settings: hda:DMA, hdb:pio
[28] ide1: BM-DMA at 0x6058-0x605f, BIOS settings: hdc:DMA, hdd:pio
[29] hda: IBM-DJSA-210, ATA DISK drive
[30] hdc: CRN-8241B, ATAPI CDROM drive
ide0 at 0x1f0-0x1f7,0x3f6 on irq 14
ide1 at 0x170-0x177,0x376 on irq 15
[31] hda: IBM-DJSA-210, 5729MB w/384kB Cache, CHS=730/255/63
[32] hdc: ATAPI 24X CD-ROM drive, 128kB Cache
Uniform CD-ROM driver Revision: 3.11
[33] Floppy drive(s): fd0 is 1.44M
FDC 0 is a post-1991 82077
[34] PPP: version 2.3.7 (demand dialling)
[35] TCP compression code copyright 1989 Regents of the University of California
[36] PPP line discipline registered.
[37] PPP BSD Compression module registered
[38] PPP Deflate Compression module registered
[39] eepro100.c:v1.09j-t 9/29/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
[40] eepro100.c: $Revision: 1.20.2.10 $ 2000/05/31 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
[41] eepro100.c: VA Linux custom, Dragan Stancevic <visitor@valinux.com> 2000/11/15
[42] eth0: OEM i82557/i82558 10/100 Ethernet, 00:00:E2:39:61:8A, IRQ 10.
[43] Board assembly 620014-144, Physical connectors present: RJ45
[44] Primary interface chip i82555 PHY #1.
[45] General self-test: passed.
[46] Serial sub-system self-test: passed.
[47] Internal registers self-test: passed.
[48] ROM checksum self-test: passed (0x04f4518b).
[49] Receiver lock-up workaround activated.
[50] eepro100.c:v1.09j-t 9/29/99 Donald Becker http://cesdis.gsfc.nasa.gov/linux/drivers/eepro100.html
[51] eepro100.c: $Revision: 1.20.2.10 $ 2000/05/31 Modified by Andrey V. Savochkin <saw@saw.sw.com.sg> and others
[52] eepro100.c: VA Linux custom, Dragan Stancevic <visitor@valinux.com> 2000/11/15
[53] Partition check:
[54] hda: hda1 hda2 hda3 hda4 < hda5 >
[55] apm: BIOS version 1.2 Flags 0x0f (Driver version 1.13)
VFS: Mounted root (ext2 filesystem) readonly.
[56] Freeing unused kernel memory: 44k freed
[57] Adding Swap: 128516k swap-space (priority -1)

Spaventati? :-)

Niente paura, faremo luce sui punti più importanti con una breve analisi delle voci più importanti (ed è per questo che alcune linee sono state numerate, cosa che ovviamente non avviene durante un normale boot!).

La riga [1] è una delle più importanti, poiché ci dice la versione del kernel che stiamo utilizzando (2.2.18), la versione del compilatore (gcc, il nome del compilatore, versione 2.95.2) e la data di compilazione del kernel.

La riga [2] invece ci dice che stiamo lavorando in una console VGA di 25 righe e 80 colonne, ma le cose più interessanti vengono in seguito!

Intanto, alla riga [3] ci viene presentato lo stato della memoria, quanta ne abbiamo installata (65472k) e quanta disponibile (63120k), con tanto di dicitura di "chi usa la memoria e quanta ne usa"; tenete presente quel "44k", lo vedremo anche in seguito!

Le righe dalla [4] alla [11] ci svelano le caratteristiche del processore in uso: un Pentium III Coppermine con 256k di cache L2. Vengono poi rilevati i bus PCI (da [12] a [14]) ed i supporti/protocolli di rete (da [15] a [20]).

Alla riga [21] viene prontamente rilevato il mouse PS2, che in realtà è un touchpad, cosa che comunque per il kernel non fa alcuna differenza!

Alle linee [22] e [23] vengono rilevate le due porte seriali, che con Windows chiamavamo COM1 e COM2 ma che Linux identifica come ttyS0 e ttyS1, con tanto di IO e IRQ! Subito di seguito, vengono rilevati i controller IDE ([24] - [28]) e per ognuno ci vengono date informazioni aggiuntive: ad esempio, hda è un disco fisso IDE targato IBM [29] di 5729MB e con cache di 384kB [31].

Alla riga [33], come noterete, viene rilevato il floppy da 1.44! Subito dopo ([34] - [38]) viene rilevato il supporto Point-to-Point Protocol (PPP), comunemente utilizzato per le connessioni ad internet.

Sempre in ambito di networking, viene rilevata la scheda di rete ([39] - [52]), una Eternet Express Pro100 di Intel che, come vedete, viene "spremuta" per benino: fra le altre cose, vediamo che è una cheda 10/100, con indirizzo MAC 00:00:E2:39:61:8A, che usa l'IRQ 10, che è dotata di un connettore RJ45, ecc.

Alle linee [53] e [54] vengono lette e rilevate le partizioni: ne esistono 5, delle quali le prime tre sono primarie e la 4 logica che "contiene" la quinta!

Viene poi visto l'APM [55] e finalmente vengono liberati i 44k di memoria utilizzati per il boot: adesso potremo utilizzare anche questi [56]. Per finire, alla riga [57] viene attivato lo spazio di swap: in caso di necessità, il sistema potrà andarci a scrivere!

Ma non è ancora tutto: probabilmente questa parte di messaggi (leggibile con il comando "dmesg | more") è la più criptica e tecnica, ma è a breve seguita da altri utili messaggi del sistema più "fruibili" e, forse, interessanti.

Per non appesantire la lettura, abbiamo deciso di riportarli nell'articolo seguente.

Ti consigliamo anche