De File System Table

>> Index <<



Mounten

> Top <

Wat is er voor nodig om een ander bestandssysteem onder Linux te benaderen? Eigenlijk heel weinig. Voor exotische bestandssystemen hebt u aparte kerneldrivers nodig, maar HPFS, FAT partities en vrijwel alle linux bestandssystemen worden door recente standaardkernels ondersteund. U hoeft alleen maar een directory aan te maken op een Linux partitie. Deze zogeheten mount points (aankoppellingspunten) staan traditioneel in de directory /mnt.

sjoerd@visser:/mnt > md w95
mkdir: cannot create directory `w95': Permission denied

De directory /mnt is van root. Het plaatsen van de subdirectory w95 lukt wel als u root bent (inloggen met su). Daarna kunt u de vfat partitie onder Linux op lokatie /mnt/w95 benaderen met:

mount -t vfat /dev/hda3 /mnt/w95

De optie -t(ype) vfat geeft aan dat u lange bestandsnamen wilt gebruiken (werkt ook bij FAT32).

Ik maak bij voorkeur mount-points (koppelpunten) aan in /mnt, maar in principe kunt u ze overal aanmaken. Koppelingen (symlinks) naar mountpoints kunt u op uw desktop plaatsen. Dat heeft als voordeel dat ze bij een standaard backup van uw home mappen niet meegenomen worden.

Mount opties

Nadat u het "mount point" los gekoppeld hebt met umount kunt u andere mount opties uitproberen:

umount /mnt/w95
mount -t vfat -o uid=500,gid=100 /dev/hda3 /mnt/w95

vfat kent de volgende mount opties:

uid=nnn

De bestanden op de gemounte partitie zijn onder uw Linux systeem het bezit van de gebruiker met het genoemde user id. Met het commando id naam kunt u opvragen wie u bent. Zonder naam op te geven geeft id het ID van de huidige gebruiker. Mijn ID =500.

sjoerd@visser:~ > id 
uid=500(sjoerd) gid=100(users) groups=100(users),13(news),14(uucp),16(dialout),42(trusted),101(sjoerd),102(Projecten)

Het voordeel van het koppelen van een specifieke gebruiker aan een partitie is evident. Als u uw kinderen met Linux laat spelen is het niet handig als ze bij de Windows systeemmappen kunnen komen. Geef ze dan wel een eigen account!

gid=nnn

De groep waartoe de bestanden van de gemounte partitie behoren. Mijn GID=100 (en 101).

umask=nnn

Het instellen van een eigenaar en een groep voor een gemounte partitie heeft alleen zin als u ook benaderings regels opstelt voor die partitie. Dat gaat met umask. Een veel gebruikte waarde is umask=021. Voor meer informatie over umask zie : Octale getallen gebruiken met chmod en umask.

conv=

Deze opties hebben te maken met het feit dat Unix en Microsoft tekstbestanden van elkaar verschillen. In de door DOS, OS/2 en Windows aangemaakt platte tekstbestanden (ASCII) eindigen regels op een Carriage Return (CR) en een LineFeed (LF) teken, terwijl onder Linux en Unix alleen het Linefeed (new line) teken wordt gebruikt.

Carriage Return (CR) en LineFeed zijn van een oorsprong printeropdrachten: breng de printerkop voor de volgende regel weer naar het begin van de lijn, zoals ook een typemachine dat doet. De eerste machines hadden immers nog geen beeldschermen.

In de standaardinstelling conv=binary worden platte tekstbestanden met het onder Linux overtollige Carriage Return teken getoond.

In de conv=text instelling worden het Carriage return en line feed vervangen door een newline teken. Deze teksten zien er onder Linux normaal uit, maar het risico bestaat dat ook niet-tekstbestanden deze bewerking ondergaan en onder Windows raakt u de opmaak kwijt.

Met conv=auto probeert de driver de conversie alleen op tekstbestanden toe te passen.

Platte tekstbestanden worden o.a. aangemaakt door het Windows kladblok en DOS tekst-editors. Voor binaire bestanden (incl. Word en Write bestanden zonder opmaak) maakt dit onderscheid niet uit.

Opties voor het HPFS stuurbestand zijn:

case=lower

Convert file names to lower case. [default]

case=asis

Return file names as is, in mixed case.

nocheck

Proceed even if "Improperly stopped flag is set"

Bent u tevreden over de resultaten van een mount-opdracht dan plaatst u de de opties in /etc/fstab.

Het bestand /etc/fstab bevat informatie over de al dan niet benaderbare bestandssystemen. Alleen root heeft schrijftoegang tot dit configuratiebestand. Linux onderhoud zelf het bestand /etc/mtab dat informatie bevat over de al gebonden bestandssystemen.

sjoerd@laptop:~> cat /etc/mtab
/dev/hda7 / reiserfs rw 0 0
proc /proc proc rw 0 0
devpts /dev/pts devpts rw,mode=0620,gid=5 0 0
/dev/hda5 /boot ext2 rw 0 0
shmfs /dev/shm shm rw 0 0
usbdevfs /proc/bus/usb usbdevfs rw 0 0
//ecs/data /mnt/data smbfs  0 0
//zolder/samba /mnt/samba smbfs  0 0
//ecs/in /mnt/in smbfs  0 0
//zolder/homes /mnt/sjoerd smbfs  0 0
/dev/hda1 /windows/C vfat rw,noexec,nosuid,nodev,user=sjoerd 0 0

Ook de opdracht mount zonder parameters geeft u zinvolle informatie. Het commando df (disk free) vertelt u meteen de aangekoppelde schijfcapaciteit van de aangekoppelde apparaten en netwerkbronnen :

sjoerd@laptop:~> df
Filesystem           1k-blocks      Used Available Use% Mounted on
/dev/hda7              1882344   1564260    318084  84% /
/dev/hda5                43885      3827     37792  10% /boot
shmfs                    95448         0     95448   0% /dev/shm
//ecs/data             2080384   1912288    168096  92% /mnt/data
//zolder/samba         4851328   4405632    445696  91% /mnt/samba
//ecs/in               3494080   3185216    308864  92% /mnt/in
//zolder/homes         8216960   7291904    925056  89% /mnt/sjoerd
/dev/hda1              2821876   2131744    690132  76% /windows/C

Er staan minimaal drie regels in /etc/fstab. Allereerst een verwijzing naar de root partitie (/) en de swap partitie.

/dev/hdb6 swap swap defaults 0 0
/dev/hda13 / ext2 defaults 1 1
# Sluit af met een lege regel.

De laatste regel behoort een lege regel te zijn (met Enter, Enter aan het eind zit u dus goed).

De File System Table bevat zes kolommen. Ik bespreek ze een voor een.

In de eerste kolom wordt de share, partitie of het fysieke apparaat aangegeven. Een apparaat begint met /dev = apparaat; een netwerkmap met server:bron. Het eerste apparaat is hier een harddisk (hd) en wel /dev/hdb6: Dat is waarschijnlijk de 2e logische partitie van de de 2 vaste schijf op de eerste diskcontroller (hdb). Maar zeker kunt u hier helaas niet van zijn, omdat de linux fdisks in de partitienummering de aanmaakvolgorde van de partities aanhouden en dat is niet noodzakelijk de volgorde op uw vaste schijf! Zie: Partities.

Wat dat betreft is de server:bron naamgeving van nfs of samba gemakkelijker. Daarom is het wijs om in een linux fdisk uw (en de Windows) voorstelling van zaken met de ogen van linux te controleren (zie verderop).

/dev/hda: master op de 1e schijfcontroller (standaard lokatie van een vaste schijf).
/dev/hdb: slaaf op de 1e schijfcontroller (de slaaf van /dev/hda).
/dev/hdc: master op de 2e schijfcontroller (standaard lokatie van een CD of DVD speler)
/dev/hdb: slaaf op de 2e schijfcontroller (de slaaf van /dev/hdc).

De nummers 1-4 slaan op de primaire partities van DOS. Zijn er logische stations dan zal nummer 1-4 ook de uitgebreiden partitie zijn. Logische partities tellen vanaf 5.

Andere bekende apparaten zijn:

/dev/sdc0: Het eerste SCSI apparaat.
/dev/sda1: De eerste primaire partitie op een USB IDE schijf.
/dev/sda1: de eerste logische partitie op een USB IDE schijf.

In de tweede kolom ziet u het aankoppelpunt. In de regel is dat een (sub)map op de rootdirectory. Als deze map al gegevens mocht bevatten, dan worden ze door het aankoppelen (mounten) niet gewist, maar tijdelijk (virtueel) overschreven. Oftewel: stel u wilt de gebruikersmappen van ander linux systeem (/dev/hda6) op een /home van /dev/hdd projecteren, dan kunt u met een mount -t ext2 /dev/hda6 /home de originele /home mappen tijdelijk vervangen. Na een umount komen ze weer terug.

In de derde kolom ziet het u het type bestandssysteem Hier was dat nog swap resp. ext2 . Tegenwoordig zou ik voor ext3 of reiserfs gaan. Als u het bestandssysteem niet 100% zeker weet is auto een optie:

/dev/sda1       /mnt/sda1       auto    noauto,user,defaults,umask=0            0 0

In de vierde kolom verschijnen de mount opties. Ze worden door komma's gescheiden. De standaardwaarden (defaults) zijn vaak een veilige keus.

Mount opties

Betekenis

Let op: niet alle mount opties worden vanzelfsprekend door alle bestandssytemen (lees: drivers) ondersteund

ro

Read-only. Alleen lezen. De leesrechten kunnen meestal via het aankoppellingspunt worden ingesteld (zie hieronder).

rw

Read-write. Lezen en beschrijven. In dit geval is het van belang te weten wie de schrijfrechten heeft. De lees- schrijfrechten op het aankoppellingspunt spelen een rol. U kunt ze met mc of chmod (met chmod 777 /media/cdrom kan iedereen kan de cdrom lezen) instellen, maar ook via de specifieke mountopties uid en gid bijstellen.

uid=nummer

uid=1000 geeft de gebruikers-id 1000 (op te vragen met "id naam") eigenaarsrechten over het aankoppelingspunt.

gid-nummer

gid=100 geeft gebruikers met de groeps-id 100 groepsrechten over het aankoppelingspunt.

noauto (versus auto)

Het apparaat wordt niet automatisch aangekoppeld tijdens het opstarten. En ook niet bij mount -a(uto). Dit is zeker nuttig voor bestandssystemen die niet aan linux toebehoren. De default is auto. Hiermee koppelt de linux kernel het apparaat automatisch aan.

user, users

Met de optie user mag een gebruiker het apparaat aankoppelen. Standaard mag alleen root (of de kernel) dit. Deze optie wordt meestal gebruikt in de combinatie met noauto.

dev/hdc /cdrom iso9660 ro,noauto,user 0 0

In dit geval kan een gebruiker de CD aankoppelen als hij hem nodig heeft. Bij het verwisselen van de CDs moet dezelfde gebruiker niet vergeten eerst de oude CD eerst te umounten (afkoppelen) met umount /cdrom. Met user kan alleen de oorspronkelijke gebruiker het apparaat los koppelen. Maar met users mogen ook andere gebruikers umounten.

dev/hdc /cdrom iso9660 ro,noauto,users 0 0

Gebruikers moeten wel bestandsrechten hebben op de map /cdrom.

NB. Bestandssytemen die als user gemount worden krijgen standaard de mountopties noexec, nosuid en nodev mee, tenzij expliciet anders aangegeven.

user_xattr (versus nouser_xattr)

Deze optie laat op bepaalde bestandssystemen user-extended attributes (EA's) toe. Windows 2000/XP en OS/2 slaan uitgebreide kenmerken op in NTFS, respectievelijk JFS en HPFS. Via samba (EA support =yes) en NFS kunnen ze ook in Linux bestandssystemen worden opgeslagen.

/dev/hdd6 /mnt/samba reiserfs acl,user_xattr  0 2       


acl (versus noacl)

De optie acl geeft ondersteuning voor POSIX Access Control Lists (toegangscontrolelijsten).

noexec (versus exec)

De optie noexec verhindert dat uitvoerbare bestanden op het aangekoppelde bestandssysteem vanuit Linux uitgevoerd worden:

zolder:/mnt/backup/temp # ./fetch
bash: ./fetch: Toegang geweigerd

De noexec optie overheerst lokale bestandspermissies. In dit geval was fetch rwxr-xr-x en kreeg root een foutmelding. Met de standaardwaarde exec zullen bestanden die een uitvoerbaar bit bevatten wel uitvoerbaar zijn. De noexec mount optie heeft geen invloed op een samba netwerk.

suid (versus nosuid)

Vrijwel alle Linux bestandssystemen staan suid en sgid bits toe. Hiermee kan een gebruiker een bestand met rootrechten opstarten (gevaarlijk!). Maar als u een bestandssysteem met de optie nosuid boot, worden deze bits door Linux genegeerd.

nodev

Tot de nodec (geen fysiek apparaat) bestandssystemen behoren projecties van de kernel (devpts, proc) en netwerkmappen als nfs en nfs4.



/dev/cdrom /media/cdrom subfs noauto,fs=cdfss,ro,procuid,nosuid,nodev,exec,iocharset=utf8 0 0
/dev/fd0 /media/floppy subfs noauto,fs=floppyfss,procuid,nodev,nosuid,sync 0 0

async (versus sync).

De optie async laat asynchrone I/O operaties op het bestandssysteem toe. Dit is doorgaans effectiever dan synchrone (stap voor stap) bewerkingen.



Op mijn huidige Linux server geeft mount:

sjoerd@zolder:~> mount
/dev/hdd5 on / type reiserfs (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
tmpfs on /dev/shm type tmpfs (rw)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/hdd1 on /boot type reiserfs (rw,acl,user_xattr)
/dev/hda5 on /mnt/hda5 type reiserfs (rw,acl,user_xattr)
/dev/hda6 on /home type reiserfs (rw,acl,user_xattr)
/dev/hda7 on /mnt/mp3 type reiserfs (rw,acl,user_xattr)
/dev/hdd6 on /mnt/samba type reiserfs (rw,acl,user_xattr)
/dev/hdd7 on /mnt/backup type reiserfs (rw,acl,user_xattr)
usbfs on /proc/bus/usb type usbfs (rw)
/dev/fd0 on /media/floppy type subfs (rw,nosuid,nodev,noatime,fs=floppyfss,procuid)
/dev/hdc on /media/dvdrecorder type subfs (ro,nosuid,nodev,fs=cdfss,procuid,iocharset=utf8)

Een 0 in de vijfde kolom geeft aan dat een backup met dump de swappartitie niet hoeft te archiveren. Dump wordt echter nog maar zelden gebruikt. Kent of gebruikt u dump niet dan zou ik voor 0 kiezen.

Een 0 in de zesde kolom geeft aan dat fschk het bestandssysteem niet voor het mounten hoeft te controleren. Met een 1 of hoger (voor een hogere prioriteit) wordt het bestandssysteem wel voor het aankoppelen gecontroleerd. Op logbestanden schrijvende bestandssystemen gaat dat redelijk snel, maar met ext2 moest u lang wachten. Maar een schijfcontrole kan ook tot problemen (kernel panic) tijdens het booten leiden. Wees hier dus zuinig mee en beperk het tot de voor het opstarten van het systeem noodzakelijke mappen als root (1) en met een 2 voor de rest (zie man fstab).

Voor verwisselbare media (cdrom, floppy, usbfs) netwerkbronnen, devpts, proc en swap is 0 0 een zinnige keus. Kies ook altijd voor 0 0 op bestandssystemen die niet van linux zijn (vFAT, NTFS, HPFS). Het is vervelend als u een kernel panic melding krijgt voor een vFAT schijf (er is al genoeg Windows ellende). Die kunt u beter vanuit hun eigen besturingssysteem onderhouden.

Met de linux fdisk een schijf onderzoeken

Voordat u een nieuwe fstab ingang maakt, moet u zeker weten dat de lokatie van partitie (onder Linux een device) goed kent.

Bij twijfel gebruikt u de p(rint) optie van fdisk. U verlaat fdisk zonder iets te wijzigen met q(uit): Omdat een vreemde fdisk nogal eng kan zijn, laat ik u zien wat er gebeurd.

sjoerd@visser:~ > su
Password:

Inloggen als superuser.

root@visser:/home/sjoerd > fdisk
Using /dev/hda as default device!

The number of cylinders for this disk is set to 1867.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)

Command (m for help):Command (m for help):

fdisk zonder parameters werkt op de default harde schijf: /dev/hda.

fdisk /dev/hdb zou de slaaf op de 1e IDE controller bekijken.

NB De Linux fdisk meldt netjes dat mijn harde schijf zich voorbij de 1024e cylinder uitstrekt en wat voor consequenties dat heeft.

Command (m for help): m
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition
l list known partition types
m print this menu
n add a new partition
o create a new empty DOS partition table
p print the partition table
q quit without saving changes
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit
x extra functionality (experts only)

De fdisk suggereert meteen maar van de m(anual) optie gebruik te maken.

Door m te toetsen krijgt u het keuzemenu. Het is als een soort help te gebruiken.

Dit menu blijft in een wat uitgestrekte x terminal goed in zicht. Bij twijfel over de juiste commando's roept u het met m weer op.

Belangrijk: Wijzigingen die u aanbrengt worden pas met het w(rite) commando geactiveerd.

Mocht u per abuis iets fout doen, dan kunt u de Linux fdisk zonder gevaar met q(uit) verlaten.

Command (m for help): p

Disk /dev/hda: 255 heads, 63 sectors, 1867 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 136 393 2072385 17 Hidden OS/2 HPFS or NTFS
/dev/hda2 394 1866 11831872+ 5 Extended
/dev/hda3 * 6 135 1044225 6 DOS 16-bit >=32M
/dev/hda4 1 5 40131 16 Hidden DOS FAT16 (big)
/dev/hda5 * 394 425 257008+ 6 DOS 16-bit >=32M
/dev/hda6 * 426 490 522081 6 DOS 16-bit >=32M
/dev/hda7 * 491 620 1044193+ 6 DOS 16-bit >=32M
/dev/hda8 * 621 685 522081 6 DOS 16-bit >=32M
/dev/hda9 * 686 750 522081 6 DOS 16-bit >=32M
/dev/hda10 * 751 1005 2048256 7 OS/2 HPFS
/dev/hda11 * 1006 1024 152586 83 Linux native
/dev/hda12 1025 1284 2088418+ 7 OS/2 HPFS
/dev/hda13 * 1285 1866 4674883+ 83 Linux native

Met de p(rint) optie om de partitietabel te bekijken.

Waarschijnlijk zal uw partitietabel minder ingewikkeld zijn.


Command (m for help): q
root@visser:/home/sjoerd > exit
exit
sjoerd@visser:~ >

De veilige manier om fdisk te verlaten (zonder de partitietabel te wijzigen) is met q(uit).

Tools

> Top <

Er zijn meerdere grafische tools om hetzelfde te doen. Hieronder ziet u Kfstab van de KDE.




Onder Linux kunt u gemakkelijk met de mount opties van partities experimenteren. Ik gebruik hiervoor meestal de editor van de Midnight Commander. Een regel selecteren en met F5 kopieren, de oude ingang met # remmen. Weet u het partitienummer niet meer dan kunt u het even met fdisks Print optie bekijken op een tweede virtual console.

# ################# Linux File Systems ##############################
/dev/hdb6 swap swap defaults 0 0
/dev/hdb7 /mnt/ext2 ext2 defaults 0 0
/dev/hda11 /boot ext2 defaults 1 1
/dev/hda13 / ext2 defaults 1 1
/dev/hdb5 /mnt/hdb5 ext2 defaults 1 1
# ################# FAT File Systems ##############################
/dev/hda1 /mnt/ntfs ntfs user,gid=100,uid=500,umask=077 0 0
# /dev/hda2 extended partition
/dev/hda3 /mnt/w95boot vfat user,gid=100,uid=500,umask=077 0 0
/dev/hda4 /mnt/dosboot vfat user,gid=100,uid=500,umask=077 0 0
/dev/hda5 /mnt/dos vfat user,gid=100,uid=500,umask=077 0 0
/dev/hda6 /mnt/w95 vfat user,gid=100,uid=500,umask=077 0 0
/dev/hda7 /mnt/vapro msdos user,gid=100,uid=500,umask=077 0 0
/dev/hda8 /mnt/data vfat user,gid=100,uid=500,umask=022 0 0
/dev/hda9 /mnt/win vfat user,gid=100,uid=500,umask=077 0 0
# ################# HPFS File Systems ##############################
#/dev/hda10 /mnt/os2 hpfs user,gid=100,uid=500 0 0
#/dev/hda11 /mnt/hpfs hpfs user,gid=100,uid=500 0 0
#/dev/hda10 /mnt/os2 hpfs user,exec,umask=000,case=lower 0 0
#/dev/hdb4 /mnt/hpfs hpfs user,exec,umask=000,case=lower 0 0
/dev/hda10 /mnt/os2 hpfs user,gid=100,uid=500,umask=077 0 0
/dev/hda12 /mnt/hpfs hpfs user,gid=100,uid=500,umask=022 0 0
#/dev/hdb5 /mnt/hpfs2 hpfs user,gid=100,uid=500,umask=077 0 0
# ################# Removable File Systems ##############################
/dev/hdc /cd1 iso9660 ro,noauto,user 0
/dev/hdd /cd2 iso9660 ro,noauto,user 0
/dev/fd0 /floppy vfat noauto,user 0 0
/dev/fd0 /mnt/floppy vfat noauto,user 0 0
# ################# Virtual File Systems ##############################
none /proc proc defaults 0 0
#none /dev/pts devpts defaults 0 0
# End of YaST-generated fstab lines



> Top <