Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 7ce9f5a38ba3a7d20482e74d18086033 > files > 25

howto-text-it-2006-5mdv2010.0.noarch.rpm

  Linux Bootdisk HOWTO
  Graham Chapman, grahamc@zeta.org.au
  v1.02, 25 June 1995

  Traduzione di Davide Barbieri, paci@dei.unipd.it.  Questo documento
  descrive come creare i dischi di boot, root/boot e di utilità. Questi
  dischi possono essere usati come dischi di recovery o per testare
  nuovi kernel.
  ______________________________________________________________________

  Indice Generale



  1. Introduzione
     1.1 Perché creare un disco di boot?

  2. Dischi
     2.1 Sommario dei tipi di dischi
     2.2 Boot
        2.2.1 Introduzione
        2.2.2 Sistemare il puntatore a Root
        2.2.3 Copiare il kernel su un dischetto di boot
     2.3 Root
        2.3.1 Introduzione
     2.4 Boot/Root
        2.4.1 RAM disk e Root Filesystem su Disco
     2.5 Utility

  3. Componenti
     3.1 File System
     3.2 Kernel
        3.2.1 Personalizzare il Kernel
     3.3 Device
     3.4 Directory
        3.4.1 /etc
        3.4.2 /bin
        3.4.3 /lib
     3.5 LILO
        3.5.1 Introduzione
        3.5.2 Esempio di Configurazione di LILO
        3.5.3 Rimuovere LILO
        3.5.4 Opzioni Utili di LILO

  4. Esempi
     4.1 Lista delle Directory
        4.1.1 Listato della directory di un Root Disk usando ls-lR
        4.1.2 Listato della directory di un Utility Disk usando ls-lR
     4.2 Script di Shell per Creare un Dischetto
        4.2.1 mkroot - Crea un disco di Root o di Root/Boot
        4.2.2 mkutil - Crea un Disco di Utility

  5. FAQ
     5.1 D. Come creo un boot disk con il driver XXX?
     5.2 D. Come aggiornare il mio disco di boot con un nuovo kernel?
     5.3 D.  Come tolgo LILO in modo da usare il DOS per eseguire il   boot del DOS nuovamente?
     5.4 D. Come posso eseguire il boot se ho perso il mio kernel _E_ il mio disco di boot?
     5.5 D. Come posso fare più copie di un dischetto boot/root?
     5.6 D. Come posso eseguire il boot senza scrivere ogni volta  ``ahaxxxx=nn,nn,nn''?
     5.7 D. Come creo un filesystem su un disco RAM più capiente?
     5.8 D. All'atto del boot, rivevo un errore tipo A: cannot execute B. Perché?

  6. Riferimenti
     6.1 LILO - Linux Loader
     6.2 Linux FAQ e HOWTO
     6.3 Pacchetti per il recupero
        6.3.1 Bootkit
        6.3.2 CatRescue
        6.3.3 Script di Shell per il Recupero
        6.3.4 SAR - Search and Rescue
     6.4 Distribuzione Slackware


  ______________________________________________________________________

  11..  IInnttrroodduuzziioonnee



  11..11..  PPeerrcchhéé ccrreeaarree uunn ddiissccoo ddii bboooott??

  I dischi di boot di Linux sono utili in diverse situazioni, quali:

  ·  si deve testare un nuovo kernel

  ·  si deve ripristinare il sistema, bloccato per qualche causa, che
     può essere di varia natura (un boot sector perso o la rottura di
     una testina del disco)

  Ci sono diversi modi per creare i dischi di boot:

  ·  Usare un disco di boot preso da una distribuzione come la
     Slackware.  Questo dovrebbe permettervi di eseguire almeno il boot.

  ·  Usare uno dei pacchetti pensati proprio per creare i dischi da
     usare come ``rescue disks'', o dischi di salvezza.

  ·  Imparare cosa è necessario fare per ogni tipo di disco, e
     crearselo.

  Io ho scelto l'ultima possibilità - imparare come lavorano e crearli
  da solo. In questo modo, se qualcosa va storto, potrete capire cosa
  non ha funzionato e lavorarci sopra. In più imparate molto su come
  Linux lavora. Quando io ho imparato come funzionava il tutto, mi sono
  creato il Bootkit Rescue Package per mantenere i miei dischi di boot.

  Gli utenti esperti potrebbero non trovare molto utile questo
  documento.  Comunque gli utenti nuovi nel sistema di amministrazione
  del Linux, i quali vogliano proteggersi dalla mancanza di un disco di
  root o qualcos'altro, potrebbero trovarlo utile.

  Una osservazione sulle versioni - questo documento è stato rinnovato
  per supportare i seguenti pacchetti e versioni:


  ·  Linux 1.2.0

  ·  LILO 0.15

  Copyright (c) Graham Chapman 1995.

  Traduzione Copyright (c) Davide Barbieri 1995.


  22..  DDiisscchhii


  22..11..  SSoommmmaarriioo ddeeii ttiippii ddii ddiisscchhii


  Ho classificato i dischi relativi al boot in 4 tipi. In questo
  discorso e attraverso tutto questo documento si usa il termine
  ``disco'' per riferirsi ai dischetti, se non è specificato. Gran parte
  del discorso può essere comunque applicata agli hard-disks.

  Un sommario dei tipi di dischi e del loro uso:


     bboooott
        Un disco che contiene il kernel e che può eseguire il boot.  Il
        disco può contenere un filesystem e usa un boot loader per
        eseguire il boot, o può semplicemente contenere il kernel
        all'inizio del disco. Il disco può essere usato per eseguire il
        boot del kernel usando un root file system su un altro disco.
        Questo può essere utile se perdete il vostro boot loader a
        causa, per esempio, di una installazione incorretta.


     rroooott
        Un disco con un file system contenente tutto ciò che è
        necessario per lavorare con un sistema Linux.  Non è
        necessariamente provvisto di un kernel o di un boot loader.

        Questo disco può essere usato per eseguire il sistema
        indipendentemente da qualunque altro disco, una volta che è
        stato eseguito il boot del kernel. Una caratteristica
        particolare del kernel permette di eseguire il mount di un altro
        disco root, con il disco root iniziale che viene automaticamente
        copiato in memoria.

        Potete usare questo tipo di disco per controllare se un disco è
        rovinato senza eseguirne il mount, o per recuperare un altro
        disco dopo un errore del disco o la perdita di qualche file.


     bboooott//rroooott
        Un disco che è identico al disco root, però contiene un kernel e
        un boot loader. Può essere usato per eseguire il boot e far
        partire il sistema. Il vantaggio di questo tipo di disco è che è
        compatto - tutto si trova in un solo disco. Comunque il continuo
        aumentare della grandezza di un po' tutto impone che non sempre
        sia possibile avere tutto su un singolo dischetto.


     uuttiilliittyy
        Un disco che contiene un file system, ma non è fatto per essere
        usato come root file system. È un disco che contiene qualche
        utilità addizionale. Potreste usare questo tipo di disco per
        avere sempre a disposizione questi programmi quando avete
        problemi di spazio sul vostro disco di root.

        Il termine ``utility'' si riferisce solamente al dischetto, il
        cui utilizzo potrebbe servire per conservare del software per il
        recupero del sistema.


  22..22..  BBoooott


  22..22..11..  IInnttrroodduuzziioonnee

  Tutti i PC iniziano il processo di boot eseguendo un codice residente
  sulla ROM per caricare il settore del disco di boot dal settore 0,
  cilindro 0, e provare a eseguirlo. Nella maggior parte dei dischi di
  boot, il settore 0, cilindro 0 contiene inoltre:

  ·  del codice appartenente a un boot loader come il LILO, che
     localizza il kernel, lo carica e lo esegue.

  ·  la parte iniziale di un sistema operativo, come il Linux.

  Se un kernel del Linux è stato scritto su un dischetto come un ``raw
  device'', allora il primo settore sarà il primo settore del kernel
  stesso, e questo settore continuerà il processo di boot caricando il
  resto del kernel e eseguendo Linux.  Per una più dettagliata
  descrizione del contenuto del boot sector, fate riferimento alla
  documentazione che accompagna il lilo-0.15 o maggiore.

  Un metodo alternativo per salvare il kernel su un disco di boot è
  quello di creare un file system, non un root file system, ma
  semplicemente installando il LILO e le relative opzioni per i comandi
  da eseguire durante il boot. Per esempio, lo stesso kernel può essere
  usato per eseguire il boot usando un root file system che si trova sul
  disco fisso, o che si trova su un dischetto.  Questo può essere utile
  se state cercando di ricostruire il file system del vostro disco
  fisso, e volete testare ripetutemente i risultati.


  22..22..22..  SSiisstteemmaarree iill ppuunnttaattoorree aa RRoooott

  Il kernel deve in qualche modo ottenere un puntatore al drive e alla
  partizione di cui deve essere eseguito il mount come root drive.
  Questo può essere fatto in diversi modi:

  ·  Settando ROOT_DEV = device nel makefile del kernel e ricompilando
     il kernel (per sapere come ricompilare il kernel, leggete le Linux
     FAQ e guardate nella directory /usr/src/linux).  Ci sono dei
     commenti nel makefile del kernel che spiegano quali sono i valori
     validi per device.


  ·  usando l'utility rdev:


               rdev nomefile device



  Questo indicherà che il root device del kernel contenuto nel nomefile
  sarà device. Per esempio:


               rdev zImage /dev/sda1



  Questo comando imposta il root device del kernel Image sulla prima
  partizione SCSI drive.

  Ci sono altri modi per usare il comando rdev. Provate:



               rdev -h



  e questo vi mostrerà come si usa il comando.

  Di solito non c'è bisogno di configurare il root device per usare i
  dischetti di boot, perché il kernel attualmente usato per eseguire il
  boot probabilmente punta già al root device. Sarà necessario,
  comunque, se ottenete il kernel da un'altra macchina, per esempio, da
  una distribuzione, o se volete che il kernel esegua il boot di un
  dischetto di root.  Non fa male comunque controllare. Per usare rdev
  per controllare il root device corrente nel kernel, digitate questo
  comando:



               rdev <nomefile>


  È possibile cambiare il root device settato nel kernel attraverso
  altri mezzi, oltre che tramite rdev. Per dettagli, andate a vedere le
  FAQ alla fine di questo capitolo.


  22..22..33..  CCooppiiaarree iill kkeerrnneell ssuu uunn ddiisscchheettttoo ddii bboooott

  Una volta che il kernel è stato configurato è necessario copiarlo su
  un dischetto di boot.

  I comandi descritti di seguito (e in tutto l'HOWTO) funzionano
  regolarmente se si assume che i dischi siano stati formattati.  In
  caso contrario, usate fdformat per formattare i dischetti prima di
  continuare.

  Se non si intende avere un file system sul dischetto di boot, allora
  il kernel va copiato usato il comando dd, come segue:



               dd if=nomefile of=device

               dove    nomefile e` il nome del kernel
               e       device e` il device del dischetto,
                       solitamente /dev/fd0



  Può essere usato anche il comando:


               cp nomefile device



  Per esempio:



               dd if=zImage of=/dev/fd0
       oppure
               cp zImage /dev/fd0



  Il parametro seek del comando dd NON dovrebbe essere usato.  Il file
  deve essere copiato all'inizio del boot sector (settore 0, cilindro
  0), e si ottiene questo omettendo il parametro seek.

  Il nome del device può variare. Molti sistemi usano /dev/fd0 come un
  nome alternativo per il ``vero'' nome del device per il drive del
  dischetto. Per esempio, quando il drive di default (p.e. ``drive A:''
  in DOS) è un drive ad alta densità da 3 1/2, il nome del device sarà
  /dev/fd0H1440, ma di solito /dev/fd0 punta allo stesso device.

  Se si vuole copiare il kernel in un dischetto di boot contenente un
  filesystem, allora basta eseguire il mount del disco in una directory
  (p.e. /mnt) e usare il comando cp. Per esempio:



          mount -t ext2 /dev/fd0 /mnt
          cp zImage /mnt
          umount /mnt



  Notate che per quasi tutte le operazioni descritte in questo HOWTO,
  l'utente dovrebbe agire come root.


  22..33..  RRoooott


  22..33..11..  IInnttrroodduuzziioonnee

  Un disco di root contiene un sistema Linux completamente funzionante,
  ma senza necessariamente contenere un kernel. In altre parole, il
  disco può non essere di boot, ma una volta che il kernel è stato
  attivato, il disco di root contiene tutto ciò che è necessario a
  supportare un sistema Linux completo. Per poter fare questo, il disco
  deve contenere i minimi requisiti per un sistema Linux:

  ·  Un File system.

  ·  Un set minimo di directory - dev, proc, bin, etc, lib, usr, tmp.

  ·  Un set di base di utility - bash (per avere una shell), ls, cp etc.

  ·  Un set minimo di file di configurazione - rc, inittab, fstab etc.

  ·  Alcune librerie per fornire le funzioni base usate dalle utility.

  Ovviamente, qualunque sistema diventa utile solo quando potete fare
  qualcosa, e un dischetto di root di solito diventa utile solo quando
  potete fare qualcosa come:

  ·  Controllare il file system di un altro drive, per esempio per
     controllare il vostro root file system del vostro disco fisso,
     dovete essere in grado di eseguire il boot di un sistema Linux da
     un altro drive, così come lo potete fare con un dischetto di root.
     A questo punto potete eseguire fsck sul vostro disco di root
     originale finché non è stato eseguito il mount.

  ·  Recuperare tutte le parti del vostro disco di root originale da un
     backup usando una utility di archiviazione e/o compressione come
     cpio, tar, gzip and ftape.


  22..44..  BBoooott//RRoooott

  Essenzialmente la stessa cosa di un disco di root, con in più il
  kernel e un boot loader come LILO.

  Con questa configurazione, un kernel è copiato nel root file system, e
  LILO poi viene eseguito per installare una configurazione che punta
  all'imagine del kernel nel disco. Alla partenza, LILO eseguirà il boot
  del kernel dal disco.

  Molti file devono essere copiati su disco affinché questo metodo
  funzioni. Verrano dati dettagli su questi file e sulla configurazione
  richiesta da LILO, incluso un esempio, nella sezione intitolata
  ``LILO''.



  22..44..11..  RRAAMM ddiisskk ee RRoooott FFiilleessyysstteemm ssuu DDiissccoo

  Affinché un dischetto con un root filesystem sia efficiente, bisogna
  che questo sia in grado di partire da un ramdisk, p.e.  un disco
  emulato in memoria. Questo evita che il sistema sia lento, cosa che
  accadrebbe usando un disco.

  C'è anche un altro vantaggio nell'usare un ramdisk - il kernel del
  Linux ha la capacità  di usare un root ramdisk automaticamente,
  attraverso il quale copia automaticamente il contenuto del disco di
  root su un disco RAM, e poi usa il disco RAM come disco root.  Questo
  comporta due grossi vantaggi:

  ·  Il sistema è più veloce.

  ·  Il drive è liberato consentendo di utilizzare altri dischi.

  Per usare questa capacità del kernel:

  ·  Il file system sul dischetto deve essere un file system minix o
     ext2. Il file system ext2 è generalmente quello favorito.  Attenti
     che se avete un kernel più vecchio della versione 1.1.73 allora
     dovreste guardare i commenti nella sezione intitolata ``File
     System'' per vedere se il vostro kernel supporta l'ext2.  Se avete
     un kernel vecchio allora probabilmente dovete usare minix.  Questo
     non causa comunque nessun problema.

  ·  Un disco RAM deve essere configurato nel kernel, e deve essere
     grande almeno quanto un dischetto.

  Un disco RAM può essere configurato nel kernel in diversi modi:

  ·  Togliendo il commento alla macro RAMDISK nel makefile del kernel,
     in modo che appaia:


               RAMDISK = -DRAMDISK=1440



  per definire un ramdisk di 1440 blocchi da 1K, la dimensione di un
  disco ad alta densità.

  ·  Usando la utility rdev, disponibile su praticamente tutti i sistemi
     Linux. Questa utility mostra o setta alcuni valori per diverse cose
     nel kernel, incluso la grandezza desiderata per il disco RAM. Per
     configurare un disco RAM di 1440 blocchi nel kernel la cui immagine
     è il file Image, usate:


               rdev -r zImage 1440



  questo potrebbe cambiare in futuro, sicuro. Per vedere quale versione
  di rdev fa questo, usate il comando:


               rdev -?



  e dovrebbe mostrare le sue opzioni.
  ·  Usando il boot loader LILO per configurare il disco RAM durante il
     boot. Questo può essere fatto usando il parametro di configurazione
     di LILO:


               ramdisk = 1440



  per avere un disco RAM di 1440 blocchi di un 1K al boot.

  ·  Interrompendo un boot automatico da parte di LILO e aggiungendo
     alla riga di comando ramdisk=1440. Per esempio, un riga di comando
     come questa:


               zImage ramdisk=1440



  Per maggiori dettagli vedere la sezione LILO.

  ·  Editando il file del kernel e alterando i valori all'inizio del
     file che registrano la grandezza del disco RAM. Questa è
     sicuramente l'ultima risorsa da usare, ma è comunque valida.
     Vedete le FAQ alla fine di questo documento per maggiori dettagli.

  Il modo più facile consiste nel configurare LILO, siccome dovete
  comunque configurare LILO, perché non aggiungere la grandezza del
  disco RAM?

  La configurazione di LILO è brevemente descritta in una sezione
  intitolata ``LILO'', ma è meglio ottenere l'ultima versione stabile di
  LILO dal più vicino Linux site e leggere la documentazione che lo
  accompagna.

  I dischi RAM possono essere più capienti di un dischetto, e fatti in
  modo tale da contenere un filesystem largo quanto il disco RAM. Ciò
  può essere utile per caricare tutto il software necessario a un lavoro
  di recupero in un disco RAM.  Il metodo per creare un disco del genere
  è descritto nella sezione FAQ, nella domanda ``Come posso creare un
  filesystem in un disco RAM di grossa capienza?''


  22..55..  UUttiilliittyy

  Spesso un disco non è sufficiente per contenere tutto il software
  necessario per fornire le funzioni necessarie di analisi, riparazione
  e recupero di un disco danneggiato. Anche se includendo tar, gzip
  e2fsck, fdisk, Ftape e cosi via, dovreste avere tutto ciò che vi
  serve.

  Questo significa che un set per il recupero richiede un disco di
  utility, con un file system che contenga ogni altro file necessario.
  Di questo file system si può eseguire il mount in una directory
  conveniente, come /usr, sul sistema root/boot.

  Creare un file system è abbastanza facile, e la spiegazione è data
  nella sezione titolata ``File System''.



  33..  CCoommppoonneennttii


  33..11..  FFiillee SSyysstteemm

  Il kernel del Linux supporta due file system per i dischi di root che
  possono essere copiati automaticamente in un disco RAM.  Questi sono i
  file system minix e ext2, dei quali l'ext2 è il migliore. Il supporto
  per l'ext2 è stato aggiunto tra le versioni 1.1.17 e 1.1.57. Non sono
  sicuro quale esattamente.  Se avete un kernel di una di queste
  versioni allora guardate nel file
  /usr/src/linux/drivers/block/ramdisk.c e cercate la parola ``ext2''.

  Se non c'è, allora dovrete usare un file system minix, e quindi il
  comando ``mkfs'' per crearlo. (Se usate mkfs, usate l'opzione -i per
  specificare un maggior numero di ``inode'' rispetto al valore di
  dafault; -i 2000 è il valore suggerito).


               mke2fs -m 0 /dev/fd0



  Il comando mke2fs riconoscerà automaticamente lo spazio libero e si
  configurerà automaticamente da solo. Non c'è quindi bisogno di nessun
  parametro.

  Un facile modo per testare il risultato è quello di creare un sistema
  usando il comando sopra o uno simile, e poi tentare di eseguire il
  mount del dischetto. Se è un sistema ext2, allora il comando:


               mount -t ext2 /dev/fd0 /<mount point>



  dovrebbe funzionare.


  33..22..  KKeerrnneell


  33..22..11..  PPeerrssoonnaalliizzzzaarree iill KKeerrnneell

  Nella maggior parte dei casi sarà possibile copiare il vostro kernel
  corrente e eseguire il boot da questo. Comunque ci possono essere casi
  in cui volete compilarne uno diverso.

  Una ragione è la grandezza. Il kernel è uno dei file più grossi in un
  sistema minimizzato, quindi se avete bisogno di creare un disco di
  root/boot allora dovete anche ridurre la grandezza del kernel il più
  possibile. Il kernel ora supporta il cambio dei dischetti dopo aver
  eseguito il boot e prima di eseguire il mount del disco root, così non
  è più necessario inglobare il kernel nello stesso dischetto come tutto
  il resto, quindi questi commenti si rivolgono solo a chi decide di
  creare un disco di root/boot.

  Ci sono due modi per ridurre la grandezza del kernel:

  ·  Compilando il kernel con un minimo di supporto per il sistema
     desiderato. Questo significa lasciare fuori qualcosa di cui non
     avete bisogno. Il supporto per il networking è una buona cosa da
     lasciare fuori, come il supporto per i device di cui non avete
     bisogno quando usate il vostro sistema root/boot.
  ·  Compressandolo, usando l'opzione per il kernel inserita nel
     makefile:


               make zImage



  Fate riferimento alla documentazione inclusa nei sorgenti del kernel
  per una informazione più aggiornata su come compilare un kernel com­
  presso. Notate che i sorgenti del kernel sono generalmente in
  /usr/src/linux.

  Una volta che avete deciso cosa non inserire nel kernel, dovete
  decidere cosa includere. Probabilmente l'uso più comune che si fa di
  un disco root/boot è quello di esaminare e recuperare il file system
  di root rovinato, e per fare questo potreste aver bisogno che il
  kernel supporti determinate cose.

  Per esempio, se i vostri backup sono tutti conservati su nastro e
  usate Ftape per accedere al drive, allora, se perdete la vostra
  installazione contenente Ftape, non sarete più in grado di recuperare
  i vostri backup dal nastro. Dovrete reinstallare Linux, reinstallare
  Ftape, e poi potrete accedere ai vostri backup.

  È certamente preferibile mantenere una copia della stessa utility,
  così non dovrete perdere tempo installando versioni che non possono
  leggere i vostri backup.

  Il punto è che, qualunque supporto I/O che voi avete aggiunto al
  vostro kernel per supportare i backup dovrebbe essere anche aggiunto
  al vostro disco di root/boot. Notate inoltre che il modulo Ftape (o
  almeno quello che ho io) è piuttosto grosso e non potrà risiedere sul
  vostro disco di root/boot. Dovrete aggiungerlo su un dischetto di
  utility - ciò è descritto in una sezione intitolata ``AGGIUNGERE
  DISCHETTI DI UTILITÀ"

  Attualmente la procedura per compilare il kernel è descritta nella
  documentazione che accompagna i sorgenti dello stesso.  È abbastanza
  semplice, incominciate a guardare in /usr/src/linux.  Attenti che se
  avete problemi nel compilare il kernel, allora probabilmente è meglio
  che non tentiate di creare un disco di boot/root.


  33..33..  DDeevviiccee

  La directory /dev, che contiene dei file speciali per tutti i device
  che devono essere usati dal sistema, è d'obbligo per qualsiasi sistema
  Linux. Questa directory è una directory normale, e può essere creata
  con il comando mkdir nel modo usuale. I file speciali dei device,
  però, devono essere creati in un modo particolare, usando il comando
  mknod.

  C'è anche una via più semplice, comunque - copiare la vostra directory
  /dev esistente, e cancellare i device che non vi servono.  L'unica
  accortezza è che i file devono essere copiati usando l'opzione -R.
  Così verrà copiata la directory senza tentare di copiare il contenuto
  dei file. Notate che usare le lettere minuscole, cioè ``-r'', fa una
  grossa differenza, perché finirete per copiare tutto il contenuto del
  vostro disco fisso!

  Quindi, state attenti, e usate il comando:



          cp -dpR /dev /mnt



  assumendo che sia stato eseguito il mount del dischetto in /mnt.
  L'opzione dp assicura che i link simbolici siano copiati come link
  (anziché come i file a cui puntano) e che siano conservati gli
  attributi originali, preservando anche le proprietà.

  Se volete farlo con il metodo più difficile, usate ls -l per vedere i
  numeri `mayor' e `minor' dei device che volete, e createli sul
  dischetto usando mknod.

  Molte distribuzioni includono uno script di shell chiamato MAKEDEV
  nella directory /dev. Questo script di shell può essere usato per
  creare i file, ma probabilmente è più facile copiare quelli esistenti,
  specialmente per un disco destinato al recupero dei sistemi
  danneggiati.

  In qualunque modo venga copiata la directory, è bene controllare che
  ogni device speciale di cui avete bisogno sia stato copiato nel
  dischetto. Per esempio, Ftape usa i device per i nastri, quindi avete
  bisogno di copiarli tutti.


  33..44..  DDiirreeccttoorryy

  È possibile usare solamente le directory /dev, /proc e /etc per far
  funzionare un sistema Linux. Non sono sicuro - non l'ho mai provato.
  Comunque un ragionevole set minimo di directory è il seguente:

     /dev
        Richiesta per motivi di I/O con i device

     /proc
        Richiesta dal comando ps

     /etc
        File di configurazione del sistema

     /bin
        Eseguibili e utility per il sistema

     /lib
        Shared libraries per il supporto run-time

     /mnt
        Un ``mount point'' per la gestione di un disco in generale

     /usr
        Utility e applicazioni generali

  Notate che la struttura delle directory presentata qui è da usare solo
  nel disco di root. Fate riferimento al Linux File System Standard per
  maggiori informazioni su come i file system dovrebbero essere
  strutturati su un sistema Linux ``standard''.

  Quattro di queste directory possono essere create molto facilmente:

  ·  /dev è descritta sopra nella sezione intitolata DEVICE.

  ·  /proc /proc necessita solo di esistere :-). Una volta che la
     directory è creata con il comando mkdir, non ha più bisogno di
     niente.

  ·  Per quanto riguarda le altre, /mnt e /usr sono incluse in queste
     directory soltanto come ``mount point'' da usare dopo che il
     sistema root/boot è partito. Ancora una volta, queste directory
     hanno solo bisogno di essere create.

  Le rimanenti 3 directory sono descritti nelle sezione seguenti.


  33..44..11..  //eettcc

  Questa directory deve contenere un certo numero di file di
  configurazione.  Nella maggior parte dei sistemi, questi possono
  essere suddivisi in 3 gruppi:

  ·  I file richiesti in ogni caso, p.e. rc, fstab, passwd.

  ·  I file che potrebbero essere richiesti, ma nessuno è troppo sicuro.

  ·  Junk that crept in.

  I file che non sono essenziali possono essere identificati con il
  comando:


               ls -ltru



  Questo lista in ordine inverso i file che sono stati modificati ulti­
  mamente (dal più recente al più vecchio), quindi se ci sono file che
  non vengono usati, questi possono essere tralasciati in un eventuale
  disco di root.

  Sui miei dischi di root, io ho al massimo 15 file di configurazione.
  Questo riduce il mio lavoro con questi tre insiemi di file:

  ·  Quelli necessari alla configurazione per un sistema boot/root:


               rc      system startup script
               fstab   lista dei file systems di cui fare il mount
               inittab parametri per il processo di init - il
                       primo processo a partire al boot del sistema.



  ·  Quelli che dovrei avere per un sistema boot/root:


               passwd  lista delle login
               shadow  password



  Queste dovrebbero essere presenti in un sistema sicuro in modo tale
  che eseguendo il boot dal dischetto siano rigettate le login non abil­
  itate.

  ·  I rimanenti. I precedenti bastano, quindi lasciamo solo questi per
     il momento.


  A parte questo, ho veramente bisogno di solo 2 file, e ciò che
  contengono è sorprendentemente poco.

  ·  rc dovrebbe contenere:


               #!/bin/sh
               /etc/mount -av
               /bin/hostname boot_root



  e non ho bisogno di eseguire hostname - semplicemente risulta più sim­
  patico se lo faccio. Anche mount è necessario solamente, per ora, ad
  eseguire il mount di /proc per supportare il comando ps - Linux fun­
  ziona anche senza hostname.

  ·  fstab dovrebbe essere:


               /dev/fd0        /               ext2    defaults
               /proc           /proc           proc    defaults



  Non penso che la prima riga sia veramente necessaria, ma ho trovato
  che se la lascio fuori, mount non riesce ad eseguire il mount di
  /proc.

  inittab dovrebbe essere a posto così com'è, a meno che non vogliate
  essere sicuri che gli utenti non possano connettersi attraverso le
  porte seriali. Per prevenire questo, togliete i commenti a tutte le
  righe con /etc/getty che includono ttys o ttyS alla fine della riga.
  Lasciate però le porte tty altrimenti non potrete collegarvi tramite
  la console.

  inittab definisce cosa il sistema eseguirà in varie situazioni incluso
  l'inizio della sessione, la chiusura, il passaggio a un modo multi-
  utente.  Bisogna controllare attentamente che i comandi passati a
  inittab siano presenti e nella directory corretta. Se inserite i
  vostri comandi nel vostro dischetto di recupero usando il listato
  della directory di esempio di questo HOWTO, e poi copiate il vostro
  inittab nel dischetto di recupero senza controllare, allora avrete
  grosse possibilità che qualcosa vada storto, perché metà delle righe
  nell'inittab faranno riferimento a programmi inesistenti o residenti
  in directory sbagliate.

  Molti programmi non possono essere spostati da una directory a
  un'altra altrimenti non riuscriranno a funzionare correttamente.  Per
  esempio sul mio sistema, /etc/shutdown chiama il comando /etc/reboot.
  Se sposto reboot in /bin/reboot, e poi chiamo il comando shutdown,
  questo fallirà, perché non può trovare il file reboot.

  Per il resto, copiate semplicemente tutti i file di testo nella vostra
  directory /etc, più gli eseguibili nella directory /etc di cui non
  potete essere sicuri se vi serviranno. Come guida, consultate la lista
  nella sezione ``Listato della directory di un Root Disk usando ls-lR''
  - questo è quello che io ho, così probabilmente sarà sufficiente per
  voi se copiate solo questi file.

  In pratica, un solo file rc è restrittivo; molti sistemi ora usano una
  directory /etc/rc.d contenente gli script di shell, ma è probabilmente
  più semplice copiare la directory inittab e /etc/rc.d dal vostro
  sistema esistente, e controllare poi gli script di shell per togliere
  quelle parti che non servono in un sistema che partirà da dischetto.


  33..44..22..  //bbiinn

  Ecco una directory adatta a contenere tutte le utility extra che vi
  servono per avere a disposizioni le funzionalità di base; utility come
  ls, mv, cat, dd ecc.  Andate alla sezione intitolata ``Esempio di ls-
  lR su un disco di Boot/Root'' per una lista di file che io ho messo
  nella mia directory /bin del mio disco di boot/root. Noterete che non
  contengono utility per recuparare i backup, come cpio, tar, gzip etc.
  Questo perché io ho messo queste utility su un dischetto separato, per
  salvare spazio sul disco di root/boot. Una volta che ho fatto partire
  il sistema dal mio disco di root/boot, esso si copia in memoria come
  ramdisk lasciando il disk drive libero per un altro dischetto: il
  dischetto utility! Di solito io ne faccio il mount in /usr.

  La creazione di un disco di utility è descritta successivamente nella
  sezione intitolata ``Aggiungere un Dischetto di Utility''.


  33..44..33..  //lliibb

  Due librerie sono necessarie per il funzionamento di molte utility
  sotto Linux:

  ·  ld.so

  ·  libc.so.4

  Se non sono nella directory /lib allora il sistema non sarà in grado
  di partire. Se siete fortunati potreste vedere un messaggio di errore
  che vi dice perché.

  Queste dovrebbero essere presenti nella vostra directory /lib.  Notate
  che libc.so.4 può essere un link simbolico a un libreria libc con la
  versione nel nome del file. Se usate il comando:


               ls -l /lib



  dovreste vedere qualcosa del genere:


               libc.so.4 -> libc.so.4.5.21



  In questo caso, la libreria libc che vi serve è la libc.so.4.5.21.


  33..55..  LLIILLOO


  33..55..11..  IInnttrroodduuzziioonnee

  Un dischetto di root/boot perché sia utilizzabile, deve essere in
  grado di eseguire il boot. Per ottenere ciò, la via più semplice
  (forse l'unica?) è quella di installare un boot loader, che è una
  parte di codice eseguibile salvata sul settore 0, cilindro 0 del
  disco.  Andate alla sezione intitolata ``Dischetti di Boot'' per
  saperne di più sui processi di boot.
  LILO è un boot loader disponibile su ogni Linux site. Permette di
  configurare il boot loader, compreso:

  ·  Quale device deve essere ``montato'' come drive root.

  ·  Se deve essere usato un ramdisk.


  33..55..22..  EEsseemmppiioo ddii CCoonnffiigguurraazziioonnee ddii LLIILLOO

  È un modo molto conveniente per specificare come il kernel deve
  comportarsi al momento del boot. Il mio file di configurazione per
  LILO 0.15 sul disco di root/boot è:


       ______________________________________________________________________
       boot = /dev/fd0
       install = ./mnt/boot.b
       map = ./mnt/lilo.map
       delay = 50
       message = ./mnt/lilo.msg
       timeout = 150
       compact
       image = ./mnt/zImage
               ramdisk = 1440
               root = /dev/fd0
       ______________________________________________________________________



  Notate che boot.b, lilo.msg e il kernel devono essere copiati sul
  dischetto usando un comando del tipo:


       cp /boot/boot.b ./mnt



  Se questo non viene fatto, LILO non potrà essere eseguito
  correttamente durante il boot se l'hard disk non è disponibile, e c'è
  da perdere tempo nel creare un dischetto di salvezza che richieda un
  hard disk per partire.

  Io eseguo LILO con il comando:


               /sbin/lilo -C <configfile>



  Lo eseguo da una directory contenente la directory mnt nella quale ho
  ``messo'' il disco. Questo significa che sto dicendo a LILO di
  installare un boot loader nel device di boot (/dev/fd0 in questo
  caso), di eseguire il boot del kernel nella directory principale del
  disco.

  Ho anche specificato che voglio che il root device sia il dischetto, e
  che voglio un RAM disk di 1440 blocchi da 1K, la stessa grandezza del
  dischetto. Siccome ho creato un dischetto con un file system di tipo
  ext2, ho fatto tutto ciò che dovevo fare affinché il sistema usi come
  root device il ramdisk, e copi il contenuto del dischetto in
  quest'ultimo.

  Le caratteristiche di un ram disk sono descritte più approfonditamente
  nella sezione intitolata ``RAM DISK E SISTEMI BOOT/ROOT''.

  È anche utile considerare la possibilità di usare il parametro
  ``singolo'' per fare in modo che Linux esegua il boot in modalità
  utente-singolo. Questo può essere utile per prevenire la connessione
  di utenti attraverso le porte seriali.

  Uso inoltre le opzioni ``DELAY'' ``MESSAGE'' e ``TIMEOUT'' in modo che
  quando il sistema parte dal disco, LILO mi darà l'opportunità di
  inserire dei comandi da passare al kernel. Non ne ho bisogno ora come
  ora, ma potrebbe tornarmi utile se volessi usare un'altro root device
  o eseguire il mount di un file system in sola lettura.

  Il file di messaggio che io uso è così fatto:



       Linux Boot/Root Diskette
       ========================

       Inserisci un linea di comando del tipo:

             zImage [ command-line options]

       Se non scrivi niente linux partira` dopo 15 secondi.



  Mi ricorda semplicemente quali sono le mie scelte.

  I lettori sono invitati a leggere la documentazione di LILO
  attentamente prima di tentare di installare qualcosa. È facile
  rovinare le partizioni se usate il parametro ``boot ='' in modo
  sbagliato. Se non siete esperti non usate LILO finché non siete sicuri
  di avere capito e avete controllato 3 volte i vostri parametri.

  Notate che dovete rieseguire lilo ogni volta che cambiate kernel, così
  LILO può settare la sua mappa dei file per descrivere correttamente il
  nuovo file del kernel. È di fatto possibile sostituire il file del
  kernel con uno quasi identico senza rieseguire LILO, ma è molto meglio
  non rischiare - se cambiate kernel, rieseguite LILO.


  33..55..33..  RRiimmuuoovveerree LLIILLOO

  Finché sono sull'argomento LILO è bene che vi dica un'altra cosa: se
  avete installato lilo su un drive contenente DOS, potete sempre
  ripristinare il boot sector con il comando:


               FDISK /MBR



  dove MBR sta per ``Master Boot Record''. Alcuni non vedono di buon
  occhio questo metodo, però funziona.


  33..55..44..  OOppzziioonnii UUttiillii ddii LLIILLOO


  LILO ha molte opzioni utili le quali sono difficili da ricordare
  quando si deve creare un disco di boot:
  ·  opzioni di linea di comando - potete dare delle opzioni di linea di
     comando per specificare il root device, la grandezza del ramdisk,
     parametri per device speciali o altre cose. Se usate l'opzione
     DELAY=nn nel file di configurazione, LILO si fermerà permettendovi
     di selezionare un'immagine del kernel con cui eseguire il boot e di
     passare qualunque opzione vogliate al kernel.  Per esempio:


               zImage aha152x=0x340,11,3,1 ro



  passa il parametro aha152x al driver per i dischi scsi aha152x
  (ammesso che il kernel sia stato compilato con il supporto per questi
  dischi) e chiede che venga eseguito il mount del root file system in
  sola lettura.

  ·  L'opzione ``lock'' - questa opzione chiede a LILO di salvare la
     linea di comando che si inserisce come la linea di comando di
     default da usare in tutti i boot successivi. Questa opzione è
     particolarmente utile quando avete un device che non può essere
     riconosciuto automaticamente. Usando l'opzione ``lock'' evitate di
     inserire i parametri del device ogni volta che accendete il
     computer.  Per esempio:


               zImage aha152x=0x340,11,3,1 root=/dev/sda8 ro lock



  ·  L'opzione di configurazione APPEND - permette di memorizzare la
     stringa con i parametri per un device nella configurazione, come
     alternativa all'opzione ``lock''. Attenti all'uso delle virgolette.
     Per esempio:


               APPEND = "aha152x=0x340,11,3,1"



  ·  DELAY - ferma il boot automatico per un determinato tempo, in modo
     da dare il tempo all'utente di inserire una linea di comando,
     magari diversa da quella di default.


  44..  EEsseemmppii


  44..11..  LLiissttaa ddeellllee DDiirreeccttoorryy

  Questa lista contiene i file e le directory presenti nei miei root e
  utility disk. Queste liste sono fornite solo come esempio dei file
  inclusi per creare un sistema funzionante.  Queste dischetti sono
  stati creati usando il pacchetto Bootkit, che copia sul dischetto solo
  i file che voi volete che siano copiati.


  44..11..11..  LLiissttaattoo ddeellllaa ddiirreeccttoorryy ddii uunn RRoooott DDiisskk uussaannddoo llss--llRR

  La lista si riferisce ad un disco di root di cui è stato fatto il
  mount in /mnt:


       total 27
       drwx------   2 root     root         1024 Jun 11 23:23 bin/
       drwxr-xr-x   2 root     root         3072 Jun 11 23:24 dev/
       drwxr-xr-x   3 root     root         1024 May 30 06:38 etc/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 home/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 lib/
       drwxr-xr-x   2 root     root        12288 Jun 11 23:23 lost+found/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 mnt/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 proc/
       drwxr-xr-x   2 root     root         1024 May 30 05:56 root/
       drwxr-xr-x   2 root     root         1024 Jun  3 23:39 sbin/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 tmp/
       drwxr-xr-x   3 root     root         1024 May 30 05:48 usr/
       drwxr-xr-x   2 root     root         1024 Jun 11 23:24 util/
       drwxr-xr-x   5 root     root         1024 May 30 05:58 var/

       /mnt/bin:
       total 664
       -rwxr-xr-x   1 root     root       222208 Sep  7  1992 bash*
       -rwxr-xr-x   1 root     other        4376 Sep  8  1992 cat*
       -rwxr-xr-x   1 root     other        5088 Sep  4  1992 chmod*
       -rwxr-xr-x   1 root     other        4024 Sep  4  1992 chown*
       -rwxr-xr-x   1 root     other       12104 Sep  4  1992 cp*
       -rwxr-xr-x   1 root     other        4376 Sep  5  1992 cut*
       -rwxr-xr-x   1 root     other        7592 Sep  4  1992 dd*
       -rwxr-xr-x   1 root     other        4656 Sep  4  1992 df*
       -rwxr-xr-x   1 root     root        37892 May  5  1994 e2fsck*
       -rwx--x--x   1 root     root        14396 Sep 20  1992 fdisk*
       -r-x--x--x   1 bin      bin          3536 Feb 19 19:14 hostname*
       -rwxr-xr-x   1 root     other        5292 Sep  4  1992 ln*
       -rws--x--x   1 root     root        24352 Jan 16  1993 login*
       -rwxr-xr-x   1 root     other        4104 Sep  4  1992 mkdir*
       -rwxr-xr-x   1 root     root        21508 May  5  1994 mke2fs*
       -rwxr-xr-x   1 root     other        3336 Sep  4  1992 mknod*
       -rwx--x--x   1 root     root         2432 Sep 20  1992 mkswap*
       -rwxr-xr-x   1 root     root         9596 Jun 10 22:12 mount*
       -rwxr-xr-x   1 root     other        6724 Sep  4  1992 mv*
       -rwxr-xr-x   1 root     root        11132 Apr 10  1993 ps*
       -rwxr-xr-x   1 root     other        5056 Sep  4  1992 rm*
       -rwxr-xr-x   1 root     root       222208 Sep  7  1992 sh*
       -rws--x--x   1 root     root        16464 Jan 16  1993 su*
       -rwxr-xr-x   1 root     root         1204 Sep 17  1992 sync*
       -rwxr-xr-x   1 root     root         6188 Apr 17  1993 umount*

       /mnt/dev:
       total 72
       -rwxr-xr-x   1 root     root         8331 Mar 14  1993 MAKEDEV*
       lrwxrwxrwx   1 root     root            4 Jun 11 23:24 console -> tty0
       crw-rw-rw-   1 root     tty        5,  64 Apr  1  1993 cua0
       crw-rw-rw-   1 root     tty        5,  65 Mar 19 19:35 cua1
       crw-rw-rw-   1 root     tty        5,  66 Apr 10  1993 cua2
       crw-rw-rw-   1 root     tty        5,  67 Apr 10  1993 cua3
       brw-r--r--   1 root     root       2,   0 Aug 29  1992 fd0
       brw-r--r--   1 root     root       2,  12 Aug 29  1992 fd0D360
       brw-r--r--   1 root     root       2,  16 Aug 29  1992 fd0D720
       brw-r--r--   1 root     root       2,  28 Aug 29  1992 fd0H1440
       brw-r--r--   1 root     root       2,  12 Aug 29  1992 fd0H360
       brw-r--r--   1 root     root       2,  16 Aug 29  1992 fd0H720
       brw-r--r--   1 root     root       2,   4 Aug 29  1992 fd0d360
       brw-r--r--   1 root     root       2,   8 Jan 15  1993 fd0h1200
       brw-r--r--   1 root     root       2,  20 Aug 29  1992 fd0h360
       brw-r--r--   1 root     root       2,  24 Aug 29  1992 fd0h720
       brw-r--r--   1 root     root       2,   1 Aug 29  1992 fd1
       brw-r--r--   1 root     root       2,  13 Aug 29  1992 fd1D360
       brw-r--r--   1 root     root       2,  17 Aug 29  1992 fd1D720
       brw-r--r--   1 root     root       2,  29 Aug 29  1992 fd1H1440
  brw-r--r--   1 root     root       2,  13 Aug 29  1992 fd1H360
  brw-r--r--   1 root     root       2,  17 Aug 29  1992 fd1H720
  brw-r--r--   1 root     root       2,   5 Aug 29  1992 fd1d360
  brw-r--r--   1 root     root       2,   9 Aug 29  1992 fd1h1200
  brw-r--r--   1 root     root       2,  21 Aug 29  1992 fd1h360
  brw-r--r--   1 root     root       2,  25 Aug 29  1992 fd1h720
  brw-r-----   1 root     root       3,   0 Aug 29  1992 hda
  brw-r-----   1 root     root       3,   1 Aug 29  1992 hda1
  brw-r-----   1 root     root       3,   2 Aug 29  1992 hda2
  brw-r-----   1 root     root       3,   3 Aug 29  1992 hda3
  brw-r-----   1 root     root       3,   4 Aug 29  1992 hda4
  brw-r-----   1 root     root       3,   5 Aug 29  1992 hda5
  brw-r-----   1 root     root       3,   6 Aug 29  1992 hda6
  brw-r-----   1 root     root       3,   7 Aug 29  1992 hda7
  brw-r-----   1 root     root       3,   8 Aug 29  1992 hda8
  brw-r-----   1 root     root       3,  64 Aug 29  1992 hdb
  brw-r-----   1 root     root       3,  65 Aug 29  1992 hdb1
  brw-r-----   1 root     root       3,  66 Aug 29  1992 hdb2
  brw-r-----   1 root     root       3,  67 Aug 29  1992 hdb3
  brw-r-----   1 root     root       3,  68 Aug 29  1992 hdb4
  brw-r-----   1 root     root       3,  69 Aug 29  1992 hdb5
  brw-r-----   1 root     root       3,  70 Aug 29  1992 hdb6
  brw-r-----   1 root     root       3,  71 Aug 29  1992 hdb7
  brw-r-----   1 root     root       3,  72 Aug 29  1992 hdb8
  crw-r-----   1 root     kmem       1,   2 Aug 29  1992 kmem
  crw-rw-rw-   1 root     root       6,   0 Aug 29  1992 lp0
  crw-rw-rw-   1 root     root       6,   1 Aug 29  1992 lp1
  crw-rw-rw-   1 root     root       6,   2 Aug 29  1992 lp2
  crw-r-----   1 root     sys        1,   1 Aug 29  1992 mem
  lrwxrwxrwx   1 root     root            4 Jun 11 23:24 mouse -> cua1
  crw-rw-rw-   1 root     root      27,   4 Jul 31  1994 nrft0
  crw-rw-rw-   1 root     root      27,   5 Jul 31  1994 nrft1
  crw-rw-rw-   1 root     root      27,   6 Jul 31  1994 nrft2
  crw-rw-rw-   1 root     root      27,   7 Jul 31  1994 nrft3
  crw-------   1 root     root       9, 128 Jan 23  1993 nrmt0
  crw-rw-rw-   1 root     root       1,   3 Aug 29  1992 null
  crw-r-----   1 root     root       6,   0 Aug 29  1992 par0
  crw-r-----   1 root     root       6,   1 Aug 29  1992 par1
  crw-r-----   1 root     root       6,   2 Aug 29  1992 par2
  crw-r-----   1 root     root       1,   4 Aug 29  1992 port
  crw-rw-rw-   1 root     root       4, 128 Jun 10 00:10 ptyp0
  crw-rw-rw-   1 root     root       4, 129 Apr 10 14:51 ptyp1
  crw-rw-rw-   1 root     root       4, 130 Aug 21  1994 ptyp2
  crw-rw-rw-   1 root     root       4, 131 Apr 12  1993 ptyp3
  crw-rw-rw-   1 root     tty        4, 132 Jan  3  1993 ptyp4
  crw-rw-rw-   1 root     tty        4, 133 Jan  3  1993 ptyp5
  crw-rw-rw-   1 root     tty        4, 134 Jan  3  1993 ptyp6
  crw-rw-rw-   1 root     tty        4, 135 Jan  3  1993 ptyp7
  crw-rw-rw-   1 root     tty        4, 136 Jan  3  1993 ptyp8
  crw-rw-rw-   1 root     tty        4, 137 Jan  3  1993 ptyp9
  crw-rw-rw-   1 root     tty        4, 138 Jan  3  1993 ptypa
  crw-rw-rw-   1 root     tty        4, 139 Jan  3  1993 ptypb
  crw-rw-rw-   1 root     tty        4, 140 Jan  3  1993 ptypc
  crw-rw-rw-   1 root     tty        4, 141 Jan  3  1993 ptypd
  crw-rw-rw-   1 root     tty        4, 142 Jan  3  1993 ptype
  crw-rw-rw-   1 root     tty        4, 143 Jan  3  1993 ptypf
  brw-rw----   1 root     root       1,   0 Jun  8 18:49 ram
  crw-rw-rw-   1 root     root      27,   0 Jul 31  1994 rft0
  crw-rw-rw-   1 root     root      27,   1 Jul 31  1994 rft1
  crw-rw-rw-   1 root     root      27,   2 Jul 31  1994 rft2
  crw-rw-rw-   1 root     root      27,   3 Jul 31  1994 rft3
  crw-------   1 root     root       9,   0 Jan 23  1993 rmt0
  brw-r-----   1 root     root       8,   0 Aug 29  1992 sda
  brw-r-----   1 root     root       8,   1 Aug 29  1992 sda1
  brw-r-----   1 root     root       8,   2 Aug 29  1992 sda2
  brw-r-----   1 root     root       8,   3 Aug 29  1992 sda3
  brw-r-----   1 root     root       8,   4 Aug 29  1992 sda4
  brw-r-----   1 root     root       8,   5 Aug 29  1992 sda5
  brw-r-----   1 root     root       8,   6 Aug 29  1992 sda6
  brw-r-----   1 root     root       8,   7 Aug 29  1992 sda7
  brw-r-----   1 root     root       8,   8 Aug 29  1992 sda8
  brw-r-----   1 root     root       8,  16 Aug 29  1992 sdb
  brw-r-----   1 root     root       8,  17 Aug 29  1992 sdb1
  brw-r-----   1 root     root       8,  18 Aug 29  1992 sdb2
  brw-r-----   1 root     root       8,  19 Aug 29  1992 sdb3
  brw-r-----   1 root     root       8,  20 Aug 29  1992 sdb4
  brw-r-----   1 root     root       8,  21 Aug 29  1992 sdb5
  brw-r-----   1 root     root       8,  22 Aug 29  1992 sdb6
  brw-r-----   1 root     root       8,  23 Aug 29  1992 sdb7
  brw-r-----   1 root     root       8,  24 Aug 29  1992 sdb8
  brw-------   1 bin      bin        8,  32 Jun 30  1992 sdc
  brw-------   1 bin      bin        8,  33 Jun 30  1992 sdc1
  brw-------   1 bin      bin        8,  34 Jun 30  1992 sdc2
  brw-------   1 bin      bin        8,  35 Jun 30  1992 sdc3
  brw-------   1 bin      bin        8,  36 Jun 30  1992 sdc4
  brw-------   1 bin      bin        8,  37 Jun 30  1992 sdc5
  brw-------   1 bin      bin        8,  38 Jun 30  1992 sdc6
  brw-------   1 bin      bin        8,  39 Jun 30  1992 sdc7
  brw-------   1 bin      bin        8,  40 Jun 30  1992 sdc8
  brw-------   1 bin      bin        8,  48 Jun 30  1992 sdd
  brw-------   1 bin      bin        8,  49 Jun 30  1992 sdd1
  brw-------   1 bin      bin        8,  50 Jun 30  1992 sdd2
  brw-------   1 bin      bin        8,  51 Jun 30  1992 sdd3
  brw-------   1 bin      bin        8,  52 Jun 30  1992 sdd4
  brw-------   1 bin      bin        8,  53 Jun 30  1992 sdd5
  brw-------   1 bin      bin        8,  54 Jun 30  1992 sdd6
  brw-------   1 bin      bin        8,  55 Jun 30  1992 sdd7
  brw-------   1 bin      bin        8,  56 Jun 30  1992 sdd8
  brw-------   1 bin      bin        8,  64 Jun 30  1992 sde
  brw-------   1 bin      bin        8,  65 Jun 30  1992 sde1
  brw-------   1 bin      bin        8,  66 Jun 30  1992 sde2
  brw-------   1 bin      bin        8,  67 Jun 30  1992 sde3
  brw-------   1 bin      bin        8,  68 Jun 30  1992 sde4
  brw-------   1 bin      bin        8,  69 Jun 30  1992 sde5
  brw-------   1 bin      bin        8,  70 Jun 30  1992 sde6
  brw-------   1 bin      bin        8,  71 Jun 30  1992 sde7
  brw-------   1 bin      bin        8,  72 Jun 30  1992 sde8
  crw-rw-rw-   1 root     root       5,   0 Apr 16  1994 tty
  crw-rw-rw-   1 grahamc  other      4,   0 Jun 11 23:21 tty0
  crw--w--w-   1 root     root       4,   1 Jun 11 23:23 tty1
  crw-rw-rw-   1 root     root       4,   2 Jun 11 23:21 tty2
  crw-rw-rw-   1 root     root       4,   3 Jun 11 23:21 tty3
  crw-rw-rw-   1 root     other      4,   4 Jun 11 23:21 tty4
  crw-rw-rw-   1 root     other      4,   5 Jun 11 23:21 tty5
  crw-rw-rw-   1 root     root       4,   6 Jun 11 23:21 tty6
  crw--w--w-   1 grahamc  other      4,   7 Apr 15  1993 tty7
  crw--w--w-   1 root     root       4,   8 Apr 15  1993 tty8
  crw-rw-rw-   1 root     root       4,  64 Mar 30  1993 ttyS0
  crw-rw-rw-   1 root     users      4,  65 Mar 31  1993 ttyS1
  crw-rw-rw-   1 root     root       4,  66 Jan 23  1980 ttyS2
  crw-rw-rw-   1 root     root       4, 192 Jun 10 00:10 ttyp0
  crw-rw-rw-   1 root     root       4, 193 Apr 10 14:51 ttyp1
  crw-rw-rw-   1 root     root       4, 194 Aug 21  1994 ttyp2
  crw-rw-rw-   1 root     root       4, 195 Apr 12  1993 ttyp3
  crw-rw-rw-   1 root     tty        4, 196 Jan  3  1993 ttyp4
  crw-rw-rw-   1 root     tty        4, 197 Jan  3  1993 ttyp5
  crw-rw-rw-   1 root     tty        4, 198 Jan  3  1993 ttyp6
  crw-rw-rw-   1 root     tty        4, 199 Jan  3  1993 ttyp7
  crw-rw-rw-   1 root     tty        4, 200 Jan  3  1993 ttyp8
  crw-rw-rw-   1 root     tty        4, 201 Jan  3  1993 ttyp9
  crw-rw-rw-   1 root     tty        4, 202 Jan  3  1993 ttypa
  crw-rw-rw-   1 root     tty        4, 203 Jan  3  1993 ttypb
  crw-rw-rw-   1 root     tty        4, 204 Jan  3  1993 ttypc
  crw-rw-rw-   1 root     tty        4, 205 Jan  3  1993 ttypd
  crw-rw-rw-   1 root     tty        4, 206 Jan  3  1993 ttype
  crw-rw-rw-   1 root     tty        4, 207 Jan  3  1993 ttypf
  -rw-------   1 root     root        63488 Mar 14  1993 ttys0
  crw-rw-rw-   1 root     root       4,  67 Oct 14  1992 ttys3
  crw-r--r--   1 root     root       1,   5 Aug 29  1992 zero

  /mnt/etc:
  total 108
  -rw-r--r--   1 root     root           94 May 30 06:15 fstab
  -rwx------   1 root     root        25604 Mar 17  1993 getty*
  -rw-------   1 root     root          566 Dec 30  1992 gettydefs
  -rw-rw-r--   1 root     shadow        321 Oct  3  1994 group
  -rwxr-xr-x   1 bin      bin          9220 Mar 17  1993 halt*
  -rw-r--r--   1 root     root           26 Feb 19 19:07 host.conf
  -rw-r--r--   1 root     root          506 Feb 19 19:07 hosts
  -rwxr-xr-x   1 bin      bin         17412 Mar 17  1993 init*
  -rw-r--r--   1 root     root         1354 Jun  3 23:42 inittab
  -rwxr-xr-x   1 root     root         1478 Mar 17 18:29 issue*
  -rw-rw----   1 root     shadow       5137 Dec  4  1992 login.defs
  -rw-r--r--   1 sysadmin bin            42 Mar 17 18:30 motd
  -rw-r--r--   1 root     shadow        525 Jun 11 23:24 passwd
  -rwxr-xr-x   1 root     root         1476 Aug 17  1994 profile*
  -rw-r--r--   1 root     root          715 Feb 19 19:02 protocols
  drwxr-xr-x   2 root     root         1024 May 30 06:05 rc.d/
  -rwxr-xr-x   1 bin      bin          9220 Mar 17  1993 reboot*
  -r--r--r--   1 bin      bin            57 Nov 28  1992 securetty
  -rw-r--r--   1 root     root         3316 Feb 19 19:01 services
  -rwxr-xr-x   1 bin      bin         13316 Mar 17  1993 shutdown*
  -rwxr-xr-x   1 root     root         3212 Apr 17  1993 swapoff*
  -rwxr-xr-x   1 root     root         3212 Apr 17  1993 swapon*
  -rw-r--r--   1 root     root          817 Jun 11 23:23 termcap
  -rwxr-xr-x   1 root     root         6188 Apr 17  1993 umount*
  -rw-r--r--   1 root     root        12264 Jun 11 23:22 utmp
  -rw-r--r--   1 root     root           56 Jun 11 23:22 wtmp

  /mnt/etc/rc.d:
  total 4
  -rwxr-xr--   1 root     root          450 May 30 06:05 rc.0*
  -rwxr-xr--   1 root     root          390 May 30 06:05 rc.K*
  -rwxr-xr--   1 root     root          683 May 30 06:06 rc.M*
  -rwxr-xr--   1 root     root          498 Jun 11 18:44 rc.S*

  /mnt/home:
  total 0

  /mnt/lib:
  total 287
  -rwxr-xr-x   1 root     root        17412 Jun 11 23:24 ld.so*
  lrwxrwxrwx   1 root     root           14 Jun 11 23:24 libc.so.4 -> libc.so.4.5.21*
  -rwxr-xr-x   1 root     root       623620 May 22  1994 libc.so.4.5.21*

  /mnt/lost+found:
  total 0

  /mnt/mnt:
  total 0

  /mnt/proc:
  total 0

  /mnt/root:
  total 0

  /mnt/sbin:
  total 15
  -rwxr-xr-x   1 root     root        16885 Jun 13  1994 update*

  /mnt/tmp:
  total 0

  /mnt/usr:
  total 1
  drwxr-xr-x   2 root     root         1024 May 30 05:49 bin/

  /mnt/usr/bin:
  total 217
  -rwxr-xr-x   1 root     root         1560 Sep 17  1992 basename*
  -rws--x--x   1 root     root         8232 Jan 16  1993 chsh*
  -rwxr-xr-x   1 root     root         1308 Jan 23  1980 clear*
  -rwxr-xr-x   1 root     other       91136 Sep  4  1992 elvis*
  -rwxr-xr-x   1 root     root        13252 Sep 17  1992 ls*
  -rwxr-xr-x   1 bin      bin         21504 Oct  2  1992 more*
  -rwxr-xr-x   1 root     other       91136 Sep  4  1992 vi*

  /mnt/util:
  total 0

  /mnt/var:
  total 3
  drwxr-xr-x   2 root     root         1024 May 30 05:58 adm/
  drwxr-xr-x   2 root     root         1024 Jun 11 23:24 logs/
  drwxr-xr-x   2 root     root         1024 Jun 11 23:24 run/

  /mnt/var/adm:
  total 0
  -rw-r--r--   1 root     root            0 May 30 05:58 utmp
  -rw-r--r--   1 root     root            0 May 30 05:58 wtmp

  /mnt/var/logs:
  total 0

  /mnt/var/run:
  total 0



  44..11..22..  LLiissttaattoo ddeellllaa ddiirreeccttoorryy ddii uunn UUttiilliittyy DDiisskk uussaannddoo llss--llRR



  total 15
  drwx------   2 root     root         1024 Jun 18 19:57 bin/
  drwxr-xr-x   2 root     root        12288 Jun 18 19:57 lost+found/
  drwx------   2 root     root         1024 Jun 18 19:57 sbin/
  drwxr-xr-x   4 root     root         1024 May  5 16:30 usr/

  /mnt/bin:
  total 13
  -rwxr-xr-x   1 root     root         3180 Apr 10  1993 free*
  -rwxr-xr-x   1 root     root        10687 Feb 10  1994 pwd*
  -rwx--x--x   1 root     root         3672 Nov 17  1992 rdev*

  /mnt/lost+found:
  total 0

  /mnt/sbin:
  total 18
  -rwxr-xr-x   1 root     root        16336 Jun 18 14:31 insmod*
  -rwxr-xr-x   1 root     root           68 Jun 18 14:31 lsmod*
  lrwxrwxrwx   1 root     root            6 Jun 18 19:57 rmmod -> insmod*

  /mnt/usr:
  total 2
  drwx------   2 root     root         1024 Jun 18 19:57 bin/
  drwxr-xr-x   3 root     root         1024 Jun 18 19:57 local/

  /mnt/usr/bin:
  total 411
  -rwxr-xr-x   1 root     bin        111616 Sep  9  1992 awk*
  -rwxr-xr-x   1 root     root        41984 Dec 23  1992 cpio*
  -rwxr-xr-x   1 root     root        50176 Dec 23  1992 find*
  -rwxr-xr-x   1 root     root       115712 Sep 17  1992 gawk*
  -rwxr-xr-x   1 root     bin         37888 Sep  4  1992 grep*
  -rwxr-xr-x   1 root     root        63874 May  1  1994 gzip*
  -rwxr-xr-x   1 root     root         2044 Sep 17  1992 kill*
  -rwx--x--x   1 root     root         3132 Jan 24  1993 mt*
  -rwxr-xr-x   1 root     root         3416 Sep 22  1992 strings*
  -rwxr-xr-x   1 root     other        3848 Sep  4  1992 who*

  /mnt/usr/local:
  total 1
  drwx------   2 root     root         1024 Jun 18 19:57 bin/

  /mnt/usr/local/bin:
  total 374
  -rwxr-xr-x   1 root     root       155542 Jun 18 17:07 ftape.o*
  -rwxr-xr-x   1 root     root       226308 Jun 13  1994 tar*



  44..22..  SSccrriipptt ddii SShheellll ppeerr CCrreeaarree uunn DDiisscchheettttoo


  Questi script di shell sono forniti solo come esempi. Io non li uso
  più perché ora uso e raccomando il pacchetto Bootkit di Scott Burkett
  per creare i dischetti di recupero. Bootkit è basato su questi script,
  e fa essenzialmente le stesse cose, ma è molto più semplice da usare.
  Comunque, questi esempi di script funzionano correttamente nel creare
  i dischetti.

  Ci sono due script disponibili:

  ·  mkroot - crea un disco root o boot/root.

  ·  mkutil - crea un disco utility.

  Entrambi sono configurati in modo da funzionare nella directory radice
  dei dischi boot_disk e util_disk, ognuna delle quali contiene contiene
  tutto ciò che deve essere copiato sul relativo disco.  Notate che
  questi script NON copiano automaticamente tutti i file per voi - voi
  decidete quali file copiare, create le directory e ci copiate questi
  file. Questi script di shell sono degli esempi che copiano il
  contenuto di queste directory.

  Entrambi gli script contengono delle variabili di configurazione
  all'inizio che gli permettono di essere facilmente configurati per
  funzionare dovunque. Primo, create le directory modello e copiate
  tutti i file richiesti in esse. Poi controllate le variabili di
  configurazione degli script e cambiatele come richiesto, prima di
  eseguire gli script.


  44..22..11..  mmkkrroooott -- CCrreeaa uunn ddiissccoo ddii RRoooott oo ddii RRoooott//BBoooott



  ______________________________________________________________________
  # mkroot: make a boot/boot disk - creates a boot/root diskette
  #       by building a file system on it, then mounting it and
  #       copying required files from a model.
  #       Note: the model to copy from from must dirst be set up,
  #       then change the configuration variables below to suit
  #       your system.
  #
  # usage: mkroot [nokernel]
  #       if the parameter is omitted, then the kernel and LILO
  #       are copied.

  # Copyright (c) Graham Chapman 1995. All rights reserved.
  # Permission is granted for this material to be freely
  # used and distributed, provided the source is acknowledged.
  # No warranty of any kind is provided. You use this material
  # at your own risk.

  # Configuration variables...
  BOOTDISKDIR=./boot_disk       # name of boot disk directory
  MOUNTPOINT=./mnt              # temporary mount point for diskette
  LILODIR=/sbin                 # directory containing lilo
  LILOBOOT=/boot/boot.b         # lilo boot sector
  LILOMSG=./lilo.msg            # lilo message to display at boot time
  LILOCONFIG=./lilo.conf        # lilo parms for boot/root diskette
  DISKETTEDEV=/dev/fd0          # device name of diskette drive

  echo $0: create boot/root diskette
  echo Warning: data on diskette will be overwritten!
  echo Insert diskette in $DISKETTEDEV and and press any key...
  read anything

  mke2fs $DISKETTEDEV
  if [ $? -ne 0 ]
  then
          echo mke2fs failed
          exit
  fi

  mount -t ext2 $DISKETTEDEV $MOUNTPOINT
  if [ $? -ne 0 ]
  then
          echo mount failed
          exit
  fi

  # copy the directories containing files
  for i in bin etc lib
  do
          cp -dpr $BOOTDISKDIR/$i $MOUNTPOINT
  done

  # copy dev *without* trying to copy the files in it
  cp -dpR $BOOTDISKDIR/dev $MOUNTPOINT

  # create empty directories required
  mkdir $MOUNTPOINT/proc
  mkdir $MOUNTPOINT/tmp
  mkdir $MOUNTPOINT/mnt
  mkdir $MOUNTPOINT/usr

  # copy the kernel
  if [ "$1" != "nokernel" ]
  then
          echo "Copying kernel"
          cp $BOOTDISKDIR/zImage $MOUNTPOINT
          echo kernel copied

          # setup lilo
          cp $LILOBOOT $MOUNTPOINT
          cp $LILOMSG $MOUNTPOINT
          $LILODIR/lilo -C $LILOCONFIG
          echo LILO installed
  fi

  umount $MOUNTPOINT

  echo Root diskette complete
  ______________________________________________________________________



  44..22..22..  mmkkuuttiill -- CCrreeaa uunn DDiissccoo ddii UUttiilliittyy



  ______________________________________________________________________
  # mkutil: make a utility diskette - creates a utility diskette
  #       by building a file system on it, then mounting it and
  #       copying required files from a model.
  #       Note: the model to copy from from must first be set up,
  #       then change the configuration variables below to suit
  #       your system.

  # Copyright (c) Graham Chapman 1995. All rights reserved.
  # Permission is granted for this material to be freely
  # used and distributed, provided the source is acknowledged.
  # No warranty of any kind is provided. You use this material
  # at your own risk.

  # Configuration variables...
  UTILDISKDIR=./util_disk       # name of directory containing model
  MOUNTPOINT=./mnt              # temporary mount point for diskette
  DISKETTEDEV=/dev/fd0          # device name of diskette drive

  echo $0: create utility diskette
  echo Warning: data on diskette will be overwritten!
  echo Insert diskette in $DISKETTEDEV and and press any key...
  read anything

  mke2fs $DISKETTEDEV
  if [ $? -ne 0 ]
  then
          echo mke2fs failed
          exit
  fi

  # Any file system type would do here
  mount -t ext2 $DISKETTEDEV $MOUNTPOINT
  if [ $? -ne 0 ]
  then
          echo mount failed
          exit
  fi

  # copy the directories containing files
  cp -dpr $UTILDISKDIR/bin $MOUNTPOINT

  umount $MOUNTPOINT

  echo Utility diskette complete
  ______________________________________________________________________



  55..  FFAAQQ


  55..11..  DD.. CCoommee ccrreeoo uunn bboooott ddiisskk ccoonn iill ddrriivveerr XXXXXX??

  Il modo più semplice è quello di prendere uno dei kernel precompilati
  distribuiti con la Slackware dal più vicino mirror site. I kernel
  della Slackware sono generici e includono il numero maggiore di driver
  per tutti i device possibili, e quindi se avete un controller SCSI o
  IDE, è probabile che il driver adatto sia incluso nel kernel della
  Slackware.

  Andate nella directory a1 e selezionate il kernel IDE o SCSI a seconda
  del controller che avete. Controllate il file xxxxkern.cfg per il
  kernel scelto e controllate quali driver sono stati inclusi nel
  kernel. Se il device che volete è in quella lista, allora il kernel
  corrispondente dovrebbe essere in grado di far partire il vostro
  computer. Scaricate il file xxxxkern.tgz e copiatelo nel vostro disco
  di boot che è descritto sopra nella sezione su come costruire un disco
  di boot.

  Dovete poi controllare il root device nel kernel, usando il comando
  rdev:



               rdev zImage



  Rdev vi mostrerà il root device corrente nel kernel. Se questo non è
  lo stesso che voi volete, allora usate rdev per cambiarlo.  Per esem­
  pio, il kernel che io ho provato era impostato su /dev/sda2, ma la mia
  partizione scsi root è /dev/sda8. Per usare un disco root, dovete
  usare questo comando:



               rdev zImage /dev/fd0



  Se volete sapere come costruire un disco root tipo Slackware, sappiate
  che questo non è un argomento coperto da questo HOW-TO perché fuori
  dallo scopo per cui è stato fatto questo documento, quindi vi sug­
  gerisco di leggere la Linux Install Guide o di prendervi una dis­
  tribuzione slackware. Consulate la sezione intitolata ``Referenze''
  per saperne di più.


  55..22..  DD.. CCoommee aaggggiioorrnnaarree iill mmiioo ddiissccoo ddii bboooott ccoonn uunn nnuuoovvoo kkeerrnneell??

  Copiate il kernel sul vostro disco di boot usando il comando dd per un
  disco di boot senza file system, o il comando cp per un disco
  boot/root. Fate riferimento alla sezione intitolata ``Boot'' per
  maggiori dettagli.


  55..33..  DD..  CCoommee ttoollggoo LLIILLOO iinn mmooddoo ddaa uussaarree iill DDOOSS ppeerr eesseegguuiirree iill
  bboooott ddeell DDOOSS nnuuoovvaammeennttee??

  Questa non è propriamente un argomento riguardante i dischi di boot,
  ma è fatta così spesso... La risposta è, usate il comando DOS:



               FDISK /MBR



  MBR sta per Master Boot Record, e rimpiazza il boot sector con uno di
  tipo DOS, senza toccare la tavola delle partizioni.  Alcuni non sono
  d'accordo con questo metodo, ma anche l'autore del LILO, Werner Almes­
  berger, lo suggerisce. È semplice e funziona.

  Potete usare anche il comando dd per copiare il backup salvato dal
  LILO del boot sector vecchio sul boot sector nuovo - fate riferimento
  alla documentazione del LILO se intendete usare questo metodo.
  55..44..  DD.. CCoommee ppoossssoo eesseegguuiirree iill bboooott ssee hhoo ppeerrssoo iill mmiioo kkeerrnneell __EE__ iill
  mmiioo ddiissccoo ddii bboooott??

  Se non avete un boot disk, allora la cosa più semplice da fare è
  procurarsi un kernel adatto dalla Slackware come descritto prima nella
  sezione ``Come creo un disco di boot con il driver XXX?''.  Potete
  quindi far partire il computer usando questo kernel, e poi riparare
  qualunque danno sia successo.


  Il kernel che avete preso potrebbe non avere il root device settato
  con il tipo di disco e la partizione che voi volete.  Per esempio, i
  kernel generici della Slackware per gli scsi hanno il root device
  settato a /dev/sda2, quando, invece, la mia partizione Linux si trova
  in /dev/sda8. In questo caso il root device del kernel deve essere
  cambiato.

  Potete cambiare il root device e i settaggi del ramdisk nel kernel
  anche se tutto ciò che avete è un kernel, e qualche altro sistema
  operativo come il DOS.

  Rdev cambia i parametri del kernel cambiando i valori in appositi
  punti del file immagine del kernel, in modo che potete fare lo stesso
  usando un semplice hex editor disponibile su qualunque sistema voi
  state usando - per esempio le Norton Utilities Disk Editor sotto DOS.
  Poi dovete controllare e se necessario, cambiare i valori nel kernel
  in questi punti:



       0x01F8  Low byte della grandezza del RAMDISK
       0x01F9  High byte della grandezza del RAMDISK
       0x01FC  Root minor device number - vedi sotto
       0X01FD  Root major device number - vedi sotto



  La grandezza di un ramdisk è il numero di blocchi di un ramdisk da
  creare. Se volete eseguire il boot da un disco root allora settatelo
  al decimale 1440, o 0x05A0, oltre ad impostare l'offset 0x01F8 a 0xA0
  e l'offset 0x01F9 a 0x05.  Questo allocherà sufficiente memoria per un
  disco da 1.4Mb.

  I numeri maggiori e minori dei device devono essere impostati sul
  device su cui voi volete che il root filesystem sia ``mountato''.
  Alcuni valori utili potrebbero essere:



       device          maggiore minore
       /dev/fd0            2     0   primo floppy drive
       /dev/hda1           3     1   partizione 1 sul primo drive IDE
       /dev/sda1           8     1   partizione 1 sul primo drive scsi
       /dev/sda8           8     8   partizione 8 sul primo drive scsi



  Una volta che avete settato questi valori, potete scrivere il file su
  un dischetto usando o il Norton Utilities Disk Editor, o un programma
  chiamato rawrite.exe. Questo programma è incluso in molte dis­
  tribuzioni, inclusa la distribuzione SLS e la Slackware.  È un pro­
  gramma DOS che scrive un file su un disco vergine (``raw''), partendo
  dal boot sector, invece di scriverlo sul file system.  Se usate le
  Norton Utilities, allora dovete scrivere il file su un disco fisico
  partendo dall'inizio del disco.


  55..55..  DD.. CCoommee ppoossssoo ffaarree ppiiùù ccooppiiee ddii uunn ddiisscchheettttoo bboooott//rroooott??

  Non è mai desiderabile avere un solo set di disci di recupero; 2 o 3
  copie dovrebbero essere mantenute nel caso che una non fosse
  leggibile.

  La via più semplice per creare delle copie di qualunque dischetto,
  inclusi i dischi di boot/root, è di usare il comando dd per copiare il
  contenuto del dischetto originale su un file sul vostro hard disk, e
  poi usare lo stesso comando per copiare il file su un nuovo dischetto.
  Notate che non avete, e non dovreste avere, bisogno di eseguire il
  mount dei dischi, perché dd scrive in maniere cruda sul device.

  Per copiare l'originale, usate il comando:



               dd if=device of=nomefile
               dove    device e` il nome del device del dischetto
               e       nomefile e` il nome di un file su cui volete copiarlo



  Per esempio, per copiare da /dev/fd0 su un file temporaneo
  /tmp/diskette.copy, userei il comando:



               dd if=/dev/fd0 of=/tmp/diskette.copy



  Omettendo il parametro ``count'', come abbiamo fatto noi ora,
  significa che il dischetto intero di 2880 blocchi sarà copiato.

  Per copiare il file risultante su un nuovo dischetto, inserite il
  nuovo dischetto e usate il comando inverso:



               dd if=nomefile of=device



  Notate che il discorso precedente assume che voi abbiate un solo
  floppy drive. Se ne avete due dello stesso tipo, potete copiare il
  dischetto usando il comando:



               dd if=/dev/fd0 of=/dev/fd1



  55..66..  DD.. CCoommee ppoossssoo eesseegguuiirree iill bboooott sseennzzaa ssccrriivveerree ooggnnii vvoollttaa
  ````aahhaaxxxxxxxx==nnnn,,nnnn,,nnnn''''??


  Quando un device non può essere riconosciuto automaticamente dal
  kernel, è necessario passargli un stringa di comando, come:



               aha152x=0x340,11,3,1



  Questo parametro può essere passato in molti modi usando LILO:

  ·  Scrivendolo sulla linea di comando ogni volta che si esegue il boot
     del sistema, via LILO. Ciò è comunque noioso.

  ·  Usando l'opzione di LILO ``lock'', in modo da memorizzare la linea
     di comando come la linea di comando di default; così facendo LILO
     userà la stessa linea di comando ogni volta.

  ·  Usando l'opzione APPEND nel file di configurazione del LILO.
     Notate che la linea di comando deve essere racchiusa da virgolette.

  Per esempio, una riga di comando d'esempio che usa il parametro lock,
  dovrebbe essere:



               zImage  aha152x=0x340,11,3,1 root=/dev/sda1 lock



  Questo dovrebbe passare la stringa per il device al kernel, oltre a
  settare il root device su /dev/sda1 e salva l'intero comando per riu­
  tilizzarlo in futuro.

  Un esempio dell'uso di APPEND è:


               APPEND = "aha152x=0x340,11,3,1"



  Notate che il parametro NON viene incluso nelle virgolette.

  Notate inoltre che per la stringa che passate al kernel usando il
  parametro APPEND, bisogna che il kernel stesso abbia il supporto per
  quel comando. In caso contrario dovrete ricompilare il kernel con il
  supporto per il device richiesto.  Per i dettagli su come ricompilare
  il kernel, cd su /usr/src/linux e leggete il file README, e leggete le
  LINUX FAQ e l'Installation HOWTO. Alternativamente potete ottenere un
  kernel generico che faccia al caso vostro.

  I lettori sono fortemente invitati a leggere la documentazione del
  LILO prima della sua installazione. Un uso incauto del parametro
  ``BOOT'' può danneggiare le partizioni.


  55..77..  DD.. CCoommee ccrreeoo uunn ffiilleessyysstteemm ssuu uunn ddiissccoo RRAAMM ppiiùù ccaappiieennttee??

  Un filesystem su un disco RAM è un filesystem residento su un disco in
  memoria che ha una capacità maggiore del disco di root dal quale è
  stato caricato. Questo può essere molto utile quando si usa Ftape, che
  richiede un controllo esclusivo del controller del floppy disk.

  Due cose sono richieste: creare un filesystem più capiente sul disco
  di root e poi applicare una ``patch'' al kernel in modo che sia in
  grado di caricare blocchi oltre la fine del dischetto.

  Due sono i metodi possibili:

  ·  Usare il parametro ``blocks'' del programma e2fsck per specificare
     quanto occupa il filesystem che volete non disco RAM. Per esempio:


               mke2fs /dev/fd0 3000



  creerà un filesystem su dischetto di 3000 blocchi da 1Kb.  Il dis­
  chetto ha solo 1440 blocchi, ma mke2fs funzionerà correttamente lo
  stesso. L'importante è non usare più di 1440 blocchi per i dati (per­
  mettendo l'uso di blocchi come ``inodes'' o riservati etc).

  ·  Creare una partizione sul vostro hard-disk capiente quanto il
     filesystem che intendete creare sul disco RAM. Poi creare un
     filesystem su questa partizione e mettervi i file che desiderate.
     Poi usate il comando dd per copiare  i primi 1440 blocchi sul
     dischetto, e poi controllare che non sia rimasto nessun file non
     copiato.  Per esempio:



               dd if=/dev/hdb of=/dev/fd0 bs=1024 count=1440
               dd if=/dev/hdb of=tailpart bs=1024 skip=1440
               cmp -l tailparm /dev/zero



  Scegliete una delle due; personalmente io preferisco la prima - sembra
  più facile e più sicura.

  La seconda cosa richiesta per avere un filesystem di maggior capienza
  è di far fermare il kernel alla fine fisica del disco quando tenta di
  caricare il dischetto di root nel disco RAM. Per fare questo bisogna
  apportare una piccola modifica al kernel nel driver per il disco RAM,
  che dovrebbe essere situato in /usr/src/linux/drivers/block/ramdisk.c.
  Il seguente ``patch'' è stato fatto da Bruce Elliot. È da applicare al
  kernel 1.2.0, ma dovrebbe essere facile applicarlo anche ai kernel più
  recenti.



  =================================================================
  X--- ramdisk.c~ Mon Jan 23 13:04:09 1995
  X+++ ramdisk.c  Mon May 29 00:54:52 1995
  X@@ -113,6 +113,7 @@
  X               (struct ext2_super_block *)&sb;
  X       int             block, tries;
  X       int             i = 1;
  X+      int             fblocks;
  X       int             nblocks;
  X       char            *cp;
  X
  X@@ -168,12 +169,16 @@
  X                                       nblocks, rd_length >> BLOCK_SIZE_BITS);
  X                       return;
  X               }
  X-              printk("RAMDISK: Loading %d blocks into RAM disk", nblocks);
  X+              fblocks = blk_size[MAJOR(ROOT_DEV)][MINOR(ROOT_DEV)];
  X+              if (fblocks > nblocks)
  X+                      fblocks = nblocks;
  X+              printk(``RAMDISK: Loading %d blocks into %d block filesystem "
  X+                                      "in RAM disk", fblocks, nblocks);
  X
  X               /* We found an image file system.  Load it into core! */
  X               cp = rd_start;
  X-              while (nblocks) {
  X-                      if (nblocks > 2)
  X+              while (fblocks) {
  X+                      if (fblocks > 2)
  X                               bh = breada(ROOT_DEV, block, BLOCK_SIZE, 0,  PAGE_SIZE);
  X                       else
  X                               bh = bread(ROOT_DEV, block, BLOCK_SIZE);
  X@@ -184,7 +189,7 @@
  X                       }
  X                       (void) memcpy(cp, bh->b_data, BLOCK_SIZE);
  X                       brelse(bh);
  X-                      if (!(nblocks-- & 15)) printk(``.'');
  X+                      if (!(fblocks-- & 15)) printk(``.'');
  X                       cp += BLOCK_SIZE;
  X                       block++;
  X                       i++;
  =================================================================



  Con questa modifica, il kernel si fermerà nel caricare alla fine
  fisica del disco, lasciando un filesystem più capiente del disco.

  Alcuni avvertimenti: io sono stato in grado di creare in questo modo
  un filesystem su un disco RAM di 3500 blocchi, ma provando con 3600 o
  più il kernel collassava con un errore come ``fixup table corrupt''.
  Non sono riuscito a evitare questa cosa, ma in ogni caso 3500 blocchi
  mi sembrano più che sufficienti.


  55..88..  DD.. AAllll''aattttoo ddeell bboooott,, rriivveevvoo uunn eerrrroorree ttiippoo AA:: ccaannnnoott eexxeeccuuttee BB
  .. PPeerrcchhéé??

  Ci sono diversi casi di programmi che sono chiamati da altri
  programmi.  Questi casi non avvengono sempre, ma possono spiegare
  perché un eseguibile apparentemente non può essere trovato su un
  sistema anche se potete vedere che è effettivamente presente.  Potete
  vedere se un programma chiama un altro programma usando il comando
  ``strings'' e filtrando l'output attreverso il programma grep.


  Esempi conosciuti sono:

  ·  Shutdown in diversi versioni chiama /etc/reboot, quindi reboot deve
     essere posto nella directory /etc.

  ·  Init ha causato problemi per almeno una persona, con il kernel che
     non riusciva a trovarlo.

     Per risolvere questi problemi, spostate i programma nelle directory
     corrette, o cambiate i file di configurazione (per esempio inittab)
     per puntare alla directory corrette. Se siete in dubbio, mettete i
     programmi nelle stesse directory in cui sono sul vostro disco
     fisso, e usate lo stesso inittab e i file contenuti in /etc/rc.d,
     così come appaiono sul vostro disco fisso.


  66..  RRiiffeerriimmeennttii

  In questa sezione, vvv è usato in un nome di un pacchetto al posto
  della versione, per evitare di riferirsi ad una versione specifica.
  Quando prendete un pacchetto, prendete sempre l'ultima versione a meno
  che non abbiate delle buoni ragioni per non farlo.


  66..11..  LLIILLOO -- LLiinnuuxx LLooaaddeerr

  Scritto da Werner Almesberger. eccellente boot loader, come del resto
  la documentazione che include informazioni sul contenuto del boot
  sector e i primi stadi del processo di boot.

  Ftp da: tsx-11.mit.edu:/pub/linux/packages/lilo/lilo.vvv.tar.gz anche
  sul sunsite e mirror sites.


  66..22..  LLiinnuuxx FFAAQQ ee HHOOWWTTOO

  Questi sono disponibili un po' dappertutto. Date una occhiata ai
  newsgroup di usenet news.answers e comp.os.linux.announce.

  Ftp da: sunsite.unc.edu:/pub/Linux/docs

  ·  Le FAQ sono in /pub/linux/docs/faqs/linux-faq

  ·  Gli HOWTO sono in /pub/Linux/docs/HOWTO

  Gli HOWTO tradotti in italiano si possono reperire via ftp da:
  ftp.unipd.it Per il WWW, partite dalla Linux documentation home page:



       http://sunsite.unc.edu/mdw/linux.html



  Se siete proprio disperati, mandate una mail a:


               mail-server@rtfm.mit.edu



  con la parola ``help'' nel messaggio, poi seguite le istruzioni che vi
  verranno spedite.

  Attenzione: se non avete letto le Linux FAQ e i documenti relativi
  come il Linux Installation HOWTO e il Linux Install Guide, allora non
  dovreste provare a creare un disco di boot.


  66..33..  PPaacccchheettttii ppeerr iill rreeccuuppeerroo


  66..33..11..  BBoooottkkiitt

  Scritto da Scott Burkett. Bootkit fornisce un metodo, tramite menu a
  tendine, per gestire la creazione di dischi di recupero.  Questo usa
  il programma Dialog per creare dei menu, e un albero delle directory
  per definire quello che sarà il contenuto dei dischi di recupero. Il
  pacchetto contiene anche un esempio dei file principali necessari. Il
  pacchetto fornisce solamente una struttura di supporto; è dovere
  dell'utente decidere quale sarà il contenuto dei dischi e, in accordo,
  sistemare i file di configurazione.  Per gli utenti che non hanno
  problemi a fare ciò, è un ottima scelta.  Io stesso uso questo
  pacchetto.

  Ftp da: sunsite.unc.edu:/pub/Linux/system/Recovery/Bootkit-vvv.tar.gz


  66..33..22..  CCaattRReessccuuee

  Scritto da Oleg Kibirev. Questo pacchetto mira a salvare spazio sui
  dischi di recupero usando intensivamente la compressione, e
  implementando gli eseguibili come script di shell.  La documentazione
  inclusa, comprende alcuni suggerimenti su cosa fare in vari situazioni
  disastrose :-).

  Ftp da: gd.cs.csufresno.edu:/pub/sun4bin/src/CatRescue100.tgz


  66..33..33..  SSccrriipptt ddii SShheellll ppeerr iill RReeccuuppeerroo

  Scritti da Thomas Heiling. Sono script che producono disco root/boot.
  Questi però dipendono dalle versioni di qualche altro software come
  LILO, e quindi potreste avere qualche problema per adattarli al vostro
  sistema, ma potrebbero essere utili come punto di partenza se vi
  interessano degli script molto più completi di quelli presentati in
  questo documento.

  Ftp da: sunsite.unc.edu:/pub/Linux/system/Recovery/rescue.tgz


  66..33..44..  SSAARR -- SSeeaarrcchh aanndd RReessccuuee

  Scritto da Karel Kubat. SAR produce un disco di recupero, usando
  diversi metodi per ridurre lo spazio occupato su disco.  Il manuale
  include una descrizione dei processi di boot e di login del Linux.

  Ftp da: ftp.icce.rug.nl:/pub/unix/SAR-vvv.tar.gz

  Il manuale è    disponibile via WWW in:

  http://www.icce.rug.nl/karel/programs/SAR.html


  66..44..  DDiissttrriibbuuzziioonnee SSllaacckkwwaarree

  A parte il fatto che è una delle più popolari distribuzioni Linux che
  si trovano in giro, è anche un buon posto dove trovare un kernel
  generico. È disponibile praticamente ovunque, quindi non servirebbe
  scrivere qui gli indirizzi.