Det korrekta sättet att använda disketter är att först montera dem. Hur det går till beskriver vi i avsnitt 7.4. På många system tillåts det inte att användarna på egen hand monterar disketter; i sådana fall tvingas de att använda något som kallas för Mtools. Mtools är en samling kommandon med vars hjälp man kan läsa från, och skriva till, disketter av ''DOS-format''. Detta är det ursprungliga formatet från IBM:s första PC-datorer. Det finns en mängd märkliga restriktioner i samband med DOS-formatet. Bland annat får filnamnen inte se ut hur som helst, och filskyddskoderna bevaras inte. Därför brukar man bara använda DOS-disketter om det finns tvingande skäl, som tex att man inte har rättighet att montera disketter eller att man måste flytta filer till eller från någon dator som inte kör Linux.
I de kommandon som ingår i Mtools kallas den första
diskettenheten för a:, den andra för
b: osv.
Kommandot mdir listar filerna på disketten:$ mdir a:
Volume in drive A has no label
Volume Serial Number is 6E8A-0F0B
Directory for A:/
gnulinux dvi 61948 03-01-1998 18:11 gnulinux.dvi
1 file(s) 61 948 bytes
1 395 712 bytes free
$Bara en fil, gnulinux.dvi finns på disketten.
Med hjälp av mcopy kopierar vi filen bellman
till disketten:$ mcopy bellman a:
Copying bellman
$ mdir a:
Volume in drive A has no label
Volume Serial Number is 6E8A-0F0B
Directory for A:/
gnulinux dvi 61948 03-01-1998 18:11 gnulinux.dvi
bellman 372 03-01-1998 18:11 bellman
2 file(s) 62 320 bytes
1 395 200 bytes free
$Vi kan också kopiera filer från disketten till
datorn med mcopy. Om man inte anger någon destinationskatalog,
så placeras kopian i den nuvarande katalogen.$ mcopy a:gnulinux.dvi
Copying gnulinux.dvi
$ ls
bellman dikter/ gnulinux.dvi lenngren
$
Kommandot mdel raderar filer på disketten:$ mdel a:gnulinux.dvi
Removing gnulinux.dvi
$ mdir a:
Volume in drive A has no label
Volume Serial Number is 6E8A-0F0B
Directory for A:/
bellman 372 03-01-1998 18:11 bellman
1 file(s) 372 bytes
1 457 152 bytes free
$
Man får använda jokertecken:$ mdel a:*
Removing bellman
$ mdir a:
Volume in drive A has no label
Volume Serial Number is 6E8A-0F0B
Directory for A:/
File "*" not found
1 457 664 bytes free
$Man bör skydda jokertecknen som gäller filer på disketten
från skalet, för det är Mtools som ska tolka dem.
Anledningen till att jag struntade i att sätta apostrofer
kring a:* ovan är att jag visste att det inte fanns
någon fil i den nuvarande katalogen vars namn började med tecknen
a:.
Kommandot mlabel kan sätta ett slags namn på disketten:$ mlabel a:dikter
$ mdir
Volume in drive A is DIKTER
Volume Serial Number is 6E8A-0F0B
Directory for A:/
File "*" not found
1 457 664 bytes free
$
Disketter har högst begränsad kapacitet.
Om man vill spara en mycket stor fil på diskett,
så måste filen delas upp i bitar som ryms på var sin diskett.
Vi ska nu visa hur det går till.
(Ett annat sätt är att använda tar med flaggan -M,
se avsnitt 5.4.)
Antag att
det finns en stor fil med namnet gnulinux.ps i katalogen
/tmp:$ ls -l /tmp/gnulinux.ps
-rw-r--r-- 1 göran göran 2548527 mar 1 11:01 /tmp/gnulinux.ps
$Vi styckar upp filen i småbitar med kommandot split.
Småbitarna sparas i filer med namnen xaa, xab,
xac osv i den nuvarande katalogen.$ split -b 1400k /tmp/gnulinux.ps
$ ls -l
total 2567
-rw------- 1 göran göran 372 feb 1 16:48 bellman
drwxrwxr-x 3 göran göran 1024 feb 20 13:19 dikter/
-rw-rw-r-- 1 göran göran 61948 mar 1 18:12 gnulinux.dvi
-rw-rw-r-- 1 göran göran 649 feb 1 15:53 lenngren
-rw-rw-r-- 1 göran göran 1433600 mar 1 19:50 xaa
-rw-rw-r-- 1 göran göran 1114927 mar 1 19:50 xab
$Flaggan -b betyder att nästa argument anger den maximala
storleken för småbitarna. Vi valde storleken 1400 kilobyte.
Bokstaven ''k'' efter siffran 1400 i instruktionen ovan
står för kilobyte. I stället för ''k'' kan man ange ''b'',
som står för block (ett block är en halv kilobyte)
eller ''m'', som står för megabyte. Om bokstaven utelämnas,
så antas siffran ange antal byte.
Filerna xaa och xab kan nu kopieras till diskett.
När de kopierats över till en dator igen kan de sättas samman
med hjälp av cat på följande sätt:$ cat xa? > gnulinux.ps
$ ls -l gnulinux.ps
-rw-rw-r-- 1 göran göran 2548527 mar 1 20:12 gnulinux.ps
$ rm gnu* xa?
$
På UNIX-system motsvaras varje hårdvaruenhet av en
fil i katalogen /dev.
Den första diskettstationen motsvaras av filen
/dev/fd0, den andra av /dev/fd1 osv.$ ls -l /dev/fd0
brw-rw---- 1 root floppy 2, 0 maj 28 02:49 fd0
$Som synes av filrättigheterna
måste man be systemadministratören om
att få bli medlem av gruppen floppy innan man
kan använda diskettenheten.
Disketter måste formatteras innan de kan användas. Formatteringen sker i två steg. Det första steget, lågnivåformatteringen, består i att det lagringsutrymme som finns på disketten struktureras och delas in i spår och sektorer. Det vanliga är att disketter formatteras med 18 spår ā 80 sektorer på vardera sidan. Sammanlagt blir det 2880 sektorer. En sektor innehåller 512 byte (en halv kilobyte), så lagringsutrymmet blir det välkända 1440K. (Man kan genom att använda fler spår, fler sektorer på varje spår och större sektorer få in mer på en vanlig diskett, upp till 1992K, men detta rekommenderas inte - bland annat eftersom det oftare blir fel vid avläsningen då.) Kommandot superformat /dev/fd0 formatterar en diskett i första diskettstationen. Om någon sektor är dålig, så får man veta detta; i så fall bör disketten kasseras. Lågnivåformatteringen tar ganska lång tid, men den behöver bara göras en gång för varje diskett.
Efter lågnivåformatteringen måste man skapa ett filsystem
på disketten innan den kan användas;
detta är det andra steget i formatteringsprocessen.
(Om man använder tar eller dd för att
läsa från eller skriva till disketten behövs dock
inget filsystem.)
Vanligtvis använder man endera av minix
eller ext2 som filsystem.
Ett mindre bra alternativ är filsystemet
msdos eller vfat, som används för
DOS-disketter.
Så här gör man för att formattera disketten:$ superformat /dev/fd0
Verifying track 79, head 1
mformat -s18 -t80 -h2 -S2 -M512 a:
$Kommandot superformat lägger automatiskt ett filsystem
av typen msdos på disketten.
Så här kan vi skapa ett filsystem av typen ext2:$ /sbin/mkfs -t ext2 /dev/fd0
mke2fs 1.10, 24-Apr-97 for EXT2 FS 0.5b, 95/08/09
Linux ext2 filesystem format
Filesystem label=
360 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Block size=1024 (log=0)
Fragment size=1024 (log=0)
1 block group
8192 blocks per group, 8192 fragments per group
360 inodes per group
Writing inode tables: done
Writing superblocks and filesystem accounting information: done
$Nu är disketten klar att användas.
För att UNIX ska kunna skriva till eller läsa från en
diskett med de vanliga kommandona
cp, ls osv, måste den dock först monteras, se
avsnitt 7.4.
Om vi vill byta till ett minix-filsystem, så gör vi så här:$ /sbin/mkfs -t minix /dev/fd0
480 inodes
1440 blocks
Firstdatazone=19 (19)
Zonesize=1024
Maxsize=268966912
$Observera att det inte är nödvändigt att lågnivåformattera
disketten igen!
För att byta till ett msdos-filsystem är det enklast att använda
mformat:$ mformat a:
$