4.11 La tabella dei filesystem /etc/fstab
La prima operazione di mounting dei filesystem è eseguita dal kernel, che “monta”
automaticamente la root directory, cioè la radice del directory tree. Il mounting di questa
directory è indispensabile per poter avviare il sistema. Quindi la procedura di avvio
provvede successivamente a montare gli altri filesystem indicati nel file /etc/fstab
(man page fstab(5)) (filesystem table) che contiene le relative impostazioni per il
mounting. Tale file è in formato testo e le righe al suo interno hanno la seguente
sintassi:
fs_spec fs_file fs_type mount_option freq stage
dove
-
fs_spec indica il dispositivo che contiene il filesystem da montare. In questo campo
è possibile indicare il file di dispositivo (es. /dev/hda2), l’etichetta del volume
(per i filesystem extX) (es. LABEL=/boot) o il suo UUID (es. UUID=3e6be9de-8139-
11d1-9106-a43f08d823a6). La possibilità di specificare l’etichetta, se da un lato
rende la gestione delle partizioni più flessibile - in quanto la sostituzione di un
disco (SCSI) cambia il dispostivo ma l’etichetta della partizione può essere la
stessa - dall’altro si deve prestare attenzione a non aggiungere al sistema dischi
con partizioni che hanno la stessa etichetta di quelli già presenti, specialmente se
l’etichetta si riferisce a partizioni chiave, come, ad esempio, la partizione di boot
o la root directory (infatti se ci sono due partizioni con la stessa etichetta non è
chiaro quale delle due partizioni viene montata!);
-
fs_file indica il mount-point nel quale montare il filesystem (per il filesystem di swap
questo campo dovrebbe contenere il valore none);
-
fs_type indica il tipo di filesystem (per i tipi di filesystem supportati si può vedere il
file /proc/filesystems). Se questo campo contiene il valore ignore, la riga viene
ignorata;
-
mount_option indica le opzioni per il mounting del filesystem. È composto da un elenco
di parole chiavi separate dal carattere ‘,’ come specificato in mount(8);
-
freq indica se il filesystem ha la necessità di essere processato dal comando dump (man
page dump(8)). Un valore 0 indica che il filesystem non ha bisogno di dump;
-
stage indica l’ordine in cui il filesystem deve essere controllato da fsck (durante la
procedura di avvio). Il campo stage relativo al filesystem montato nel mount-point
‘/’ (root directory), dovrebbe contenere il valore 1 che indica che si tratta del
primo filesystem che deve essere controllato, mentre gli altri filesystem dovrebbero
avere un valore più elevato (per cercare di ottimizzare i tempi, si può cercare di
far controllare più filesysstem in parallelo specificando per essi lo stesso valore - in
genere 2). Per i filesystem che non devono essere controllati, deve essere specificato
il valore 0;
L’ordine delle righe contenute nel file /etc/fstab è importante poiché i comandi fsck,
mount e umount scandiscono le righe contenute in tale file dalla prima all’ultima.
Un esempio del contenuto del file /etc/fstab è riportato di seguito.
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults 1 2
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/hda5 swap swap defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,kudzu,ro 0 0
/dev/hda1 /mnt/windows vfat defaults 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu 0 0
Una volta inserita la relativa riga nel file /etc/fstab, è possibile montare un filesystem
indicando soltanto il relativo mount-point. Ad esempio, facendo riferimento al contenuto del
file /etc/fstab precedentemente riportato, il comando
# mount /mnt/floppy
monta il filesystem relativo al dispositivo /fev/fd0 con le opzioni -t auto -o noauto,owner
in maniera equivalente al comando
# mount -t auto -o noauto,owner /dev/fd0 /mnt/floppy