Repository 32bit  Forum
Repository 64bit  Wiki

Configurare fstab

Da Slacky.eu.
Versione delle 19:11, 21 ago 2008, autore: Conraid (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)


Vedremo in questo breve how-to come modificare il file /etc/fstab


Indice

1. Introduzione

Nei sistemi GNU/Linux fstab è un file di configurazione che si trova all'interno della cartella /etc (secondo lo standard FHS) ed il cui proprietario è l'utente root, ed indica i dispositivi che devono essere montati con le rispettive opzioni.

/etc/fstab è il file che il programma di avvio init va a leggere quando deve montare i dischi ed è pertanto di importanza fondamentale. Per questo è sicuramente utile saper configurare a mano il file /etc/fstab, dove andranno indicate tutte le risorse necessarie all'avvio e al funzionamento del pc e quelle di uso più frequente.


2. Disclaimer

Si usino le informazioni di questo documento a proprio rischio. L'autore di questa guida, i suoi collaboratori, slackers.it e slacky.eu non si riterranno responsabili di eventuali danni provocati al vostro computer. L'uso dei concetti, esempi o altro contenuto di questo documento è completamente a proprio rischio.

Si raccomanda di fare un backup prima di effettuare modifiche al file /etc/fstab


3. Cenni sulle partizioni

Per iniziare spieghiamo brevemente come vengono assegnati i nomi alle partizioni in un sistema Linux.

L'idea di un drive in Linux è molto diversa da quella di un drive sotto 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.

Linux si riferisce ai drive fisici (come ad esempio il drive del floppy da 3.5) come file nella directory /dev. Per esempio, il primo drive (chiamato A: in Windows) è /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 drive. I file corrispondenti ai drive fisici nella directory /dev contengono un "hd" (hard drive) o "sd" (SATA 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 i dispositivi IDE, anche se adesso meno utilizzati, bisogna parlare brevemente della suddivisione in "canali", che a volte rende le cose meno semplici da capire. Sulla scheda madre, ci sono normalmente due canali IDE: primario e secondario.

Ognuno di loro può ospitare un dispositivo per la gestione di dati, Hard Disk (HD), Cd-Rom, e così via, i quali vanno montati come master o slave.

Le periferiche IDE hanno i seguenti nomi:


  • Primary Master: /dev/hda
  • Primary Slave: /dev/hdb
  • Secondary Master: /dev/hdc
  • Secondary Slave: /dev/hdd


Eventuali partizioni dell'HD vengono poi numerate ed avranno nomi tipo:


  • /dev/hda1 (prima partizione del primary master)
  • /dev/hdc4 (quarta partizione del secondary master)


Per gli hard disk e le altre periferiche SATA il discorso è diverso, infatti il concetto di master e slave è stato superato, ma ci basta sapere che questi dispositivi avranno nomi come /dev/sda, /dev/sdb, etc...

Anche in questo caso però eventuali partizioni dell'HD avranno nomi tipo:


  • /dev/sda1 (prima partizione della prima periferica SATA)
  • /dev/sdc4 (quarta partizione della quarta periferica SATA)


Per una spiegazione dettagliata sull'uso dei nomi dei drive e delle partizioni in un sistema Linux, e per la descrizione di sistemi con più controller, si rimanda ad altri testi.


4. Formato

Tutte le informazioni riguardanti un filesystem vengono elencate in una riga, a sua volta divisa in sei colonne.

Il formato di ogni riga è:

[device] [mountpoint] [filesystem type] [options] [dump freq] [fsck order]


  • La prima colonna indica il nome del device che ospita il filesystem.
  • La seconda indica la directory (mount point) alla quale verrà collegato il device.
  • La terza indica il tipo di filesystem.
  • Nella quarta vengono elencate le opzioni desiderate, da passare al comando mount separate da una virgola.
  • La quinta indica se il filesystem deve venire preso in esame dal comando dump per un backup.
  • Nell'ultima troviamo la sequenza con cui il comando fsck deve seguire i controlli sull' integrità degli stessi.


Con il carattere # è possibile commentare Vediamo adesso un esempio pratico di un sistema Linux che ha la root ( / ) in /dev/hda2


# Filesystem di HD interni al sistema
/dev/hda5 swap swap sw
/dev/hda2 / ext3 defaults 1 1
/dev/hda1 /boot ext2 defaults 1 2
/dev/hda3 /home reiserfs defaults 1 2
# Filesystem di Windows, sempre di HD interni al sistema
/dev/hdc1 /mnt/ntfs ntfs-3g auto,users,locale=it_IT@euro,noexec,nosuid 0 0
/dev/hdc2 /mnt/dati vfat users,umask=0000,noexec,nosuid,noauto 0 0
# Filesystem di periferiche mobili
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro,users 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,users 0 0
# Filesystem virtuali
proc /proc proc defaults 0 0
none /sys sysfs defaults 0 0
# Filesystem remoti
nfsserver:/vol/vol1 /mnt/filer nfs defaults 0 0
//samba/share /mnt/samba smbfs rw,credentials=/etc/credentials.txt  0  0


Vediamo adesso sezione per sezione

4.1 Device (fs_spec)

La prima colonna indica il nome del device che ospita il filesystem, ovvero la locazione fisica dove risiede il filesystem, es.

  • /dev/hda - L'HD master connesso al canale IDE primario, Primary Master
  • /dev/hda1 - La prima partizione del Primary Master.
  • /dev/hdb1 - La prima partizione del Primary Slave
  • /dev/hdc2 - La seconda partizione del Secondary Master
  • /dev/fd0 - Primo floppy drive
  • //samba/share - Volume remoto di un server Samba
  • proc - Filesystem virtuale, cioè creato al momento dell'avvio dal kernel Linux

Oltre all'uso del nome del device questa sezione può contenere altri due valori.

  • Una LABEL, cioè un etichetta data al filesystem
  • Un UUID, cioè un identificativo univoco della partizione

L'uso della LABEL o dell'UUID, è utile nel caso si cambi la disposizione fisica degli Hard Disk all'interno del sistema, per aggiugnere o rimuovere Hard Disk, per evitare i casi in cui, con i nuovi controller SATA, il kernel assegni un nome diverso al drive in base a come è stato compilato o avviato, e così via. Infatti utilizzando la LABEL o l'UUID si ha il vantaggio che queste operazioni non hanno effetto su quello che viene montato.

Il formato da utilizzare al posto del device name è il seguente:

LABEL=<label>
UUID=<uuid>

Dove:

  • <label> è un semplice nome, es. SLACKROOT
  • <uuid> è un numero identificato tipo 4a8be9ff3d944-324d-547f3b25f05d64


Sia la LABEL sia l'UUID si possono trovare tramite il comando vol_id o il comando blkid. Per esempio:

# vol_id /dev/hda2
ID_FS_USAGE=filesystem
ID_FS_TYPE=ext3
ID_FS_VERSION=1.0
ID_FS_UUID=4a8be9ff3d944-324d-547f3b25f05d64
ID_FS_UUID_ENC=4a8be9ff3d944-324d-547f3b25f05d64
ID_FS_LABEL=SLACK
ID_FS_LABEL_ENC=SLACK
ID_FS_LABEL_SAFE=SLACK
# blkid /dev/hda2
/dev/hda2: LABEL="SLACK" UUID="4a8be9ff3d944-324d-547f3b25f05d64" TYPE="ext3"

Si può anche usare il comando blkid senza specificare il device, in questo caso il comando mostrerà la LABEL e l'UUID di tutti i volumi trovati nel sistema.

Quindi la riga

/dev/hda2 / ext3 defaults 1 1

dell'esempio sopra diventerebbe una di queste due (naturalmente non vanno usate in contemporanea).

LABEL="SLACK" / ext3 defaults 1 1
UUID="4a8be9ff3d944-324d-547f3b25f05d64" / ext3 defaults 1 1


4.2 Mount Point (fs_file)

Il mount point, letteralmente "punto di montaggio", è la directory nella quale verrà "montato" il filesystem, cioè dove sarà disponibile nell'albero delle directory (va sempre indicata partendo dalla root) il contenuto del filesystem specificato. Per esempio

  • /home
  • /mnt/floppy
  • /media/cdrom

Nota bene: La directory deve esistere e deve essere indicata tramite il percorso assoluto.


4.3 Filesystem (fs_vfstype)

Questo parametro specifica il tipo di filesystem usato dal device. Normalmente sarà iso9660 per i CD e ext2/ext3/reiserfs per gli HD. Come abbiamo visto nell'esempio sopra possono esserci anche filesystem virtuali o di rete. Se non si conosce il tipo di filesystem si può provare ad usare l'opzione auto.

Vediamo vari esempi:

  • auto - riconosce automaticamente il File System della partizione (boot più lento ma è una garanzia)
  • ext2 - File System Standard di Linux (non è molto utilizzato ultimamente, anche se in alcuni casi rimani la scelta migliore)
  • ext3 - File System Journaling di Linux (il più utilizzato, il journaling evita che i dati subiscano danni in caso di arresto critico del sistema)
  • iso9660 - File System di supporti CD
  • nfs - Network File System
  • ntfs - Driver per NTFS di Windows compreso nel kernel Linux
  • ntfs-3g - Driver per NTFS di Windows esterno al kernel (Migliore del supporto compreso nel kernel, funziona egregiamente anche in scrittura)
  • proc - File System Virtuale con le informazioni dei processi
  • reiserfs - Altro File System Journaling di Linux
  • swap - Formattazione usata per il SWAP di Linux
  • vfat - FAT32 di Windows

Naturalmente possono essercene tanti altri, sia virtuali sia non, come xfs, sys, ext4, udf e tanti altri.


4.4 Opzioni generali del comando mount (fs_mntops)

Le opzioni da inserire sono molte, e variano anche in base al tipo di filesystem, qui ne elenchiamo alcune

  • async - Tutte le operazioni di input/output vengono eseguite in modo asincrono
  • atime - Aggiorna la data di accesso all' inode ad ogni accesso.
  • auto - Il filesystem può essere montato passando "-a" a mount. Solo i filesystem che contengono questa opzione vengono resi disponibili ad ogni avvio del pc
  • defaults - Usa le opzioni di defaults: rw,suid,dev,exec,auto,nouser,async
  • dev - Interpreta i device speciali presenti nel filesystem
  • exec - Permette di eseguire file binari nel filesystem
  • noauto - Il filesystem non viene montato in modo automatico, l' opzione "-a" di mount non influisce
  • noatime - Non aggiorna la data di accesso all' inode ad ogni accesso. Aumenta la velocità di accesso ai dati.
  • nodev - Non interpreta i device speciali presenti nel filesystem
  • noexec - Non permette di eseguire file binari nel filesystem
  • nosuid - I bit di setuid e setgid non vengono presi in considerazione
  • nosync - Tutte le operazioni di input/output vengono eseguite in modo sincrono
  • quiet - Tralascia gli errori sull'impossibilità di preservare i permessi durante la copia e lo spostamento da partizioni Linux
  • remount - Cerca di rieseguire il mount del filesystem già montato. Si usa per modificare le opzioni dello stesso
  • relatime - Aggiorna la data di accesso all'inode solo in caso di modifica dello stesso. In pratica la data viene aggiornata solametne se l'accesso all'inode è avvenuto prima dell'ultima modifica. (Simile all' opzione noatime, ma non va a "confondere" Mutt o altre applicazioni). In sostanza serve per le applicazioni che hanno bisogno di sapere se un file è stato letto dall' ultima modifica.
  • ro - Il filesystem viene montato in sola lettura (ReadOnly)
  • rw - Il filesystem viene montato in lettura-scrittura (ReadWrite)
  • suid - I bit di setuid e setgid vengono presi in considerazione
  • sw - Indica che si tratta di una partizione dedicata allo swap di Linux
  • user - Permette a un utente comune di montare il filesystem. Il nome dell'utente è scritto in mtab in modo che egli possa smontare il filesystem nuovamente. Questa opzione implica le opzioni: noexec, nosuid e nodev (a meno che si scavalcata da altre opzioni come exec, dev, suid).
  • nouser - Impedisce ai normali user di montare il filesystem. È l'opzione di default
  • users - Questa opzione permette ad ogni utente comune di montare e smontare il filesystem. Questa opzione implica le opzioni: noexec,nosuid,nodev a meno di opzioni diverse (leggi sopra)
  • _netdev - Il filesystem risiede su un device disponibile via rete. Evita che il sistema cerchi di montarlo prima che sia disponibile l accesso alla rete. È valido solo per filesystem nfs

Diamo anche un breve accenno alle opzioni sui permessi

  • gid=xxx - Indica i permessi di un gruppo con la logica del comando chmod (ogni x va da 0 a 7)
  • uid=xxx - indica i permessi dell'utente.
  • umask=xxx - Imposta i permessi di filesystem DA SOTTRARRE A QUELLI DI SISTEMA (con la logica chmod), per una umask=777 neanche l'utente root può cambiare i permessi a nessun file

Come detto esistono altre opzioni, comprese le opzioni specifiche per ogni filesystem. Per una spiegazione dettagliata si rimanda al manuale di mount e di chmod


4.5 Dump (fs_freq)

Il quinto campo è utilizzato dal comando dump per per determinare quali file system devono essere oggetto di backup. Se il quinto campo non è presente, viene considerato 0 di default e dump assumerà che il filesystem non deve essere oggetto di backup.

  • 0 - Non effettuerà back-up in questa partizione
  • 1 - Effettuerà back-up in questa partizione

Al giorno d'oggi il comando dump è poco utilizzato, nella Slackware non è presente di default, anche se c'è il simile dumpe2fs


4.6 fsck order (fs_passno)

Questo parametro è usato dal programma fsck per determinare in quale ordine i filesystem saranno controllati durante il processo di avvio del sistema.

I possibili valori sono

  • 0 - Non viene permesso il controllo a fsck
  • 1 - Viene controllato con alta priorità
  • 2 - Viene controllato con priorità secondaria

Il filesystem di root, cioè / , deve avere sempre valore 1, gli altri invece il valore 2 se si vuole controllarli e 0 in caso non vogliamo controllarli. Nel caso di valore 2 per più partizioni, se queste sono in drive diversi saranno controllate in parallelo, altrimenti saranno controllate sequenzialmente.

Naturalmente per i filesystem fisici residenti nel sistema è meglio impostare il valore a 2, mentre per quelli virtuali, per quelli di rete e per le periferiche esterne meglio lasciare a 0

Se il parametro non è presente viene considerato 0 di default


5. HAL+UDEV

Con l'avvento di HAL e UDEV è cambiato anche il modo di agire sul montaggio delle periferiche. Infatti non è più raro ormai nelle moderne distribuzioni Linux, e la Slackware non si sottrae a questo, di avere meccanismi di automounting per le periferiche esterne. In questo caso è consigliato non inserire le righe relative nel file /etc/fstab ma di lasciar fare ad HAL+UDEV il loro lavoro, e nel caso, configurare questi due software.


6. Collegamenti esterni


7. Conclusioni

Ci sarebbe molto altro da scrivere, ma questa è una guida per aiutare a capire un pochino di più il montaggio delle unità di gestione dei dati sotto Linux, senza avere troppe pretese.


8. Copyright

Copyright (c) 2008 by Corrado "Conraid" Franco.

Copyright (c) 2006 by NaVaJo.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is available from http://www.fsf.org/licenses/fdl.html.


Tutti i copyright sono di proprietà dei rispettivi detentori, a meno che indicato diversamente. L'uso di un termine in questo documento non inficia la validità di qualunque marchio di fabbrica o marchio di servizio. Nominare un particolare prodotto o marchio non deve essere considerato come pubblicità.


Autori: NaVaJo, Conraid

Strumenti personali
Namespace

Varianti