Repository 32bit  Forum
Repository 64bit  Wiki

Configurare fstab: differenze tra le versioni

Da Slacky.eu.
 
 
(2 revisioni intermedie di un utente non mostrate)
Riga 1: Riga 1:
[[Category:Configurazione]]
[[Category:Configurazione]]
= Introduzione =
 
Sicuramente è utile saper configurare a mano il file di /etc/fstab, dove vengono indicati i filesystem utilizzati e le directory ad essi associate. Vanno indicate tutte le risorse necessarie all' avvio e al funzionamento del pc e quelle di uso più frequente.
 
Tutte le informazioni riguradanti un filesystem vengono elencate in una riga, a sua volta divisa in sei colonne. La prima colonna indica il device che ospita il filesystem. La seconda indica dove verrà collegato nell' albero delle directory. La terza, ne indica il tipo. 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 dum inserite.Nell' ultima troviamo la sequenza con cui il comando fsck deve seguire i controlli sull' integrità degli stessi. Il numero 1 deve essere assegnato al al filesystem di boot, mentre i restanti avranno il numero 2 il valore 0 permette di evitare ogni qualsiasi controllo automatico all' avvio.
+
Vedremo in questo breve how-to come modificare il file <strong>/etc/fstab</strong>
= Un esempio pratico =
 
<pre>/dev/hda5 swap swap defaults 0 0 (partizione dell' HD primario)
 
/dev/hda3 / reiserfs defaults 1 1 (altra partizione)
 
/dev/hdd5 /nava2 vfat defaults,users,noauto,rw 0 0 (secondo HD)
 
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro,users 0 0 (cdrom)
 
/dev/fd0 /mnt/floppy auto noauto,owner,users 0 0 (floppyDisk)
 
proc /proc proc defaults 0 0 (filesystem virtuale)</pre>
 
Prendiamo in esame la terza riga:
+
== 1. Introduzione ==
'''/dev/hdd5''' = secondo hard disk con partizione logica
+
Nei sistemi GNU/Linux <em>fstab</em> è un file di configurazione che si trova all'interno della cartella <em>/etc</em> (secondo lo standard FHS) ed il cui proprietario è l'utente <em>root</em>, ed indica i dispositivi che devono essere montati con le rispettive opzioni.
'''/nava2''' = indica dove viene montato e il suo indicativo
+
<em>/etc/fstab</em> è 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 <em>/etc/fstab</em>, dove andranno indicate tutte le risorse necessarie all'avvio e al funzionamento del pc e quelle di uso più frequente.
'''vfat = filesystem fat32''' (uso questo perchè mi permette di scambiare i dati con winzzozz (anche se oramai non lo uso praticamente più
 
'''defaults,users,noauto,rw''' = le opzioni per il filesystem
+
== 2. Disclaimer ==
'''0 0''' indicano che non cè bisogno di nessun controllo automatico e che non è un filesystem di boot
+
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.
Il filesystem proc è un filesystem virtuale, il cui contenuto non è situato su nessun hard disk, ma viene ricreato ogni volta dal kernel. Al suo interno vengono rese disponibili informazioni sullo stato dei programmi in esecuzione, sull hardware e sul funzionamento del sistema.
+
Si raccomanda di <strong>fare un backup</strong> prima di effettuare modifiche al file <em>/etc/fstab</em>
= Opzioni generali del comando mount =
 
* async - Tutte le operazioni di input/output vengono eseguite in modo asincrono
 
* atime - Aggiorna la data di accesso all' inode ad ogni accesso
+
== 3. Cenni sulle partizioni ==
* 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
+
Per iniziare spieghiamo brevemente come vengono assegnati i nomi alle partizioni in un sistema Linux.
* defaults - Usa le opzioni di defaults: rw,suid,dev,exec,auto,nouser,async
+
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: <strong>Ogni drive fisico può essere diviso in partizioni e ogni partizione può essere "montata" in una directory</strong>.
* dev - Interpreta i device speciali presenti nel filesystem
+
Linux si riferisce ai drive fisici (come ad esempio il drive del floppy da 3.5) come file nella directory <em>/dev</em>. Per esempio, il primo drive (chiamato A: in Windows) è <em>/dev/fd0</em> in Linux. <em>fd</em> 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 <em>/dev</em> 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.
* exec - Permette di eseguire i programmi
+
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: <em>primario</em> e <em>secondario</em>.
* _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
+
<strong>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 <em>master</em> o <em>slave</em>.</strong>
* noatime - Non aggiorna la data di accesso all' inode ad ogni accesso. Aumenta la velocità di accesso ai dati
+
Le periferiche IDE hanno i seguenti nomi:
* noauto - Il filesystem non viene montato in modo automatico l' opzione “-a” di mount non influisce
 
* nodev - Non interpreta i device speciali presenti nel filesystem
+
* Primary Master: /dev/hda
  +
* Primary Slave: /dev/hdb
  +
* Secondary Master: /dev/hdc
  +
* Secondary Slave: /dev/hdd
* noexec - Non permette l' esecuzione dei programmi presenti nel filesystem
 
* nosuid - I bit di setuid e setgid non venono presi in considerazione
+
Eventuali partizioni dell'HD vengono poi numerate ed avranno nomi tipo:
* nouser - Impedisce ai normali user di montare il filesystem
 
* remount - Cerca di rieseguire il mount del filesystem già montato. Si usa per modificare le opzioni dello stesso
+
* /dev/hda1 (prima partizione del primary master)
  +
* /dev/hdc4 (quarta partizione del secondary master)
* ro - Il filesystem viene montato in sola lettura (ReadOnly)
 
* rw - Il filesystem viene montato in lettura-scrittura (ReadWrite)
+
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<em> /dev/sda</em>,<em> /dev/sdb</em>, etc...
* suid - I bit di setuid e setgid venono presi in considerazione
+
Anche in questo caso però eventuali partizioni dell'HD avranno nomi tipo:
* sync - Tutte le operazioni di input e output vengono eseguite in modo sincrono
 
* dirsync - Tutti gli aggiornamenti delle directory presenti nel filesystem vengono in modo sincrono
+
* /dev/sda1 (prima partizione della prima periferica SATA)
  +
* /dev/sdc4 (quarta partizione della quarta periferica SATA)
* 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 ).
 
* 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)
+
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.
= Note sulle partizioni =
 
Per finire, vorrei aggiungere delle note sulle partizioni del filesystem di Linux (forse avrei dovuto metterle all inizio, ma mi è venuto in mente solo ora )
+
== 4. Formato ==
Sulla scheda madre, ci sono due canali IDE: primario e secondario. Ognuno di loro può ospitare un dispositivo per la gestione di dati che vanno montati come master e slave. Nel mio caso ho due HD , un lettore dvd e un masterizzatore che ho così diviso: sul canale IDE1 master: l'HD principale, che linux legge come hda. Come slave ho il lettore cdrom-dvd che viene visto come hdb. Sul canale IDE2 ho come master il masterizzatore che viene visto come hdc e il secondo HD come slave) molti mettono i due HD insieme sul canale IDE1, ma è sbagliato, funziona ugualmente, ma vanno montati come ho scritto. ( ci vorrebbe un po + di tempo per spiegarvi la ragione).
+
Tutte le informazioni riguardanti un filesystem vengono elencate in una riga, a sua volta divisa in sei colonne.
Eventuali partizioni dell' HD vengono poi numerate. Nel mio caso, per esempio, sull' HD principale, ho:
+
Il formato di ogni riga è:
<pre>
 
hda1= partizione winzozz
 
hda5= partizione di swap
 
hda3= partizione Linux in reiserfs
 
</pre>
 
Ripeto ancora una volta che il canale IDE 1 master viene letto come hda, lo slave viene letto come hdb il canale IDE 2 master viene letto come hdc e infine il canale IDE 2 slave viene letto come hdd
 
Notate che nel mio fstab manca il collegamento al masterizzatore, ma è un' assenza voluta. Anche se con i nuovi kernel 2.6.x non cè bisogno, e neanche con le nuove versioni di cdrecord, ho attivato per esso la simulazione scsi, adesso il sistema lo riconosce come se fosse una unità scsi vera e propria. Per metterlo in fstab, dovrei scrivere /dev/sd0 (sd = prefisso per le unità scsi). Per trovare il vostro, digitate da root il comando: # cdrecord -scanbus e vi deve venire fuori una schermata simile:
+
[device] [mountpoint] [filesystem type] [options] [dump freq] [fsck order]
<pre>
 
root@SlacWarE:/home/navajo# cdrecord -scanbus
 
Cdrecord 2.00.3 (i686-pc-linux-gnu) Copyright (C) 1995-2002 Jörg Schilling
 
Linux sg driver version: 3.1.25
 
Using libscg version 'schily-0.7'
+
* La prima colonna indica il <strong>nome del device</strong> che ospita il filesystem.
  +
* La seconda indica la <strong>directory (mount point)</strong> alla quale verrà collegato il device.
  +
* La terza indica il <strong>tipo di filesystem</strong>.
  +
* Nella quarta vengono elencate le <strong>opzioni</strong> desiderate, da passare al comando mount separate da una virgola.
  +
* La quinta indica se il filesystem deve venire preso in esame dal comando <em>dump</em> per un <strong>backup</strong>.
  +
* Nell'ultima troviamo la <strong>sequenza</strong> con cui il comando <em>fsck</em> deve seguire i controlli sull' integrità degli stessi.
scsibus0:
 
0,0,0 0) 'PIONEER ' 'DVD-RW DVR-107D' '1.13' Removable CD-ROM
 
0,1,0 1) *
+
Con il carattere # è possibile commentare
  +
Vediamo adesso un esempio pratico di un sistema Linux che ha la <em>root ( / )</em> in <em>/dev/hda2</em>
0,2,0 2) *
 
0,3,0 3) *
+
# 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
0,4,0 4) *
 
0,5,0 5) *
+
Vediamo adesso sezione per sezione
0,6,0 6) *
+
=== 4.1 Device (fs_spec) ===
0,7,0 7) *
+
La prima colonna indica il nome del <em>device</em> che ospita il filesystem, ovvero la locazione fisica dove risiede il filesystem, es.
root@SlacWarE:/home/navajo#
+
* /dev/hda - L'HD master connesso al canale IDE primario, Primary Master
</pre>
+
* /dev/hda1 - La prima partizione del Primary Master.
Non vi scordate, che nella directory /mnt/ devono esistere tante cartelle quanti sono i riferimenti che ci sono in /etc/fstab. Nella mia directory ci sono: floppy cdrom e hd .
+
* /dev/hdb1 - La prima partizione del Primary Slave
= Conclusione =
+
* /dev/hdc2 - La seconda partizione del Secondary Master
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, e invece ci vorrebbe più tempo e e magari una preparazione maggiore della mia.
+
* /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
Spero di essere stato chiaro, ed esauriente.
+
Oltre all'uso del nome del device questa sezione può contenere altri due valori.
Visto l'ora tarda vi saluto...... :-)
+
* Una <strong>LABEL</strong>, cioè un etichetta data al filesystem
  +
* Un <strong>UUID</strong>, cioè un identificativo univoco della partizione
Autore: [[Utente:NaVaJo|NaVaJo]]
+
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:
  +
  +
* <strong>&lt;label&gt;</strong> è un semplice nome, es. SLACKROOT
  +
* <strong>&lt;uuid&gt;</strong> è un numero identificato tipo 4a8be9ff3d944-324d-547f3b25f05d64
  +
  +
  +
Sia la LABEL sia l'UUID si possono trovare tramite il comando <em>vol_id</em> o il comando <em>blkid</em>. 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 <em>blkid</em> 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 <em>mount point</em>, 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 <em>root</em>) il contenuto del filesystem specificato. Per esempio
  +
  +
* /home
  +
* /mnt/floppy
  +
* /media/cdrom
  +
  +
<strong>Nota bene:</strong> 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:
  +
  +
* <strong>auto</strong> - riconosce automaticamente il File System della partizione (boot più lento ma è una garanzia)
  +
* <strong>ext2</strong> - File System Standard di Linux (non è molto utilizzato ultimamente, anche se in alcuni casi rimani la scelta migliore)
  +
* <strong>ext3</strong> - File System Journaling di Linux (il più utilizzato, il journaling evita che i dati subiscano danni in caso di arresto critico del sistema)
  +
* <strong>iso9660</strong> - File System di supporti CD
  +
* <strong>nfs</strong> - Network File System
  +
* <strong>ntfs</strong> - Driver per NTFS di Windows compreso nel kernel Linux
  +
* <strong>ntfs-3g</strong> - Driver per NTFS di Windows esterno al kernel (Migliore del supporto compreso nel kernel, funziona egregiamente anche in scrittura)
  +
* <strong>proc</strong> - File System Virtuale con le informazioni dei processi
  +
* <strong>reiserfs</strong> - Altro File System Journaling di Linux
  +
* <strong>swap</strong> - Formattazione usata per il SWAP di Linux
  +
* <strong>vfat</strong> - FAT32 di Windows
  +
  +
Naturalmente possono essercene tanti altri, sia virtuali sia non, come <em>xfs</em>, <em>sys</em>, <em>ext4</em>, <em>udf</em> 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
  +
  +
* <strong>async</strong> - Tutte le operazioni di input/output vengono eseguite in modo asincrono
  +
* <strong>atime</strong> - Aggiorna la data di accesso all' inode ad ogni accesso.
  +
* <strong>auto</strong> - Il filesystem può essere montato passando "-a" a mount. Solo i filesystem che contengono questa opzione vengono resi disponibili ad ogni avvio del pc
  +
* <strong>defaults</strong> - Usa le opzioni di defaults: rw,suid,dev,exec,auto,nouser,async
  +
* <strong>dev</strong> - Interpreta i device speciali presenti nel filesystem
  +
* <strong>exec</strong> - Permette di eseguire file binari nel filesystem
  +
* <strong>noauto</strong> - Il filesystem non viene montato in modo automatico, l' opzione "-a" di mount non influisce
  +
* <strong>noatime</strong> - Non aggiorna la data di accesso all' inode ad ogni accesso. Aumenta la velocità di accesso ai dati.
  +
* <strong>nodev</strong> - Non interpreta i device speciali presenti nel filesystem
  +
* <strong>noexec</strong> - Non permette di eseguire file binari nel filesystem
  +
* <strong>nosuid</strong> - I bit di setuid e setgid non vengono presi in considerazione
  +
* <strong>nosync</strong> - Tutte le operazioni di input/output vengono eseguite in modo sincrono
  +
* <strong>quiet</strong> - Tralascia gli errori sull'impossibilità di preservare i permessi durante la copia e lo spostamento da partizioni Linux
  +
* <strong>remount</strong> - Cerca di rieseguire il mount del filesystem già montato. Si usa per modificare le opzioni dello stesso
  +
* <strong>relatime</strong> - 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.
  +
* <strong>ro</strong> - Il filesystem viene montato in sola lettura (ReadOnly)
  +
* <strong>rw</strong> - Il filesystem viene montato in lettura-scrittura (ReadWrite)
  +
* <strong>suid</strong> - I bit di setuid e setgid vengono presi in considerazione
  +
* <strong>sw</strong> - Indica che si tratta di una partizione dedicata allo swap di Linux
  +
* <strong>user</strong> - 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).
  +
* <strong>nouser</strong> - Impedisce ai normali user di montare il filesystem. È l'opzione di default
  +
* <strong>users</strong> - 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)
  +
* <strong>_netdev</strong> - 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
  +
  +
* <strong>gid=xxx</strong> - Indica i permessi di un gruppo con la logica del comando chmod (ogni x va da 0 a 7)
  +
* <strong>uid=xxx </strong>- indica i permessi dell'utente.
  +
* <strong>umask=xxx</strong> - 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 <em>dump</em> per per determinare quali file system devono essere oggetto di <strong>backup</strong>. Se il quinto campo non è presente, viene considerato 0 di default e dump assumerà che il filesystem non deve essere oggetto di backup.
  +
  +
* <strong>0</strong> - Non effettuerà back-up in questa partizione
  +
* <strong>1 </strong>- Effettuerà back-up in questa partizione
  +
  +
<strong>Al giorno d'oggi il comando <em>dump</em> è poco utilizzato, nella Slackware non è presente di default, anche se c'è il simile <em>dumpe2fs</em></strong>
  +
  +
  +
=== 4.6 fsck order (fs_passno) ===
  +
  +
Questo parametro è usato dal programma fsck per determinare in quale <strong>ordine</strong> i filesystem saranno controllati durante il processo di avvio del sistema.
  +
  +
I possibili valori sono
  +
  +
* <strong>0</strong> - Non viene permesso il controllo a fsck
  +
* <strong>1</strong> - Viene controllato con alta priorità
  +
* <strong>2</strong> - 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 <strong>HAL</strong> e <strong>UDEV</strong> è 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 <em>automounting</em> per le periferiche esterne. In questo caso è consigliato non inserire le righe relative nel file <em>/etc/fstab</em> ma di lasciar fare ad HAL+UDEV il loro lavoro, e nel caso, configurare questi due software.
  +
  +
  +
== 6. Collegamenti esterni ==
  +
  +
* mount: http://userweb.kernel.org/~kzak/util-linux-ng/
  +
* dump: http://dump.sourceforge.net/
  +
* e2fsprogs: http://e2fsprogs.sourceforge.net/
  +
* udev: http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev.html
  +
* hal: http://freedesktop.org/wiki/Software/hal
  +
* ntfs-3g: http://www.ntfs-3g.org/
  +
* how to edit fstab: http://www.tuxfiles.org/linuxhelp/fstab.html
  +
  +
  +
== 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: [[Utente:Navajo|NaVaJo]], [[Utente:Conraid|Conraid]]

Versione attuale delle 20:11, 21 ago 2008


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


Indice

[modifica] 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.


[modifica] 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


[modifica] 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.


[modifica] 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

[modifica] 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


[modifica] 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.


[modifica] 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.


[modifica] 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


[modifica] 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


[modifica] 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


[modifica] 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.


[modifica] 6. Collegamenti esterni


[modifica] 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.


[modifica] 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