% Linux Guida dell'Utente                   -*- TeX -*-
  % starting.tex
  % Copyright (c) 1993, 1994 by Larry Greenfield
  %
  % Traduzione di Eugenia Franzoni, 1997
  %
  % Questo file e' liberamente distribuibile, ma si deve preservare questo
  % avviso di copyright su tutte le copie, e deve essere distribuito solo come
  % parte di "Linux Guida dell'Utente". L'uso di questo file e'
  % protetto dal copyright dell'intero documento, nel file "copyright.tex".
  
  % Titolo del capitolo
  \chapter{Iniziare}
  \label{bootup}
  
  % Frasetta estratta dal programma fortune e non tradotta...
  % \begin{quote}
  % This login session: \$13.99, but for you \$11.88.
  % \end{quote}
  
  
  \section{Iniziare ad usare il proprio computer}
  
  Qualcuno potrebbe avere esperienze precedenti con
  l'MS-DOS\index{MS-DOS} o con altri
  sistemi operativi per utenti singoli, come OS/2\index{OS/2} o
  Macintosh.\index{Macintosh} In questi sistemi operativi non c'era
  bisogno
  di identificarsi al computer prima di usarlo; si presumeva di
  essere i soli utenti del sistema e quindi di poter accedere a tutte le
  risorse. Bene,
  UNIX \`e un sistema operativo multi-utente---non solo pu\`o essere
  usato da pi\`u
  di una persona alla volta, ma diverse persone possono essere trattate in
  modo diverso.
  
  Per distinguere i vari utenti, UNIX ha bisogno di
  identificarli tramite un processo chiamato {\bf login}.\index{login}
  Quando si accende il computer avviene un processo abbastanza
  complesso, prima che il computer sia pronto per essere usato.
  Siccome
  questa guida \`e orientata a \linux, spiegher\`o cosa succede
  durante la sequenza di avvio di Linux (boot-up).\glossary{boot-up}
  
  Se state usando Linux su un tipo di computer che non
  sia un 
  PC Intel, alcune parti di questo capitolo non sono applicabili: la
  maggior
  parte dovrebbero trovarsi nella sezione~\ref{intel-powerup}
  
  
  \subsection{Accendere il Computer}
  \label{intel-powerup}
  
  La prima cosa che succede quando si accende un PC Intel\index{Intel} \`e
  l'esecuzione del BIOS.\index{BIOS}\glossary{BIOS} BIOS sta per {\bf B}asic
  {\bf I}nput/{\bf O}utput {\bf S}ystem: normalmente \`e un programma
  memorizzato permanentemente nel computer su chip a sola lettura, che 
  esegue alcuni test
  di base e poi cerca un floppy nella prima unit\`a disco. Se ne trova
  uno cerca
  un ``boot sector'' (settore di avvio) su quel disco e inizia ad
  eseguirne il
  codice, se c'\`e. Se c'\`e un disco, ma senza settore di avvio, il BIOS
  scriver\`a un messaggio del genere:
  
  \begin{screen}\begin{verbatim}
  Non-system disk or disk error
  \end{verbatim}\end{screen}
  
  (Disco non di sistema o errore di disco) Togliendo il disco e premendo un
  tasto si far\`a continuare il processo di avvio.
  
  Se non c'\`e un floppy nel drive, il BIOS cerca un master boot
  record\glossary{master boot record} (MBR) nel disco fisso. Inizier\`a
  l'esecuzione del codice trovato l\`{\i}, che carica il sistema operativo.
  Su un sistema \linux, LILO\index{LILO}, il {\bf LI}nux {\bf LO}ader, pu\`o
  occupare il MBR e caricare \linux. Per adesso assumiamo che succeda
  questo,
  e che Linux inizi a caricarsi. (La vostra distribuzione potrebbe
  avere
  dei meccanismi di avvio dal disco fisso diversi. Controllate la
  documentazione inclusa nella
  distribuzione. Un altro buon riferimento \`e la documentazione di
  LILO,~\cite{Al:LILO}.)
  
  
  \subsection{Linux parte}
  \label{linux-powerup}
  
  Dopo che il BIOS ha passato il controllo a LILO, LILO passa il
  controllo al kernel di
  \linux. 
  Il kernel \`e il programma principale del sistema operativo, che
  controlla tutti gli altri programmi.
  La prima cosa che Linux fa quando parte, \`e commutare il sistema in
  modalit\`a
  protetta.\glossary{modalit\`a protetta} Il processore 80386,\footnote{Quando
  mi riferisco all'80386, parlo anche dell'80486, dei Pentium e dei
  Pentium Pro, a meno che non specifichi il contrario. Il nome sar\`a in
  seguito
  abbreviato in 386.} che controlla il computer, ha due modalit\`a, 
  chiamate reale\glossary{modalit\`a reale} e
  protetta.\glossary{modalit\`a protetta} Il DOS funziona in modalit\`a reale,
  come il BIOS, ma alcuni sistemi operativi avanzati devono
  girare in modalit\`a protetta. Per questo, quando Linux
  parte, viene abbandonato il BIOS.
  
  Altri tipi di processore compiranno questo stadio in maniera diversa:
  nessun altro processore ha bisogno di cambiare modalit\`a, e pochi
  devono avere una costruzione sulla procedura di avvio pesante come
  LILO e il BIOS\@. Una volta che il kernel \`e partito, Linux funziona
  nello stesso modo. 
   
  \begin{figure}[tb]\label{bootup-figure}
  \centering
  \epsfig{file=ps-files/bootup-figure.ps, width=.9\linewidth}
  \caption{Il percorso che un PC Intel fa per arrivare al prompt di
  shell. {\tt
      init} pu\`o avviare o no il Sistema X Window; se lo fa viene avviato 
  {\tt xdm}, altrimenti viene avviato {\tt getty}.}
  \end{figure}
  
  Linux  controlla poi il tipo di hardware su cui sta girando:
  vuole sapere
  che tipo di disco fisso \`e presente, se c'\`e un bus mouse, se si lavora in
  rete e altre cose simili. Linux non pu\`o ricordarsi queste cose tra un
  avvio e l'altro, cos\`{\i} le deve valutare ogni volta.
  Fortunatamente non le chiede {\em a voi}---ma
  all'hardware! Durante l'avvio, il kernel di Linux stampa un elenco
  di messaggi, che si possono leggere nella
  Sezione~\ref{kernel-messages}. Questo processo di richiesta di
  informazioni sull'hardware pu\`o causare qualche problema con il
  sistema, ma se lo fa, probabilmente \`e quando si installa Linux per
  la prima volta. Se avete problemi, consultate la documentazione della
  vostra distribuzione.
  
  Il kernel gestisce semplicemente gli altri programmi
  quindi, una volta
  controllato che tutto sia a posto, deve avviarne uno per fare
  qualcosa di utile. Il programma avviato dal kernel si chiama {\tt
  init}\ttindex{init} (notare la differenza dei caratteri: le parti di testo
  evidenziato con {\tt questo tipo di carattere} normalmente sono nomi
  di programmi,
  file, directory o termini informatici). Dopo l'avvio di {\tt init} il kernel
  non avvia pi\`u nessun programma; diventa un gestore di risorse, non un
  programma
  attivo.
  
  Cos\`{\i}, per vedere cosa fa il computer dopo l'avvio del kernel, bisogna
  esaminare {\tt init}. {\tt init} esegue una complicata sequenza di avvio che
  non \`e la stessa per tutti i computer. Per Linux ci sono varie versioni di
  {\tt init}, e ognuna lavora a modo proprio. \`E importante anche se il
  vostro
  computer \`e in rete e quale distribuzione avete usato per installare
  \linux.
  Alcune
  cose che possono succedere quando parte {\tt init} sono:
  
  \begin{itemize}
  \item Controllo dei filesystem\glossary{filesystem}.
  Cos'\`e un filesystem? \`E
  l'organizzazione dei file in un disco fisso. In questo modo UNIX sa quali
  parti del disco sono utilizzate e quali no (\`e come un indice di un
  grosso archivio o lo schedario di una biblioteca). Sfortunatamente
  alcuni fattori,
  come una caduta di tensione, possono fare in modo che 
  quello che le informazioni nel filesystem pensano che stia accadendo
  nel resto del disco e lo stato reale del disco siano in conflitto.
  Un programma speciale, {\tt fsck}, pu\`o scovare queste situazioni e
  correggerle.
  \item Avviamento di speciali programmi di routing\glossary{route} per
  la rete. Questi programmi dicono al computer come fare per contattare
  altri computer.
  \item Rimozione di file temporanei lasciati da alcuni programmi.
  \item Aggiornamento dell'orologio del sistema. \`E pi\`u complicato di
  quanto possa sembrare, dato che \unix, per default, vuole l'ora in
  UCT (Universal Coordinated Time, anche noto come GMT - Greenwich Mean
  Time) e
  l'orologio del CMOS, un orologio interno al computer alimentato a batterie,
  \`e probabilmente impostato all'ora locale. Ci\`o significa che alcuni
  programmi devono leggere l'ora dall'orologio hardware e portarlo in
  UCT.
  \end{itemize}
  
  Dopo che {\tt init} ha finito i suoi compiti all'avvio, 
  comincia
  la sua
  attivit\`a normale. {\tt init} pu\`o essere considerato il
  padre di tutti i processi\index{processi}\glossary{processi} di un sistema
  \unix. Un processo \`e semplicemente un programma in esecuzione; siccome
  ogni programma pu\`o girare pi\`u di una volta, possono esserci due o pi\`u
  processi per ogni programma. 
  
  In \unix, un processo, cio\`e un'istanza di un programma, \`e creato da
  una
  chiamata di sistema\glossary{chiamata di sistema}---un servizio
  fornito dal
  kernel---chiamata {\tt fork}\index{processi!forking}\ttindex{fork}
  (si chiama ``fork'' - ``forchetta''- perch\'e un processo si divide in
  due processi separati).
  {\tt init}\ttindex{init} si divide in un paio di processi, che si
  dividono a loro volta.
  Nel
  vostro
  sistema \linux, {\tt init} esegue parecchie istanze di un programma chiamato
  {\tt getty}. {\tt getty} \`e il programma che permette ad un utente di
  collegarsi, e che alla fine chiama un programma chiamato {\tt
  login}\ttindex{login}.
  
  
  \subsection{Adesso tocca all'utente}
  
  La prima cosa da fare per usare una macchina UNIX \`e identificarsi.
  Questo processo, conosciuto come ``logging in'', o ``login'', 
  \`e il modo in cui UNIX
  riconosce un utente autorizzato ad usare il sistema, e chiede un nome
  di account\index{account} e una password\index{password}. Un nome di account
  \`e normalmente simile al vostro nome; dovreste averne gi\`a ricevuto uno
  dall'amministratore del sistema, o averne creato uno personale se
  l'amministratore siete voi (informazioni su come fare dovrebbero essere
  disponibili in \ldpgs\ o \ldpsa).
  
  Dopo la procedura di avvio dovreste vedere qualcosa simile al
  seguente (la prima linea \`e semplicemente un messaggio di
  benvenuto---pu\`o essere un disclaimer o qualsiasi altra cosa):
  
  \begin{screen}\begin{verbatim}
  Welcome to the mousehouse. Please, have some cheese.
  
  mousehouse login:
  \end{verbatim}\end{screen}
  
  \blackdiamond Comunque \`e possibile che il sistema {\em non\/} si presenti
  cos\`{\i}. Invece di un noioso schermo testuale, potrebbe usare la grafica. In
  qualsiasi caso vi chieder\`a sempre di loggarvi e funzioner\`a pi\`u o
  meno
  nella stessa maniera. Se \`e questo il vostro caso, state usando
  il Sistema X~Window\index{Sistema X Window}, e vi si
  presenter\`a un sistema a finestre. Il capitolo~\ref{x-chapter} discuter\`a
  alcune delle differenze a cui vi troverete di fronte, comunque il login sar\`a
  simile, come le basi della maggior parte di \unix. Se state usando
  X, cercate una X gigante a margine del testo del libro.
  
  Questo \`e l'invito per voi a {\bf loggarvi}\index{login}. In questo manuale
  useremo l'utente fittizio (o reale, dipende dalla vostra macchina) {\tt
  larry}. Dove trovate {\tt larry}, dovreste sostituire il vostro nome di
  account. Il nome di account \`e spesso basato sul nome reale; i pi\`u grossi
  sistemi UNIX seri hanno gli account formati dal cognome, da alcune
  combinazioni tra nome e cognome, o anche da alcuni numeri. Possibili
  account
  per Larry Greenfield potrebbero essere: {\tt larry}, {\tt greenfie}, {\tt
  lgreenfi}, {\tt lg19}.
  
  {\tt mousehouse} \`e il ``nome'' della macchina che sto usando. È
  possibile che quando installate \linux, vi sia richiesto di inventare
  un nome buffo per la vostra
  macchina. Non \`e molto importante, ma user\`o {\tt mousehouse}, o
  raramente {\tt lionsden} quando dovr\`o usare un nome per un secondo
  sistema per chiarezza o per contrapporlo al primo.
  
  Dopo aver inserito {\tt larry} e aver premuto \ret, apparir\`a questo:
  
  \begin{screen}\begin{verbatim}
  mousehouse login: larry
  Password:
  \end{verbatim}\end{screen}
  
  Quello che Linux sta chiedendo \`e la vostra {\bf password}. Quando
  inserite la password, non riuscirete a vedere quello che digitate.
  Fate
  attenzione: \`e possibile cancellare, ma non riuscirete a vedere quello che
  state cambiando. Non digitate troppo lentamente se altra gente sta
  guardando---potrebbero capire la vostra password. Se sbagliate, vi verr\`a
  presentata un'altra possibilit\`a di
  loggarvi.\glossary{password}\index{password}
  
  Se avete inserito correttamente il nome di login e la password, apparir\`a
  un breve messaggio, chiamato il messaggio del giorno ({\tt
  /etc/motd})\ttindex{/etc/motd}; pu\`o dire qualsiasi 
  cosa---lo sceglie l'amministratore del sistema, dopodich\'e 
  appare un {\bf prompt}\index{shell!prompt}. Un prompt \`e solamente un
  messaggio che appare per chiedere il prossimo comando da dare al sistema, e
  dovrebbe essere simile a:
  
  \begin{screen}\begin{verbatim}
  /home/larry$
  \end{verbatim}\end{screen}
  
  \xwarn Se state gi\`a usando X~Window, probabilmente vedrete un prompt simile
  a questo in una ``finestra'' in qualche parte dello schermo (una
  ``finestra'' \`e semplicemente una zona rettangolare dello schermo). Per
  scrivere un comando, spostare il cursore del mouse (probabilmente sar\`a una
  ``x'' o una freccia) dentro la finestra.
  
  
  \section{Spegnere il Computer}
  
  \blackdiamond Non spegnere il computer! Rischiate di perdere dati
  importanti!
  
  Diversamente da molte versioni del DOS, \`e una brutta cosa premere il
  pulsante di alimentazione quando avete finito di usare il computer. È anche
  errato riavviare la macchina (con il tasto di reset) senza aver prima preso
  le opportune precauzioni. \linux, per aumentare l'efficienza, fa la
  cache\glossary{cache} del disco, cio\`e memorizza
  temporaneamente parte dei dati permanenti del computer
  in RAM\footnote{La differenza tra la
  ``RAM'' e un disco fisso \`e come la differenza tra memoria a breve
  termine e menoria a lungo termine. Spegnere il computer \`e come dargli
  una botta in testa---si dimenticher\`a tutto quello che \`e nella memoria
  a breve termine, ma quello che \`e nella memoria a lungo termine verr\`a
  salvato. Il disco \`e migliaia di volte pi\`u lento della RAM\@.}.
  L'idea di come Linux pensa che il disco dovrebbe essere e quello
  che il disco contiene realmente vengono sincronizzati ogni 30
  secondi.
  Per spegnere o riavviare il computer, bisogna passare
  attraverso una procedura che comunichi a Linux di fermare il processo di 
  cache del
  disco.
  
  Quando avete finito con il computer, ma siete ancora loggati (avete inserito
  il nome di utente ({\bf username}) e password), per prima cosa dovete uscire
  (fare logout). Per farlo, inserite il comando {\tt logout}. Tutti i
  comandi vengono inviati battendo il tasto chiamato ``Invio'',
  ``Enter'' oppure
  ``Return''. Finch\'e non premete \ret, non succede niente, e potete
  cancellare quello che avete scritto e ripartire.
  
  \begin{screen}\begin{verbatim}
  /home/larry$ logout
  
  Welcome to the mousehouse. Please, have some cheese.
  
  mousehouse login:
  \end{verbatim}\end{screen}
  
  Adesso pu\`o loggarsi un altro utente.
  
  
  \subsection{Spegnere il Computer}
  
  Se il sistema \`e a utente singolo, potete spegnere il computer
  appena avete finito di usarlo\footnote{Per evitare possibili indebolimenti
  di alcuni componenti hardware, spegnete il computer solamente se avete
  finito di usarlo per quel giorno. Spegnere e riaccendere il computer 
  una volta al giorno \`e probabilmente il miglior compromesso tra il
  consumo di energia ed il consumo delle parti hardware del sistema.};
  per farlo bisogna loggarsi con un
  account speciale chiamato {\tt root}. L'account di {\tt root} \`e l'account
  dell'amministratore del sistema e permette l'accesso a tutti i file. 
  Se state per
  spegnere il computer, chiedete la password all'amministratore (in un
  sistema ad utente singolo, siete {\em voi\/}! Assicuratevi di sapere la
  password di {\tt root}). Loggatevi come {\tt root}:
  
  \begin{screen}\begin{verbatim}
  mousehouse login: root
  Password:
  Linux version 1.3.55 (root@mousehouse) #1 Sun Jan 7 14:56:26 EST 1996
  /# shutdown now
  Why? end of the day
   
  URGENT: message from the sysadmin:
  System going down NOW
   
            ... end of the day ...
   
  Now you can turn off the power...
  \end{verbatim}\end{screen}
  
  Il comando {\tt shutdown now} prepara il sistema per essere resettato o
  spento. Attendete il messaggio di conferma che tutto \`e a posto e poi
  riavviate o spegnete il sistema. (Quando il sistema vi chiede
  ``Why?'', cio\`e ``perch\'e?'', \`e solo per poterlo comunicare agli altri
  utenti. Dato che quando spegnete non c'\`e nessuno collegato, potete
  scrivere quello che volete, o non scrivere niente).
  
  Un rapido suggerimento ai pigri: un'alternativa al logout/login \`e di usare
  il comando {\tt su}. Da utente normale, dal prompt inserire {\tt su} e \ret.
  Il sistema chiede la password di root e poi vi d\`a i privilegi di root.
  Adesso potete eseguire lo shutdown del sistema con il comando {\tt
  shutdown now}.
  
  
  \section{Messaggi del kernel}\label{kernel-messages}
  
  Quando avviate il computer, passano sullo schermo una serie di
  messaggi che descrivono l'hardware collegato al vostro computer.
  Questi messaggi vengono scritti dal kernel di \linux. In questa
  sezione cercher\`o di descriverli e spiegarli.
  
  Naturalmente, i  messaggi stampati dal kernel variano da macchina a
  macchina. Io descriver\`o quelli della mia. L'esempio seguente contiene
  tutti i messaggi standard ed alcuni messaggi specifici. (In generale,
  la macchina di cui sto parlando \`e una configurata al minimo, e non ci
  saranno molti messaggi specifici dell'hardware). L'esempio \`e stato
  fatto con la versione 1.3.55 di \linux---una delle pi\`u recenti nel momento
  in cui
  sto scrivendo.
  
  \index{linux kernel!messaggi di avvio@Linux kernel!messaggi di avvio}
  \begin{enumerate}
  \item La prima cosa che fa Linux \`e decidere che tipo di scheda video e
  schermo avete, in modo da utilizzare la giusta dimensione dei caratteri
  (pi\`u piccoli sono i caratteri, pi\`u se ne possono vedere nello schermo
  contemporaneamente). Linux potrebbe chiedervi se volete un
  carattere speciale, o pu\`o averne alcuni compilati
  al suo interno\footnote{``Compilazione'' \`e il processo con cui un programma
  scritto da una persona viene tradotto in qualcosa che il computer pu\`o
  capire. Una caratteristica ``compilata'' in un programma \`e
  stata inclusa nel programma.}.
  \begin{screen}\begin{verbatim}
  Console: 16 point font, 400 scans
  Console: colour VGA+ 80x25, 1 virtual console (max 63)
  \end{verbatim}\end{screen}
  In questo
  esempio, il proprietario
  della macchina aveva deciso di volere in fase di compilazione i
  normali caratteri grandi.
  \glossary{compile}\glossary{binary} Inoltre, notate l'errore
  ortografico nella parola ``color''. Linus ha evidentemente imparato
  la versione sbagliata dell'inglese.
  \index{Torvalds, Linus!uso dell'inglese}
  
  \item La prossima cosa che fa il kernel \`e dire quanto il sistema \`e
  veloce, misurando la velocit\`a in 
  ``BogoMIPS''.\index{BogoMIPS}  Un ``MIP'' 
  sta per un milione di istruzioni al secondo, e un ``BogoMIP'' \`e un
  ``bogus MIP'': quante volte il computer pu\`o non fare assolutamente
  niente in un secondo (dato che il loop non fa niente, il numero non
  \`e realmente una misura della velocit\`a del sistema).
    Linux usa questo numero quando deve restare in attesa di un dispositivo
  hardware.
  \begin{screen}\begin{verbatim}
  Calibrating delay loop.. ok - 33.28 BogoMIPS
  \end{verbatim}\end{screen}
  
  
  \item Il kernel di Linux comunica anche qualcosa sull'uso della memoria:
    \begin{screen}\begin{verbatim}
  Memory: 23180k/24576k available (544k kernel code, 384k reserved, 468k data)
  \end{verbatim}\end{screen}
  Questo significa che la macchina ha 24
  megabyte\glossary{megabyte} di
  memoria, di cui una parte \`e riservata per il kernel, e il resto pu\`o
  essere usata dai programmi: si tratta della RAM\glossary{RAM}
  temporanea
  che viene usata per l'immagazzinamento di dati a breve termine. Il
  computer ha anche una memoria a lungo termine chiamata hard disk (o disco
  fisso);\glossary{hard
  disk} il contenuto dell'hard disk viene salvato
  anche quando il computer viene spento.
  
  \item Durante la procedura di boot, Linux fa dei test su diversi
  componenti hardware e stampa dei messaggi anche su questi test.
  \begin{screen}\begin{verbatim}
  This processor honours the WP bit even when in supervisor mode. Good.
  \end{verbatim}\end{screen}
  
  \item Ora Linux si sposta alla configurazione della
  rete.\glossary{rete} Quello che segue dovrebbe essere spiegato
  nella \ldpng, e va oltre gli scopi di questo libro.
  \begin{screen}\begin{verbatim}
  Swansea University Computer Society NET3.033 for Linux 1.3.50
  IP Protocols: ICMP, UDP, TCP
  \end{verbatim}\end{screen}
  
  Linux supporta la FPU\index{FPU}, l'unit\`a a virgola
  mobile, un chip speciale (o parte di un chip, nel caso della CPU
  80486), che permette di fare calcoli matematici con numeri non
  interi. Alcuni di questi chip sono difettosi, e quando Linux tenta di
  identificare questi chip, la macchina va in ``crash'', cio\`e
  la macchina si ferma. Se questo succede, dovreste vedere:
  \begin{screen}\begin{verbatim}
  Checking 386/387 coupling...
  \end{verbatim}\end{screen}\index{errore!bad 386/387
  coupling}
  Altrimenti vedreste:
  \begin{screen}\begin{verbatim}
  Checking 386/387 coupling... Ok, fpu using exception 16 error reporting.
  \end{verbatim}\end{screen}
  se state usando un 486DX\@. Se state
  usando un 386 con un 387, vedreste:
  \begin{screen}\begin{verbatim}
  Checking 386/387 coupling... Ok, fpu using irq13 error reporting.    
  \end{verbatim}\end{screen}
  
  \item Fa ora un altro test sull'istruzione di ``halt''.
  \begin{screen}\begin{verbatim}
  Checking 'hlt' instruction... Ok.
  \end{verbatim}\end{screen}
  
  \item Dopo la configurazione iniziale, Linux stampa una linea che
  identifica se stesso. Dice quale versione \`e, con quale versione del
  compilatore C GNU \`e stato compilato, e quando.
  \begin{screen}\begin{verbatim}
  Linux version 1.3.55 (root@mousehouse) (gcc version 2.7.0) #1 Sun Jan 7 14:56:26 EST 1996
  \end{verbatim}\end{screen}
   
  \item Il                  
  driver\glossary{driver} delle porte seriali\index{porta seriale} ha
  iniziato a chiedere
  informazioni sul tipo di hardware. Un driver \`e una parte del kernel
  che
  controlla un dispositivo, normalmente una periferica, ed
  \`e responsabile dei dettagli della comunicazione tra la CPU ed il
  dispositivo. Permette a chi scrive applicazioni utente di
  concentrarsi sull'applicazione, e non preoccuparsi di come il
  computer lavora realmente.
   \begin{screen}\begin{verbatim}
  Serial driver version 3.95 with no serial options enabled
  tty00 at 0x03f8 (irq = 4) is a 16450
  tty01 at 0x02f8 (irq = 3) is a 16450
  tty02 at 0x03e8 (irq = 4) is a 16450
  \end{verbatim}\end{screen}
  Qui ha trovato 3 porte seriali. Una porta seriale \`e
  l'equivalente
  di una porta {\tt COM} del DOS, ed \`e normalmente usata con modem e
  mouse.
  
  Quello che sta dicendo \`e che la porta seriale 0 ({\tt COM1}) ha
  l'indirizzo {\tt 0x03f8}. Quando questa interrompe il kernel,
  generalmente
  per comunicare che stanno arrivando dati, essa usa l'IRQ 4. Un IRQ \`e
  un
  segnale di una periferica che chiama il software. Ogni porta seriale
  ha il
  proprio chip di controllo. Un chip comune per una porta \`e il 16450;
  altri
  valori possibili sono 8250 e 16550.
  
  \item Adesso tocca alle porte parallele. Una porta
  parallela\index{porta
  parallela} normalmente \`e connessa ad una stampante, e i nomi delle
  porte
  parallele (in \linux) iniziano con {\tt lp}. {\tt lp} sta per {\bf
  L}ine
  {\bf P}rinter, anche se oggi sarebbe pi\`u adatto {\bf L}aser {\bf
  P}rinter (in ogni caso, Linux comunicher\`a tranquillamente con
  qualsiasi tipo di stampante parallela: ad aghi, a getto d'inchiostro
  o laser).
  \begin{screen}\begin{verbatim}
  lp0 at 0x03bc, (polling)
  \end{verbatim}\end{screen}
  Questo messaggio dice che \`e stata trovata una porta parallela e si
  usa il
  driver standard.
  
  \item Il kernel controlla ora le unit\`a floppy. In questo esempio, la
  macchina ha due drive. In DOS, il drive ``A'' \`e un floppy da $5\
  {1/4}$
  pollici, e il drive ``B'' \`e un floppy da $3\ {1/2}$ pollici. Linux
  chiama il drive ``A'' {\tt fd0} e il drive ``B'' {\tt fd1}.
  \begin{screen}\begin{verbatim}
  Floppy drive(s): fd0 is 1.44M, fd1 is 1.2M
  floppy: FDC 0 is a National Semiconductor PC87306
  \end{verbatim}\end{screen}
  
  \item Il prossimo driver a partire nel mio esempio \`e il driver SLIP,
  che stampa un messaggio sulla sua configurazione. 
  \begin{screen}\begin{verbatim}
  SLIP: version 0.8.3-NET3.019-NEWTTY (dynamic channels, max=256) (6 bit encapsulation enabled)
  CSLIP: code copyright 1989 Regents of the University of California
  \end{verbatim}\end{screen} 
  
  \item Il kernel controlla anche la presenza di dischi fissi,
  controllando le partizioni presenti in ciascuno di essi. Una
  partizione \`e una
  suddivisione logica in un disco, che viene usata per tenere separati i sistemi
  operativi, in modo da evitare interferenze. 
  In questo esempio, il computer ha due dischi fissi  
  ({\tt hda}, {\tt hdb}) con rispettivamente quattro e una partizione.
  \index{partizione!disco}
  \index{disco!partizionamento}
  \begin{screen}\begin{verbatim}
  Partition check:
    hda: hda1 hda2 hda3 hda4
    hdb: hdb1
  \end{verbatim}\end{screen}
  
  \item Infine Linux esegue il {\bf
  mount}\glossary{mount}\index{mount}
  della partizione di root. La partizione di root \`e la partizione del disco
  dove risiede il sistema operativo \linux.\index{partizione!root} Quando
  Linux ``monta'' questa partizione, questa viene marcata come partizione
  disponibile per l'uso.
  \begin{screen}\begin{verbatim}
  VFS: Mounted root (ext filesystem).
  \end{verbatim}\end{screen}
  \end{enumerate} % kernel start-up messages
  
  
  \subsection{Messaggi a run-time}
  
  Il kernel di Linux manda talvolta dei messaggi allo schermo. Qui sotto c'\`e un elenco di alcuni di essi con il loro significato. Spesso questi messaggi indicano che qualcosa non va. Alcuni di essi sono {\bf critici}, cio\`e significano che il sistema operativo (e tutti i programmi!) smettono di funzionare. Quando si presentano, dovreste scrivervi quello che dicono e quello che stavate facendo quando \`e successo, e mandarli a Linus. Vedere la sezione~\ref{error-reporting}.
  
  Per fortuna, alcuni di questi messaggi sono soltanto informazioni---si spera, dato che li vedrete pi\`u spesso!
  
  \index{linux kernel!messaggi}
  \begin{itemize}
  \item
  \begin{screen}\begin{verbatim}
  Adding Swap: 10556k swap-space
  lp0 on fire
  ******** OBVIOUSLY INCOMPLETE
  \end{verbatim}\end{screen}
  
  \end{itemize} % running messages
  % Local Variables:
  % mode: latex
  % TeX-master: "guide"
  % End:
  
  
