File system e dischi su Linux

L'organizzazione del file system su GNU/Linux (ed altri sistemi Unix) è molto diversa rispetto a quello a cui potreste essere abituati (il modo utilizzato da Windows per fare le cose). Prima di tutto, su Linux non abbiamo il disco virtuale C:, D:, ecc. Tutti i dischi e le risorse disponibili sono posizionate nell'albero delle cartelle, sotto il magico /, chiamata cartella root (da non confondere con l'utente root - sono cose totalmente diverse).

Cose principali - dove sono i files dei miei Programmi?

Se sul nostro disco abbiamo alcune partizioni, le montiamo in una cartella a nostra scelta. Per esempio, se vogliamo che una specifica partizione sia la nostra cartella home, la dobbiamo montare come /home. E via dicendo. La stessa cosa va fatta per le risorse esterne, tipo floppy disks, CD-ROMs o chiavette USB. Nel rispetto degli standard FHS, dovrebbero essere montati sotto la cartella /media. Ad es. /media/cdrom0, /media/fd0, ecc. Nei vecchi sistemi, queste periferiche vengono spesso montate direttamente sotto la directory root oppure sotto la cartella /mnt. I collegamenti sono in genere creati in questi posti.

C'è anche un'altra differenza a proposito della posizione delle applicazioni installate. A causa della grande modularità dei pacchetti Linux (molte applicazioni non sono indipendenti ma richiedono invece altri programmi per poter funzionare correttamente), i programmi non sono generalmente installati in cartelle separate (come la cartella "Programmi" e le sue sottocartelle). I file vengono messi in posizioni predefinite all'interno dell'albero delle directory, per cui possono essere facilmente trovati da altre applicazioni. Il discorso è particolarmente valido per le librerie dinamiche ed i file eseguibili. Quindi, al posto della famosa cartella "Programmi", abbiamo delle cartelle separate: bin per i binari, lib per le librerie, doc per la documentazione, e molte altre utilizzate per specifiche esigenze.
Una descrizione dettagliata degli standard FHS specifica quale sia la gerarchia da seguire: Filesystem Hierarchy Standard

Questo è quanto riguardo alla teoria. Ora passiamo alla pratica. La tabella sottostante rappresenta il famoso file system di Windows con le sue posizioni e le loro controparti in Linux.

Le principali posizioni delle cartelle nel sistema

MS Windows GNU/Linux
Root C:\ /
Cartella Home C:\Documents and settings\USER\My documents (XP) o C:\Users\USER (Vista) /home/USER (ad es. /home/zdzisiek)
File di configurazione nascosti, accessibili da regedit /etc
File di sistema C:\Windows Binari: /bin, /sbin; Libreire: /lib
Applicazioni installate C:\Program Files Binari: /usr/bin, /usr/local/bin, ecc; Librerie: /usr/lib, /usr/local/lib, /usr/share/lib, ecc; Documentazione: /usr/share/doc/, /usr/doc, ecc
CD-ROM D:\ (o un altro drive virtuale /media/cdrom (oppure /mnt/cdrom o ancora /cdrom)
Floppy drive A:\ /media/fd0 (oppure /mnt/fd0 o ancora /floppy)

Gestire le partizioni e i dischi (/etc/fstab)

Nell'articolo [http://www.tuxfiles.org/linuxhelp/fstab.html How to edit and understand /etc/fstab i punti principali dei file di Linux vengono descritti in dettaglio. Qua proviamo soltanto a fornirvi le basi.

In generale, in /etc/fstab, diciamo al file system quali risorse (dischi, partizioni, periferiche esterne e file di sistema condivisi) vogliamo usare. Le risorse possono essere montate durante l'avvio del sistema oppure manualmente (opzione auto/nonauto).

Montare dischi - perché devo farlo?

Non dovete farlo - volete farlo
In Linux, tutte le risorse necessitano di essere montate prima di essere utilizzate e smontate prima di essere espulse (se è possibile). In Windows non è diverso (lo fa semplicemente in automatico in background). Anche Linux può farlo automaticamente ma avete una scelta. Nelle distribuzioni adatte ai principianti, la maggior parte delle principali risorse tipo CD-ROM e chiavette USB sono montate dal sistema. Dobbiamo pertanto capire come fare le cose manualmente, giusto nel caso che, per qualche motivo, le cose non dovessero funzionare.

Il comando chiave è mount. Quando utilizzato insieme ad una cartella presente in /etc/fstab, ad esempio

mount /media/cdrom

allora monta questa risorsa. In modo simile,

umount /media/cdrom

smonterà la risorsa o periferica.

Come montare una partizione Windows?

Windows supporta due tipologie di file system: FAT - vecchio e molto primitivo ma ben supportato sotto Linux (accesso in lettura e scrittura senza problemi), e NTFS che è più elaborato ma anche non molto ben supportato in quanto le specifiche sono mantenute segrete (quindi, di default è a sola lettua). Se abbiamo proprio bisogno dell'accesso in scrittura per partizioni NTFS, dobbiamo installare un programma esterno, ad es. http:/Captive NTFS - il quale purtroppo non è più sviluppato.

Per poter montare una partizione Windows dobbiamo prima sapere come questa viene vista dal sistema Linux. Per far questo possiamo utilizzare il programma fdisk:

# fdisk -l /dev/hda

Disk /dev/hda: 60.0 GB, 60011642880 bytes
255 heads, 63 sectors/track, 7296 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Device Boot     Start         End      Blocks   Id  System
/dev/hda1           1        1211     9727326    7  HPFS/NTFS
/dev/hda2        1216        7296    48845632+   5  Extended
/dev/hda5   *    1216        3040    14648224+  83  Linux
/dev/hda6        3041        3679     5132736    b  W95 FAT32
/dev/hda7        3680        4049     2971993+  83  Linux
/dev/hda8        4050        4319     2168743+  82  Linux swap
/dev/hda9        4320        7296    23908216+  83  Linux

Ci viene così mostrato l'intero hard disk primario (/dev/hda) con tutte le partizioni ed i nomi delle periferiche. Su questo disco possiamo notare due partizioni Windows. Una è hda1 (NTFS), l'altra è hda6 (FAT32). Quindi, per poterle montare, è sufficiente digitare:

# mount -t ntfs /dev/hda1 /mnt/C
# mount -t vfat /dev/hda1 /mnt/D

Adesso abbiamo quindi accesso ad entrambe le partizioni situate nella cartella /mnt. Si noti che bisogna creare le cartelle /mnt/C e /mnt/D prima di poterci montare all'interno una qualche risorsa.

Ok, ma questo metodo di montare le partizioni ha almeno due punti deboli: dobbiamo farlo manualmente, e soltanto l'utente root avrà accesso alle partizioni. Possiamo quindi fare un passo avanti e definire queste partizioni nel nostro magico file /etc/fstab file, in tal modo il sistema le monterà automaticamente, avendo anche cura di assegnare i relativi permessi. Il tutto dovrebbe assomigliare a questo:

/dev/hda1       /mnt/hda1       ntfs    
ro,uid=1000,gid=1000 0 2
/dev/hda6       /mnt/hda6       vfat    
rw,codepage=852,uid=1000,gid=1000, iocharset=iso8859-2 0 2

Le opzioni rw e ro significano rispettivamente lettura/scrittura e sola lettura. Le opzioni uid e gid specificano che solo l'utente con uid=100 o un membro di uno specifico gruppo (identificato da gid=1000) potrà avere l'accesso completo alla partizione (tali numeri possono essere trovati nel file /etc/group). Per le partizioni FAT32 possiamo anche specificare una propria codifica in quanto i nomi dei suoi file sono codificati come caratteri dell'Europa Orientale (ovviamente non è obbligatorio).

Come montare una chiavetta USB?

E' abbastanza semplice. In molte distribuzioni viene effettuato automaticamente grazie a HAL e udev. L'icona della periferica USB dovrebbe apparire sul desktop e possiamo così immediatamente copiarci dei file all'interno. Se comunque non dovesse succedere nulla, non preoccupatevi

Le chiavette USB sono solitamente visibili come periferiche virtuali sotto /dev/sda1 o /dev/sdb1 (storicamente periferiche SCSI). Basta allora digitare all'interno di un terminale:

mount -t vfat /dev/sda1 /mnt/pendrive

e la chiavetta sarà montata sotto /mnt/pendrive (sempre che la cartella esista). Possiamo rendere automatico questo procedimento aggiungendo la seguente riga al nostro /etc/fstab:

/dev/sda1  /mnt/pendrive vfat uid=1000,gid=1000,exec,rw, 
codepage=852,iocharset=iso8859-2 0 0

Ora, per poter montare una chiavetta USB, basta digitare mount /mnt/pendrive o cliccare sull'icona della periferica all'interno del nostre file manager preferito (ad es. nautilus o konqueror). Se sulla nostra chiavetta abbiamo dei caratteri non-ASCII, sarà necessario specificare una codifica (ad es. per le lingue dell'Europa Orientale). Stiamo dando per scontato che il file system type utilizzato sulla chiavetta sia FAT32 (che è quello di default per la maggiornaza delle chiavette). Possiamo ovviamente utilizzare qualsiasi file system supportato dalla nostra chiavetta, incluso reiserfs o xfs.

Maggiori informazioni sui file system e il montaggio di periferiche sotto GNU/Linux

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.