Enhedshåndtering

Fra Debianguiden
Skift til: Navigation, Søgning

Basal brug af mount

Et af de områder hvor Linux adskiller sig væsentligt fra Windows og DOS er måden hvorpå lagerenheder organiseres. Windows og DOS har et system bestående af drevbogstaver, hvor hvert bogstav er et fysisk drev eller en partition. Således vil A: typisk være en floppydisk og C: almindeligvis den første harddiskpartition.

På Linux er alle lagerenheder bundet sammen i et enkelt hierarki, hvor man i princippet helt selv bestemmer hvor i hierarkiet de enkelte fysiske enheder skal befinde sig. Før en fysisk enhed kan bruges skal den først monteres, til dette bruger man 'mount' kommandoen. Hvis man eksempelvis vil se indholdet af en CD der lige er sat i drevet bruges:

bruger@debian:~$ mount /cdrom

Man kan nu med

bruger@debian:~$ ls /cdrom

se de filer der ligger på CD'en. Når man er færdig med at bruge CD'en skal den afmonteres igen med:

bruger@debian:~$ umount /cdrom

Og CD'en kan nu tages ud.

mount og fstab

Mappen /cdrom er en ganske almindelig mappe som enhver anden. Man kan faktisk montere en CD hvor som helst det skal være. Mange Linux distributioner bruger mappen /mnt/cdrom i stedet for. Når nu det er ligegyldigt hvor der monteres, hvordan kan systemet så vide at det lige præcis er en CD der skal monteres, og ikke en floppy disk eller en harddisk partition? Svaret findes i filen /etc/fstab. Et eksempel på denne fil ses herunder, men den kan variere meget fra system til system.

# /etc/fstab: static file system information.
#
# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/hda1       /               ext2    errors=remount-ro       0       1
/dev/hda2       none            swap    sw                      0       0
proc            /proc           proc    defaults                0       0
/dev/fd0        /floppy         auto    user,noauto             0       0
/dev/cdrom      /cdrom          auto    user,noauto,ro          0       0

Hver linie repræsenterer en enhed, som fx et CD drev, eller en harddisk partition. De første tre linier - dem som starter med # - er kommentarer, som bliver ignoreret af mount. Lad os kigge nærmere på en af linierne. Vi bruger den nederste linie, som repræsenterer CD-ROM drevet, til at gennemgå hver enkelt kolonne.

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/cdrom      /cdrom          auto    user,noauto,ro          0       0

Stien /cdrom er angivet i kolonnen '<mount point>'. Det er her programmet 'mount' kigger efter når vi fortæller den at der skal monteres noget i den mappe.

I første kolonne ses stien /dev/cdrom. Dette er en sti til en særlig fil som repræsenterer det fysiske CD drev. I tredie kolonne '<type>' angives hvilken type filsystem som skal monteres. Her står 'auto', hvilket betyder at vi stoler på at mount' selv kan finde ud af hvilket filsystem der ligger på CD'en. Der kunne også være angivet værdien 'iso9660' som er den type filsystem som normalt er på en data-CD.

I kolonnen '<options>' angives særlige indstillinger som skal bruges. Den skal vi se nærmere på senere for her kan man angive mange smarte ting. For vores CD drev er der tre indstillinger. 'user' betyder at almindelige brugere må montere CD'er, ellers er det normalt kun root der har lov til at bruge 'mount' kommandoen. 'noauto' angiver at dette drev ikke skal monteres ved opstart. Det er almindeligt at flytbare enheder, som f.eks floppy diske og CD drev ikke monteres ved opstart, i modsætning til harddisk partitioner. Den sidste indstilling 'ro' fortæller at enheden skal monteres 'read-only' - altså skrivebeskyttet.

Den sidste kolonne '<pass>' angiver i hvilken rækkefølge diske skal kontrolleres for fejl ved opstart. Her vil der normalt stå 1 for rod filsystemet, 2 for alle andre harddiskpartitioner og 0 for resten, hvilket betyder at de ikke skal kontrolleres.

Hvis ikke der i fstab var en linie for CD drevet kunne man have monteret den alligevel ved at angive en række indstillinger til 'mount' kommandoen:
debian:~# mount -t auto -o ro /dev/cdrom /cdrom

Den opmærksomme læser vil lægge mærke til at hvis man sammenligner ovenstående kommando med indholdet af fstab, er det stort set de samme oplysninger, bare i en lidt ændret form. fstab gør altså livet en hel del lettere for os som brugere, og sørger for at systemet har de oplysninger det skal bruge til at montere drev ved opstart.

De mest almindelige linier i fstab

CD-ROM eksemplet er ret dækkende for de flestes almindelige behov, de øvrige linier som man typisk støder på gennemgås hurtigt herunder.

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
/dev/hda1       /               ext2    errors=remount-ro       0       1
...

Den første linie i vores eksempel der ikke starter med # repræsenterer rod-filsystemet /. Vi ser at den monteres fra partitionen hda1. Filsystemtypen er ext2, som er det mest almindelige filsystem på Linux. Andre muligheder kunne være ext3 eller reiserfs. Under options ser vi indstillingen 'errors=remount-ro', som blot betyder at filsystemet skal genmonteres skrivebeskyttet hvis der sker fejl. I dette eksempel er der en stor partition til hele systemet, men man kan også have systemet delt ud på flere partitioner. Hvis man f.eks. har /usr på sin egen partition vil man typisk have en linie som denne:

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/hda3       /usr            ext2    defaults                0       2
...

Så vil partitionen hda3 som indholder et ext2 filsystem blive monteret under /usr. Indstillingen 'defaults' er en nemmere måde at angive en række indstillinger som almindeligvis bruges til faste drev. 2-tallet i slutningen af linien angiver at dette filsystem skal kontrolleres for fejl efter rodfilsystemet. Bruger man et journaliserende filsystem som ext3 eller reiserfs, vil der ikke være behov for at kontrollere for fejl, og man kan da med fordel ændre det til 0.

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/hda2       none            swap    sw                      0       0
...

Anden linie i vores eksempel angiver at /dev/hda2 er en swap partition. Under 'Mount point' står der 'none', fordi swap partitioner ikke monteres et bestemt sted som almindelige filsystemer. Med swap partitioner skal der stå 'swap' under filsystemtypen og 'sw' under indstillinger.

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
proc            /proc           proc    defaults                0       0
...

I tredie linie angives det virtuelle filsystem 'proc'. Dette filsystem ligger ikke på en fysisk lagerenhed, men er blot en grænseflade til selve kernen. Det vil komme for vidt her at forklare hvad der ligger i /proc, og hvad det kan bruges til, men linien er nødvendig i fstab.

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/fd0        /floppy         auto    user,noauto             0       0
...

Fjerde linie er til floppy diske, og minder meget om linien for CD'er. Blot bruges enheden /dev/fd0 og indstillingen 'ro' er udeladt fordi floppyer ikke bliver monteret skrivebeskyttet som det er tilfældet med CD'er.

Montering af Windows drev

På Windows bruges der to forskellige typer filsystemer. På Windows 95/98/ME brugtes filsystemet FAT32. På NT, 2000 og XP er filsystemet NTFS standard, dog kan FAT32 også benyttes her. Linux har god understøttelse af FAT32, hvorimod NTFS understøttelse er begrænset. NTFS driveren kan læse uden problemer, men understøttelse af skrivning er endnu ikke færdigudviklet. Derfor bør NTFS partitioner altid monteres skrivebeskyttet. Windows' filsystemer har en del begrænsninger. Eksempelvis understøtter de ikke Linux' system af rettigheder og filejerskab. Det giver nogle få komplikationer ved montering. Når et FAT32 drev skal monteres benyttes filsystemtypen 'vfat'. Hvis vi antager at der ligger et FAT32 filsystem på hdb1, og vi vil montere det på /mnt/fat kan følgende linie i fstab anvendes:

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/hdb1       /mnt/fat        vfat    defaults                0       2
...

Forudsat at mappen /mnt/fat findes, kan vores FAT32 filsystem nu monteres som root med kommandoen:

debian:~# mount /mnt/fat

Hvis vi kigger på filerne på vores fiktive drev, kunne de se nogenlunde sådan ud:

drwxr-xr-x root root 4096 Programmer
drwxr-xr-x root root 4096 Dokumenter
-rwxr-xr-x root root 516 autoexec.bat

Vi ser at alle filer har samme ejerskab, tilhører samme gruppe, og har samme rettigheder tilknyttet. Det skyldes at disse egenskaber ikke findes på FAT32 drev, og der benyttes derfor de samme standardegenskaber for alle filer. Vi kan dog ændre på hvad der betragtes som standard for hvert filsystem. Hvis vi vil have at alle filer skal ejes af brugeren anne og tilhøre gruppen fatdrev, kan vi benytte indstillingerne 'uid' og 'gid'. Det vil se således ud i vores fstab:

# <file system> <mount point>   <type>  <options>               <dump>  <pass>
...
/dev/hdb1       /mnt/fat        vfat    defaults,uid=anne,gid=fatdrev   0       2
...

Efter montering vil filerne vil nu se ud på denne måde:

drwxr-xr-x anne fatdrev 4096 Programmer
drwxr-xr-x anne fatdrev 4096 Dokumenter
-rwxr-xr-x anne fatdrev 516 autoexec.bat

Tilladelserne kan også ændres med indstillingen 'umask'. 'umask' bruger numeriske værdier for tilladelser ligesom kommandoen chmod. Dog fungerer det lidt anderledes da 'umask' angiver hvilke tilladelser der ikke skal være til stede. Hvis vi vil have at ejeren skal have alle rettigheder, at gruppen skal kunne læse og eksekvere og andre ingen rettigheder skal have (rwxr-x---) bruges 'umask' værdien 027. (0 betyder alle rettigheder, 2 betyder alle rettigheder bortset fra skrivning og 7 betyder ingen rettigheder). Dette kan vi tilføje til vores fstab:

# <file system> <mount point>   <type>  <options>                                 <dump>  <pass>
...
/dev/hdb1       /mnt/fat        vfat    defaults,uid=anne,gid=fatdrev,umask=027   0       2
...

Og nu vil filerne se sådan ud:

drwxr-x--- anne fatdrev 4096 Programmer
drwxr-x--- anne fatdrev 4096 Dokumenter
-rwxr-x--- anne fatdrev 516 autoexec.bat

Ved montering af NTFS filsystemer bruges typen ntfs, og man bør altid montere dem skrivebeskyttet. Her ses et eksempel på dette:

# <file system> <mount point>   <type>  <options>                                 <dump>  <pass>
...
/dev/hdb2       /mnt/ntfs       ntfs    defaults,ro                               0       2
...

NTFS driveren bruger samme metode til angivelse af ejerskab og tilladelser som FAT32 Udover de nævnte indstillinger kan man i 'man 8 mount' se hvilke indstillingsmuligheder der er for hvert enkelt filsystem.

Montering af disk-aftryk

Når man henter eksempelvis en Linux CD fra internettet, vil man typisk få en iso fil, som man derefter normalt vil brænde til en CD for at kunne bruge den. Det er dog også muligt at montere en sådan fil direkte, så man kan se hvad der er på inden man brænder den. Kommandoen til at gøre dette kunne se ud på denne måde:

debian:~# mount -t auto -o ro,loop debian-30r2-i386-binary-1.iso /mnt/isocd

Første argument '-t auto' angiver filsystemtypen, her bruger vi 'auto' som med en almindelig CD. Andet argument '-o ro,loop' angiver at vi vil montere som skrivebeskyttet ligesom med normale CD'er, og at vi benytter det der hedder en loopback enhed til at montere. Derefter kommer filnavnet til iso filen, og den mappe hvor filsystemet skal monteres. Som monteringspunkt bruges her stien /mnt/isocd, men der er helt frit valg, man skal blot huske på at mappen skal være oprettet i forvejen.