Compago

...free knowledge

 
  • Increase font size
  • Default font size
  • Decrease font size
Home Manuali Linux Guida al comando mount

Guida al comando mount

E-mail Stampa PDF

Guida al comando mount

I dispositivi ( device )
Montare un filesystem
Opzioni
Opzioni avanzate
Il comando mount
Come montare una cartella in rete
Come montate un file .iso

I dispositivi ( device )

Le periferiche, come ad esempio terminali, modem, stampanti, o le unità di memorizzazione dei dati vengono definite dispositivi (o devices).
All'interno della directory /dev (devices appunto) sono presenti i vari dispositivi utilizzabili da Linux. Si tratta di file speciali di sistema chiamati 'file di device'. Il file di device e' un' interfaccia tra Linux ed hardware. Ogni dispositivo hardware 'dialoga' con il sistema operativo attraverso uno speciale programma chiamato driver. Il driver e' un programma molto specializzato scritto generalmente dalle stesse societa' produttrici di hardware.
In Linux il sistema operativo non dialoga direttamente con i vari driver di ciascun dispositivo hardware ne' tantomeno con l'hardware stesso, ma utilizza i file speciali contenuti nella directory /dev. Ad esempio, per scrivere su un floppy disk presente nel drive A: Linux utilizza il file di device /dev/fd0. In questo file di device un numero primario (o Major number) indica il tipo di dispositivo (e di conseguenza il driver da chiamare) mentre il numero secondario (minor number) indica univocamente una unita' fisica del sistema del tipo descritto dal numero primario (il numero secondario viene passato come parametro al driver).
I file di device possono essere di 2 tipi: a carattere o a blocchi. I device a carattere vengono letti o scritti sequenzialmene un carattere per volta (come ad esempio le porte seriali) mentre i device a blocchi vengono letti a blocchi di 1024 caratteri per volta (ad esempio gli hard disk). Ecco alcuni device presenti nella directory /dev:

  • fd0 Primo lettore di dischetti
  • fd1 Secondo lettore di dischetti
  • hda Disco fisso / CD-ROM IDE sulla prima porta IDE (Master)
  • hdb Disco fisso / CD-ROM IDE sulla prima porta IDE (Slave)
  • hdc Disco fisso / CD-ROM IDE sulla seconda porta IDE (Master)
  • hdd Disco fisso / CD-ROM IDE sulla seconda porta IDE (Slave)
  • hda1 Prima partizione sul primo disco fisso IDE
  • hdd15 Quindicesima partizione sul quarto disco fisso IDE
  • sda Disco fisso SCSI con l'ID SCSI più basso (p.e. 0)
  • sdb Disco fisso SCSI con l'ID SCSI successivo (p.e. 1)
  • sdc Disco fisso SCSI con l'ID SCSI successivo (p.e. 2)
  • sda1 Prima partizione sul primo disco fisso SCSI
  • sdd10 Decima partizione sul quarto disco fisso SCSI
  • sr0 CD-ROM SCSI con l'ID SCSI più basso
  • sr1 CD-ROM SCSI con l'ID SCSI successivo
  • ttyS0 Porta seriale 0, COM1 sotto DOS
  • ttyS1 Porta seriale 1, COM2 sotto DOS
  • psaux Mouse PS/2
  • cdrom Link simbolico al lettore CD-ROM
  • mouse Link simbolico al file di device del mouse
  • null Tutto ciò che viene reindirizzato a questo device finisce nel nulla
  • zero Da questo device si possono leggere infiniti zero

Ecco un esempio di device:
$ ls -l /dev/hda
brw-rw---- 1 root disk 3, 0 Jul 18 1994 /dev/hda

dove 3 e' il numero primario e 0 e' il numero secondario.

Montare un filesystem

A questo punto io potrei inviare o ricedere dati verso un dispositivo in modalità raw , come ad esempio su un terminale , una seriale o una stampante, ma se ho un hard disk per potervi accedere correttamente devo sapere prima di tutto il tipo di filesystem.
Infatti se avessi un filesystem FAT (tipico di windows) oppure di tipo EXT2 (tipico di linux) l'organizzazione dei file all'interno del disco sarebbe molto diversa. In pratica se volessi parlare con un francese dovrei prima di tutto conoscerne la lingua.
Un kernel standard presente nelle distribuzioni in genere ha già compilato il supporto per i filesystem più utilizzati. Per maggiori dettagli riguardo alla moltitudine di partizioni che sono supportati da linux fate riferimento alla sezione "File Systems" del menu per la compilazione del kernel e alla directory /usr/src/linux/fs e leggere questo articolo link.
Se il filesystem rientra tra quelli supportati dal vostro sistema operativo Linux, allora a questo punto potremo effettuare il "mount" del dispositivo, cioè potremo collegare virtualmente il dispositivo al nostro filesystem, ed in particolare assegnargli una directory ben precisa.
In questo modo ad esempio il mio hard disk sarà incluso nel mio filesystem come se fosse una delle atre ramificazioni (directory).
Le diverse partizioni dell'hard disk, i cd-rom e i floppy sono tutti inquadrati nella stessa struttura ad albero. Al fine di collegare tali periferiche al filesystem in modo da potervi accedere, occorre usare i comandi mount e umount, coi quali "monteremo" o "smonteremo" i filesystem nei dispositivi sulle cartelle che vogliamo.

Prima di montare un dispositivo su di una directory è necessario sapere che :

  1. la directory che funge da punto di mount deve esistere;
  2. inoltre questa directory dovrebbe essere vuota: se la directory scelta come punto di mount contiene già dei file, questi verranno soltanto "nascosti" dal filesystem appena montato, e non cancellati, ma non saranno più accessibili finché non verrà liberato il punto di mount.

Il mount di alcuni dispositivi è effettuato automaticamente nella fase di boot del computer. Tali dispositivi sono elencati nel file /etc/fstab. Di qualsiasi cosa tu voglia fare il mount automatico devi metterla una riga di questo file. Per gli altri dispositivi devi impartire un comando ogni volta che vuoi usarli.

Diamo un'occhiata ad un esempio del file /etc/fstab :

cat /etc/fstab

/dev/sda1 / ext2 defaults 1 1
/dev/sda2 /usr/local ext2 defaults 1 1
/dev/sda4 /home ext2 defaults 1 1
/dev/sdb1 swap swap defaults 0 0
/dev/sdb3 /export ext2 defaults 1 1
none /dev/pts devpts gid=5,mode=620 0 0
none /proc proc defaults 0 0
/dev/fd0 /mnt ext2 defaults 0 0
/dev/cdrom /mnt/cdrom iso9660 ro 0 0

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 ddispositivo che ospita il filesystem.
  • La seconda indica la directory (mount point) alla quale verrà collegato il dispositivo.
  • La terza indica il tipo di filesystem residente nel dispositivo.
  • 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.

Opzioni

Ecco alcune opzioni che può essere utile mettere in /etc/fstab sono:

  • 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 influisc. Potrebbe essere utile ne caso non si volesse montare il dispositivo (ad esempio un cdrom) al boot ma per rendere immediato il mount con mount /mountpoint oppure mount /dev/device
  • 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

Un esempio pratico potrebbe essere quello di caricare in automatico un filesystem fat presente su di una partizione, per fare questo bisogna creare la cartella /media/MYDATA e aggiungere questa riga al file /etc/fstab

/dev/sda3       /media/MYDATA     vfat  rw,nosuid,nodev,uhelper=hal,shortname=mixed,uid=1000,utf8,umask=077,flush 0 0

In questo modo all'avvio verrà montato il filesystem nella partizione sulla directory che avevamo creato.

Opzioni avanzate

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

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

Opzioni specifiche di un Filesystem

Per quel che riguarda ext2 (e ext3 che è una sua evoluzione) è da segnalare:
  • errors=remount-ro. In caso di errore rimonta il filesystem in sola lettura (in modo da dare l'opportunità di correggere gli errori).

    A differenza di ext2, l'fs di tipo FAT (comprendente vfat, msdos e umsdos), non dispone di una serie di caratteristiche che permettono di impostare tra le altre cose l'owner, il gruppo e i permessi dei file. Per permettere di impostare questi parametri anche per questo tipo di partizioni ci vengono incontro delle opzioni di mount. Le opzioni che seguono valgono anche per ntfs.

  • umask Con umask=valore potremo impostare quali permessi NON attribuire a tutti i file. I permessi vanno indicati nella forma ottale. Ad esempio umask=000 assegnerà a tutti i file i permessi di scrittura, lettura ed esecuzione per tutti gli utenti. Se viene utilizzata questa opzione, l'opzione noexec o exec viene ignorata
  • uid Con uid=valore è possibile impostare il proprietario dei file e delle directory. Di default viene impostato l'utente root. - gid Equivalente a uid per quel che riguarda il gruppo (anzicchè il proprietario). Di default viene utilizzato il gruppo con gid=0 (di solito root).

Il comando mount

Collegare manualmente un altro dispositivo al filesystem è facile. Tutto ciò che hai bisogno di fare è usare il comando mount insieme a qualche opzione. L'uso di mount si può semplificare se il dispositivo ha una entry nel file /etc/fstab. Per esempio, diciamo che io voglia fare il mount del il mio lettore CD-ROM a che il mio file fstab appaia come l'esempio visto nella precedente sezione. Potrei invocare mount come segue:

mount /cdrom
Dato che c'è una linea in fstab per tale punto di mount (/cdrom) mount sa quali opzioni utilizzare. Se non ci fosse tale linea, dovrei usare molti parametri assieme a mount:
mount -t iso9660 -o ro /dev/cdrom /cdrom

Questa linea di comando comprende le stesse informazioni usate prima nell'esempio con fstab ma abbiamo dovuto dichiararle esplicitamente:

  • "-t iso9660" indica il tipo di filesystem sul dispositivo. In questo caso sarà il filesystem iso9660 che è quello che i CD-ROM usano comunemente
  • "-o ro" dice a mount di utilizzare il dispositivo in sola lettura.
  • "/dev/cdrom" è il nome del dispositivo e "/cdrom" è la posizione nel filesystem alla quale fare il mount.

Prima che tu possa rimuovere un floppy, un CD-ROM o un altro dispositivo rimovibile del quale è stato fatto il mount è necessario che venga disconnesso, cioè "smontato", col comando umount. Puoi usare sia il nome del dispositivo che il punto di mount come argomento di umount. Per esempio, se vuoi scollegare il lettore CD-ROM dell'esempio precedente entrambi i seguenti comandi sono corretti:

#umount /dev/cdrom
#umount /cdrom
Usando il comando mount senza argomenti ci darà come risultato la lista dei dispositivi montati, un esempio potrebbe essere questo:
# mount
/dev/hda5 on / type ext2 (rw,errors=remount-ro,errors=remount-ro)
proc on /proc type proc (rw)
/dev/hda2 on /boot type ext2 (rw)
/dev/hda7 on /home type ext2 (rw)


Come montare una cartella in rete

Tramite mount è possibile anche accedere da remoto a una cartella condivisa(share) di Windows (tramite SAMBA/NetBIOS).Per accedere a delle condivisioni sono necessarie tre cose: aver configurato Windows per condividere dei file, aver il supporto per smbfs ed installato smbmount sul vostro Linux (entrambi dovrebbero essere presenti di default). A questo punto se volessimo montare in /mnt/share la condivisione di Windows chiamata "condivisa1" situata sul pc Windows chiamato "pcwin" dovremmo scrivere:
mount -t smbfs -o username=utentewinnt, password=tuapassword //pcwin/condivisa1 /mnt/share

In caso utilizziate Windows 9x o ME, potrete anche togliere l'opzione username. L'opzione password può anche essere omessa, in tal caso verrà richiesta interattivamente. È possibile specificare come opzioni anche gid e uid, con lo stesso significato e sintassi che avevano per le partizioni fat.

 

Come montate un file .iso

Come già accennato mount può essere usato per esplorare il contenuto di un'immagine iso. Può risultare molto utile se abbiamo la necessità di estrarre solo alcuni file da un'immagine di un CD, risparmiandoci la masterizzazzione. Se per esempio volessimo montare l'immagine /home/utente/immagine.iso in /mnt/loop potremmo usare il seguente comando:

mount /home/utente/immagine.iso /mnt/loop -t iso9660 -o loop=/dev/loop0

dove iso9660 è il tipo di filesystem dell'immagine (in questo caso un cd quindi iso9660), se fosse stata l'immagine di un floppy MS-DOS avremmo dovuto sostituire iso9660 con msdos.


Ultimo aggiornamento ( Lunedì 07 Giugno 2010 18:51 )  

Articoli correlati