mount
ed umount
Come già ampiamente scritto e ribadito, il filesystem di Linux mantiene una struttura gerarchica, questo significa che anche le periferiche non tipicamente legate all'HD vengono viste come parte del file system.
Cercherò di spiegarmi meglio: tipicamente il dos separa le unità
fisiche che compongono il file system in unita logiche a cui si
può accedere mediante identificatori.
Ad esempio tipicamente il dischetto da 3 pollici e mezzo viene
indicato con A:
mentre la prima partizione dell'HD con C:
.
Il sistema operativo Linux si comporta in modo leggermente,
diverso, tutte le periferiche vengono gestite in modo piatto,
ovvero tipicamente quello che in dos viene indicato come
drive A:
, sotto Linux sarà una sottodirectory della radice,
e sarà possibile accedervi mediante il comando tipico
cd nomedir
, sarà inoltre possibile effettuare tutte le
operazioni che tipicamente si compiono all'interno di una
directory.
Questo avviene per una serie di motivi:
Naturalmente Linux ci mette a disposizione dei comandi per poter montare sotto una directory una periferica come ad esempio un drive.
Il comando in questione è mount
. mount
ha una sintassi del tipo:
mount [options] nomeperiferica mountpoint -t fstype
dove options
rappresenta una delle innumerevoli opzioni applicabili
alla periferica in questione (sola lettura, sola scrittura e tante altre,
consiglio ``man 8 mount
'' per saperne di più).
rappresenta la periferica che si desidera montare,
ad esempio nel caso del floppy A:
da 1.4 Mb, avremo
/dev/fd0H1440
è la directory dove la periferica in questione deve essere mountata
-t
è uno switch che indica che fra poco scriveremo il tipo di formattazione con cui quella periferica è stata inizializzata
è il tipo di formattazione presente sulla periferica, tipicamente: ext2, dos, minix, hpfs, fat, vfat, la quantità di filesystem riconosciuti da Linux dipende da come avrete ricompilato il kernel.
Facciamo qualche esempio:
mount /dev/fd0H1440 /mnt -t msdos
monta il drive A:
nella directory /mnt
supponendo che il
dischetto nel drive A:
sia stato formattato msdos
mount /dev/sbpcd /cdrom -t iso9660
monta un cdrom soundblaster nella directory /cdrom
supponendo, come
è ovvio, che il formato del cdrom sia iso9660
mount /dev/hda2 /dosc -t vfat -o -ro
monta la partizione D:
del primo disco rigido nella directory /dosc
supponendo che tale disco sia stato formattato con W95, inoltre
stabilisce che tale disco sia accessibile in sola lettura.
mount none /proc -t proc
monta una periferica fittizia nella directory /proc
, assegnandogli
come filesyste, proc che è un filesystem finto che mantiene sotto forma di
file un albero dei processi in corso
mount bilbo.comeon.org:/pub /mnt -t nfs
monta nella directory /mnt
la directory /pub
di un sito
remoto a cui siamo collegati (es: tramite internet) il cui nome è
bilbo.comeon.org
.
Naturalmente così come esiste il comando mount
, deve anche esistere
un comando in grado di smontare i vari filesystem una volta che ne abbiamo
terminato l'uso, ad esempio è un errore gravissimo non smontare una
dir che ad esempio contiene un floppy e cambiare il floppy mentre la
dir è ancora montata.
Il comando per smontare una dir è: umount mountpoint
.
Anche in questo caso per saperne qualcosa in più sulle opzioni,
``man 8 mountpoint
''.
/etc/fstab
Poiché in molte occasioni risulta noioso dovere scrivere ogni volta una
sequenza di mount
per una periferica e anche perché alcune periferiche
hanno bisogno di essere montate automaticamente al boot, esiste un
meccanismo che ci consente di abbreviare di molto il comando mount
e
di montare in automatico al boot le periferiche che ci occorrono.
Tale meccanismo è fornito dal file /etc/fstab
.
Ciascuna linea di questo file è del tipo:
fs_spec fs_file fs_vfstype fs_mntopts fs_freq fs_passno
fs_spec descrive il dispositivo a cui si fa riferimento
fs_file descrive il mount point dove si desidera mountare tale dispositivo
fs_vfstype descrive il filesystem contenuto in questo dispositivo
fs_mntopts descrive le opzioni associate al mount del dispositivo
fs_freq è un numero che decide se il filesystem ha bisogno di eseguire
un dump prima di essere montato
fs_passno è un parametro che viene passato a fsck per sapere in
quale ordine i filesystem devono essere controllati dopo
ogni reboot.
ad esempio il mio /etc/fstab
è il seguente:
/dev/hdb3 swap swap defaults 1 1
/dev/hdb2 / ext2 defaults 1 1
/dev/hdb1 /dosd vfat defaults 1 1
none /proc proc defaults 1 1
/dev/sbpcd /cdrom iso9660 noauto,ro 1 1
In pratica la prima riga monta la partizione di swap, la seconda riga monta
nella directory /
l'HD D:
che essendo quello che contiene
Linux è stato formattato con ext2, la terza riga monta nella directory
/dosd
la partizione dos dell'HD D:
che è stato formattato con
W95 e dunque il tipo è vfat, la quarta riga mounta nella directory
/proc
una periferica fittizia il cui tipo consente di mantenere un
albero dei processi in corso nella dir /proc
sotto la forma di
file, la quinta riga mounta il cdrom /dev/sbpcd
nella directory
/cdrom
, il tipo ovviamente del cdrom è iso9660, il parametro
noauto fa sì che il cdrom non venga montato direttamente al boot ma
aspetti un certo comando mount
affinché il mount avvenga, ro
indica che il cdrom ovviamente viene montato in sola lettura.
La presenza del parametro noauto nella riga relativa al cdrom, fa
sì che esso non venga automaticamente mountato al boot, però fornisce
una scorciatoia per il comando mount
, ovvero dato che i parametri
del cd sono noti, per montarlo basterà il comando
mount /cdrom
senza nessun parametro come avveniva in precedenza.
Naturalmente come in tutti gli altri sistemi operativi, anche Linux mette a disposizione dei comandi per la formattazione di un dischetto. In particolare, il comando che risponde a questa funzione e:
fdformat [-n] device
dove device è il dispositivo da formattare e -n è un'opzione che indica se si desidera o meno una verifica della formattazione.
Ad esempio
fdformat /dev/fd0H1440 formatta il drive A: a 1.4 Mb
fdformat /dev/fd0H720 formatta il drive A: a 720 kb
fdformat /dev/fd1h1200 formatta il drive B: a 1.2 Mb
Poiché come gia detto Linux è capace di leggere e scrivere più tipi di file system, non è sufficente semplicemente formattare un dischetto per poterlo usare, ma è necessario stabilire di che tipo sara' il filesystem presente su quel dischetto.
Il filesystem su un dischetto può essere creato mediante il comando:
mkfs [-V] [-t fstype] filesys
-V
produce un output prolisso (ovvero verranno visualizzate una quantità di informazioni
-t
fstype indica il tipo di filesystem che si desidera creare su un dischetto
filesys
indica la periferica su cui si desidera venga costruito un filesystem
Ad esempio:
mkfs /dev/fd0H1440 -t ext2
produce sul drive A precedentemente formattato a 1.4 mb un filesystem di tipo ext2.
df
Il comando linux per vedere la percentuale di disco usata e libera è:
df [options]
La quantità di opzioni messa a disposizione da df
è veramente illimitata
quindi vi consiglio vivamente ``man df
''
Tipicamente l'output di df
è:
/dev/hdb2 234239 156910 65233 71% /
/dev/hdb1 257748 13620 244128 5% /dosd
/dev/sbpcd 685388 685388 0 100% /cdrom
Seguito ad esempio dallo switch -T
ne risulta qualcosa del genere:
Filesystem Type 1024-blocks Used Available Capacity Mounted on
/dev/hdb2 ext2 234239 156910 65233 71% /
/dev/hdb1 vfat 257748 13620 244128 5% /dosd
/dev/sbpcd iso9660 685388 685388 0 100% /cdrom
du
Altro comando assai utile nell'analisi delle quantità utilizzate
dell'HD è du
, disk usage.
du
mostra le porzioni di HD utilizzate dai singoli file, directory,
o gruppi di file e directory, anche du
, come df
risponde ad una
quantità incredibile di opzioni, quindi anche per du
vi consiglio
``man du
''.
Ad esempio:
du -k
4 ./.term
2435 ./doc/misc
456 ./doc/giuda.bbs
100 ./doc/prg.culturale/RCS
128 ./doc/prg.culturale
3020 ./doc
3046 .
mostra lo spazio delle singole dir in K-byte
du -b
3754 ./.term
2481194 ./doc/misc
453808 ./doc/giuda.bbs
93626 ./doc/prg.culturale/RCS
120985 ./doc/prg.culturale
3057011 ./doc
3073141 .
mostra lo spazio occupato in byte anziche in K-byte
du -c -k -a
22 ./123gate.txt
166 ./ALLFILES.LST
182 ./ALLFILES.TXT
2 ./04060000.rsp
2 ./amiganet.el
1 ./citynet.el
12 ./euronet.019
5 ./euronet.el
7 ./fidonet.el
3 ./peacelnk.el
11 ./statuto.zip
3 ./stpoint.doc
3 ./stuser.doc
6 ./uunecode.txt
2 ./ALLEG_#4.TXT
2 ./ALLEG_#3.TXT
3 ./ALLEG_#6.TXT
19 ./STATUTO.DOC
2 ./ALLEG_#2.TXT
2 ./ALLEG_#5.TXT
0 ./result
0 ./quotes
456 .
456 total
mostra lo spazio occupato dai singoli file all'interno di una dir e il totale utilizzato in KB.
mtools
Data l'elevata quantità di dischetti formattati con msdos, in molti sistemi
Linux, vengono forniti una serie di comandi che consentono di leggere dischi
dos senza dovere passare attraverso il mount
e l'umount
del
filesystem. Tali comandi vanno sotto il nome di mtools
.
mattrib - cambia gli attributi ad un file msdos
mcd - cambia una directory msdos
mcopy - copia file a/da dos a Linux
mdel - cancella un file msdos
mdir - visualizza una directory msdos
mformat - formatta un dischetto in stile msdos
mlabel - aggiunge un etichetta ad un dischetto msdos
mmd - crea una sottodirectory msdos
mrd - rimuove una directory msdos
mread - legge (a basso livello) un file da msdos a unix
mren - rinomina un file msdos
mtype - visualizza il contenuto di un file msdos
mwrite - scrive (a basso livello) un file da unix a msdos
ad esempio:
mcopy a:\\pluto.txt /tmp
copia dal drive a:
il file pluto.txt
alla dir linux /tmp
.
Io personalmente non faccio mai uso degli mtools
, e preferisco
passare attraverso mount
, che una volta assimilato risulta
molto molto più comodo.
Inoltre, tento di formattare tutti i miei dischetti in ext2
che è un formato assai più efficente della vecchia ed
obsoleta fat.
Esiste per la verita un superformat
che fornisce dei modi estesi per
la formattazione dei dischetti (fino a 2Mb), lo trovate nel pacchetto
fdutils.tgz
, perché ovviamente non entra nelle distribuzioni
ufficiali, né è un comando standard di Linux.