Avanti Indietro Indice

3. Capitolo II: Gestire i Drive

3.1 Drive multipli verso il concetto di drive singoli

L'idea di un drive in Linux e molto differente da quella di un driver sotto DOS/Windows. Il modo in cui Linux (e in generale UNIX) "vede" i drive è il seguente: Ogni drive fisico può essere diviso in partizioni e ogni partizione può essere "montata" in una directory.

Per questo motivo, non ci sono le lettere che identificano i drive come in DOS; non ci sono i drive A:, B:, C:, e così via. Gli utenti saranno in relazione solo con un drive. Ogni cosa è mostrata in termini di directory. Si potrebbe avere una partizione (chiamata anche filesystem) per la directory root e altri file (la directory /), un altro filesystem per i comandi degli utenti (la directory /usr) e un altro filesystem per lo spazio degli utenti (la directory /usr/users, /home, o /user). Per esempio, si possono avere tre partizioni da usare: Una è per la directory /, una è per la directory /usr, e la terza è per la directory /home.

Quando si cambia directory con il comando cd per entrare nelle directory /usr o /home o / o in ognuna delle loro sub-directory, è come quando si utilizza il comando cd dal DOS/Windows per passare a una sub-directory. Non si devono cambiare le lettere dei drive, basta solo usare cd e si entra in un determinato filesystem.

Usando questo sistema ci sono alcuni vantaggi. Primo, si può aumentare lo spazio totale del sistema. Se si nota che la sub-directory /usr/X11R6 richiede più spazio di quello che ha la directory /usr, si può creare un nuovo filesystem dalla partizione non usata del proprio drive e montare questa partizione come /usr/X11R6. Secondo, tutte le operazioni sui file sono invisibili sia all'utente che ai programmi dell'utente. Il DOS/Windows necessita di una lettera per il drive e una directory. Linux necessita solo di una directory.

Linux si riferisce ai drive fisici (come ad esempio il drive del floppy da 3.5 inch) come file nella directory /dev. Per esempio, il primo drive (chiamato A: in dos/win) è /dev/fd0 in Linux. fd si riferisce al fatto che è un drive floppy, e lo 0 significa che è il primo. Ci sono due modi per riferirsi agli HD: facendo riferimento al drive fisico (primo, secondo drive), o ad una partizione all'interno di un dirive. I file corrispondenti ai drive fisici nella directory /dev contengono un "hd" (hard drive), seguito da una "a" se si tratta del primo drive fisico, "b" se si tratta del secondo, etc. Segue un numero che specifica la partizione all'interno del drive fisico. La prima partizione è 1, la seconda partizione è 2, etc.

Per aiutare a familiarizzare con i concetti di Linux, ecco, di seguito, alcuni modi per indicare lo stesso drive in DOS/Windows e Linux:

    
        DOS                     LINUX

        A:                      /dev/fd0
        B:                      /dev/fd1
        C: (considerando la prima       /dev/hda1
            partizione sul 
           primo hard drive)
        E: (considerando la     /dev/hdb2
           seconda partizione sul
           secondo hard drive)

3.2 Creare un Filesystem Minix (mkfs, mount, umount, /etc/fstab)

Si può creare e usare un nuovo filesystem per Linux, se si dispone di altro spazio sul proprio drive fisico (hard disk) e se questo spazio è impostato come una partizione di Linux. Ciò avviene usando fdisk.

Ci sono due tipi differenti di filesystem che si possono usare, il filesystem minix e l'extended filesystem. Il Filesystem minix funziona ed è correntemente lo standard per i filesystem, ma ha una limitazione per i nomi dei file che possono raggiungere al massimo i 14 caratteri. Il filesystem extended può gestire i nomi dei file lunghi fino ai 255 caratteri, ma il codice non è stato perfezionato ed è ancora in beta testing. Il miglior formato per un filesystem è il minix. (1992)

Per creare un nuovo filesystem minix (o qualsiasi altro filesystem), è necessario conoscere la partizione e le dimensioni della partizione, in blocchi. Si possono trovare queste informazioni eseguendo fdisk e dando il comando 'p':

        # fdisk /dev/hdb
        Command (m for help): p

        Disk /dev/hdb: 8 heads, 35 sectors, 872 cylinders
        Units = cylinders of 280 * 512 bytes

           Device Boot  Begin   Start     End  Blocks   Id  System
        /dev/hdb1  *        1       1     615   86082+   7  OS/2 HPFS
        /dev/hdb2         616     616     872   35980   81  Linux/MINIX

        Command (m for help): 
In base a queste informazioni, ci sono due partizioni su questo drive fisico. La prima è una partizione OS/2, e l'altra è un filesystem minix. Per creare il filesystem su /dev/hdb2 (La seconda partizione sul secondo drive), si dovrà usare il programma mkfs fornendo le dimensioni della partizione indicate da fdisk ed usando l'opzione -c (check) per verificare l'esistenza di blocchi danneggiati:
        # mkfs -c /dev/hdb2 35980
Quando il filesystem è stato creato, lo si deve montare ed eventualmente copiarvi i dati necessari. Se, ad esempio, la partizione è per la directory /home e non si hanno ancora altri utenti, questo è già più facile. Ma se si vuole montare un nuovo filesystem da usare nella directory /usr/src, allora, in tal caso, c'è un pò di lavoro da svolgere per le impostazioni.

Assumeremo che si voglia aggiungere un filesystem a una directory che contiene già dei dati. Per esempio, la propria directory /usr/src e le sub-directory. La prima cosa che si deve fare è montare la propria nuova partizione in una directory dove si possono copiare i file, perchè non si possono avere due directory chiamate /usr/src. Così, si monterà il proprio filesystem nuovo su /mnt. La directory /mnt è usata principalmente per montare filesystem temporanei, come floppy disk o filesystem usati per il backup. Assumeremo anche che il proprio filesystem nuovo sia in /dev/hdb2. Per montare /dev/hdb2 nella directory /mnt, digitare:

        # mount /dev/hdb2 /mnt
Ora si possono copiare i file dalla directory /usr/src alla /mnt. Per copiare la directory /usr/src e le sue sub-directory, usare l'opzione -r (recursive) del programma cp:
        # cp -r /usr/src /mnt
E tutti i file presenti in /usr/src saranno copiati dentro la /mnt. Dopo di ciò, si deve "smontare" /dev/hdb2, rimuovere (cancellare) i file in /usr/src e quindi montare la nuova partizione /dev/hdb2 nella directory /usr/src:
        # umount /dev/hdb2
        # rm -r /usr/src/*
        # mount /dev/hdb2 /usr/src
Per avere /dev/hdb2 "montata" ogni volta che si riavvia Linux, si deve aggiungere una linea al file /etc/fstab. Il file /etc/fstab contiene una "tabella" con le seguenti voci: le partizioni dei drive, dove dovrebbero essere montate, il tipo di filesystem che tali partizioni usano.

Un esempio di file /etc/fstab potrebbe essere il seguente:

        /dev/hda2       /       minix   defaults
        /dev/hdb1       /usr    minix   defaults

La prima colonna elenca i device che si vogliono montare. La seconda colonna indica dove il filesystem dovrebbe essere montato. La terza colonna indica il tipo di filesystem, e l'ultima colonna dovrebbe essere impostata a 'defaults'.

Con questo file, ogni volta che si avvia Linux, /dev/hda2 sarà montata sulla root directory e /dev/hdb1 sarà montata sulla directory /usr. Tutto questo accade prima del log in, ed è gestito da un file chiamato /etc/rc, di cui parleremo a breve.

Se si vuole rimuovere un filesystem dal file /etc/fstab, prima è necessario assicurarsi che non sia una directory necessaria (come / oppure /lib) e assicurasi di essere comunque in grado di accedere ai file in caso di necessità.

A questo punto, basta rimuovere la riga in questione dal file /etc/fstab e usare umount per smontare il filesystem dal sistema.


Avanti Indietro Indice