Come premesso, ecco la seconda parte dei messaggi di boot:
[1] INIT: version 2.78 booting
[2] Loading /etc/console-tools/default.kmap.gz
[3] Activating swap...
[4] Adding Swap: 128516k swap-space (priority -1)
Checking root file system...
[5] Parallelizing fsck version 1.18 (11-Nov-1999)
[6] /dev/hda3: clean, 50560/343392 files, 297090/664689 blocks
[7] Calculating module dependencies... done.
[8] Loading modules:
[9] Checking all file systems...
[10] Parallelizing fsck version 1.18 (11-Nov-1999)
Setting kernel variables.
Loading the saved-state of the serial devices...
/dev/ttyS0 at 0x03f8 (irq = 4) is a 16550A
/dev/ttyS1 at 0x02f8 (irq = 3) is a 16550A
[11] Mounting local filesystems...
[12] /dev/hda5 on /share type vfat (rw,noexec,nosuid,nodev)
Running dns-clean.
[13] Configuring network interfaces: done.
[14] Starting portmap daemon: portmap.
[15] Setting the System Clock using the Hardware Clock as reference...
[16] System Clock set. Local time: Wed May 2 01:27:20 CEST 2001
[17] Cleaning: /tmp /var/lock /var/run.
Initializing random number generator... done.
[18] INIT: Entering runlevel: 2
Starting system log daemon: syslogd klogd.
Starting anac(h)ronistic cron: anacron.
Starting advanced power management daemon: apmd.
Starting mouse interface server: gpm.
Starting internet superserver: inetd.
Starting PostgreSQL postmaster
Starting X font server: xfs.
Starting professional ftp daemon: proftpd.
Starting periodic command scheduler: cron.
Starting web server: apache.
/usr/sbin/apachectl start: httpd started
Debian GNU/Linux 2.2 khufu.net tty1
khufu.net login:
Ed eccoci ancora a commentare cosa accade al momento del boot.
Alla riga [1] vediamo che qualcosa chiamato INIT viene avviato; ma cos'è questo init?? Esso viene definito come "inizializzatore del controllore dei processi", ossia il padre di tutti i processi: immaginate che il sistema sia un albero, e che init ne sia il tronco: senza di esso, nessuno ramo (processo) potrebbe essere avviato. Vedremo nella prossima pagina una descrizione più dettagliata di init.
Alla riga [2] viene caricato un file di cui, a prima vista, si sa poco: esso è la mappa di default dei caratteri della tastiera, che fa in modo che quando premiamo il tasto "a" a video appaia una "a" e non qualsiasi altro carattere ma, più che altro, permette di scegliere la mappatura della tastiera così che corrisponda effettivamente alle diciture riportate sui tasti (ad esempio, con le tastiere americane la chiocciola non si ottiene con Alt+ò, ma con Shift+2).
Alle linee [3] e [4] torna lo spazio di swap: qui ne vediamo la grandezza e la priorità assegnatagli. Subito dopo viene attivata (o, tecnicamente, montata) la root partition, che risiede fisicamente nella terza partizione del disco (/dev/hda3).
Alla linea [5] si nota anche un nome, fsck, acronimo per "file system check: questo programma, simile al chkdsk di DOS, controlla lo stato dei dischi ma ha una fondamentale differenza di implementazione: se sotto DOS questo viene lanciato solamente quando il sistema viene chiuso in maniera non-pulita (crash, ad esempio!!), sotto linux viene lanciato ad ogni boot, con determinate conseguenze:
- se il computer è stato spento in maniera corretta, il filesystem viene marcato come "clean" e non viene controllato;
- se il computer è stato spento in maniera non corretta, il filesystem viene controllato;
- la terza cosa che può accadere è insolita per gli utenti windows: dopo un numero di boot (determinato dal programma tune2fs con l'opzione -c) il filesystem viene ancora controllato, sebbene fosse marcato come clean. Questo per garantire che il filesystem non sia mai danneggiato. È per questo che a volte si nota che il programma fsck viene avviato senza un'apparente motivo: non spaventatevi quindi se, dopo un determinato numero di avvii, il boot si arresta ed il disco gira all'impazzata: "stiamo lavorando per voi", recitava un famoso cartello!
Alle linee [7] e [8] vengono rilevate le dipendenze dei moduli (parti del kernel che possono essere caricate a richiesta) che vengono successivamente caricati: vedremo quando parleremo di moduli cosa questo significhi.
Notate ora le linee dalla [9] alla [12]: dopo la partizione principale, vengono montate anche le altre partizioni: nel mio caso, viene montata /dev/hda5 in /share; tale partizione è formattata vfat e, fra le altre opzioni, viene montata in read & write (rw).
A questo punto le operazioni sui dischi sono compiute, ed il sistema può iniziare a configurare le interfacce di rete (linea [13]): questo significa, di massima, che viene configurata l'interfaccia di loopback (una sorta di rete virtuale locale, dove il traffico in entrata ed in uscita è tutto relativo al computer in uso) e la scheda ethernet, a cui viene assegnato un indirizzo IP altrove specificato.
Alla linea [14] viene avviato un servizio molto importante: portmap, qualcosa di simile adun "guardiano delle porte" presenti nel nostro sistema e, subito sotto ([15] e [16]) viene aggiornato l'orologio di sistema.
Ma la parte interessante arriva a questo punto: dopo aver ripulito le directory temporanee [17] da eventuali file rimasti, il nostro INIT passa al runlevel 2: cosa sia il runlevel lo vedremo nella prossima pagina, assieme al significato del "2" ma per ora diciamo che il sistema diventa operativo: ma manca ancora qualcosa per poter iniziare a colloquiarci. Devono infatti essere avviati i servizi principali del sistema che, come vedete, sono elencati uno sotto l'altro: leggiamo quindi che vengono attivati i demoni (vedete questi "demoni" come un servizio. Niente di malefico, mi raccomando!) che si occupa di loggare i messaggi (se ricordate, tutti i log sono solitamente in /var/log), il demone che controlla l'apm, il server di database PostgreSQL, un server FTP (proftpd) e HTTPD (Apache). Nel caso, per qualsiasi arcano motivo, uno dei servizi non possa essere avviato, ne avrete notifica proprio a questo punto: invece del nome del servizio, vedrete un messaggio d'errore e potrete (ok, non adesso ma in seguito!) riparare e far ripartire manualmente il demone.
A questo punto il sistema ci si "presenta" (Debian GNU/Linux 2.2 khufu.net tty1) con qualche informazione (ognuna delle quali può essere modificata, tolta oppure se ne possono aggiungere altre!) e, in maniera trasparente, viene avviato un programma di nome getty: sarà questo che, in accoppiata con il programma login, ci aprirà la porta verso il colloquio con il sistema, chiedendoci un nome utente ed una password con i quali sarà in grado di riconoscerci e darci accesso alla macchina.
Questo è (quasi!) tutto quello che riguarda il boot del sistema: ricordiamo comunque che la maggior parte di tali messaggi saranno differenti da macchina a macchina e che potrete leggerli premendo il tasto BlocScorr durante il boot oppure, a login avvenuto, tramite il comando:
dmesg | more
che vi mostrerà comunque solamente la parte dei messaggi relativi al kernel, ossia tutti quelli che abbiamo visto nella pagina precedente.
Nelle prossime pagine vedremo più da vicino tutto quello che riguarda i runlevel e i demoni.