Mount

7 Het koppelen van bestandssystemen

In het Linux-systeem staat geconfigureerd welke partitie tijdens het opstarten de '/' (root-directory, hoofdmap) van het systeem wordt. Vervolgens kunnen er koppelingen worden gelegd tussen bestandssystemen en mappen. Dit staat ook bekend als het 'mounten' van bestandssystemen. Mounten kan normaal gesproken alleen door de root of systeembeheerder gebeuren.

mount

De mount opdracht kan een partitie aan het Linux-systeem koppelen. De opdracht zonder verdere argumenten geeft een weergave van de op dit moment gemounte (gekoppelde) bestandssystemen:

sntcursist@l092pc01:~> mount
/dev/sda8 on / type ext4 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
devtmpfs on /dev type devtmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,mode=1777)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda7 on /usr/home/Documents type ext3 (rw)
/dev/sda2 on /var/backup type ext3 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
/dev/sda1 on /windows/C type fuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sda4 on /windows/D type fuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096,default_permissions)
securityfs on /sys/kernel/security type securityfs (rw)

Zoals je ziet komt in deze lijst de partitie /dev/sda3 niet voor. Wel zie je dat de eerste koppeling tussen '/' en /dev/sda8 is gelegd. Men zegt dan dat 'de hoofdmap op /dev/sda8 is gemount'. Voor het koppelen van een partitie aan een bestandssysteem dient er een map te bestaan om de koppeling mee te leggen. Als de map niet leeg is, is dat niet erg. Je kunt dan voorlopig niet meer bij de originele bestanden in die map.

Eerst maak je een geformatteerde virtuele diskette:

sntcursist@l092pc01:~> sudo dd if=/dev/zero of=/dev/fd2 bs=512 count=2880
sntcursist@l092pc01:~> sudo /sbin/mkfs /dev/fd2

De koppeling wordt als volgt gelegd:

sntcursist@l092pc01:~> sudo mkdir /mnt/floppy
sntcursist@l092pc01:~> sudo mount /dev/fd2 /mnt/floppy -o loop

Je krijgt geen meldingen te zien. Hier geldt: “geen nieuws is goed nieuws”. Het argument -o loop wordt hier gebruikt omdat je met een virtuele diskette werkt. Als je informatie wilt, kun je het argument '-v' meegeven.

sntcursist@l092pc01:~> sudo mount /dev/fd2 /mnt/floppy -o loop -v
mount: lus-apparaat /dev/loop0 zal worden gebruikt
mount: U gaf geen bestandssysteemsoort aan voor /dev/loop0;
soort ext2 wordt geprobeerd
/dev/loop0 on /mnt/floppy type ext2 (rw)

Als je nu alleen de mount opdracht geeft staat de map 'mnt/floppy' er ook in vermeld:

sntcursist@l092pc01:~> mount
/dev/sda8 on / type ext4 (rw,acl,user_xattr)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
debugfs on /sys/kernel/debug type debugfs (rw)
devtmpfs on /dev type devtmpfs (rw,mode=0755)
tmpfs on /dev/shm type tmpfs (rw,mode=1777)
devpts on /dev/pts type devpts (rw,mode=0620,gid=5)
/dev/sda7 on /usr/home/Documents type ext3 (rw)
/dev/sda2 on /var/backup type ext3 (rw)
fusectl on /sys/fs/fuse/connections type fusectl (rw)
/dev/sda1 on /windows/C type fuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096,default_permissions)
/dev/sda4 on /windows/D type fuseblk (rw,noexec,nosuid,nodev,allow_other,blksize=4096,default_permissions)
securityfs on /sys/kernel/security type securityfs (rw)

/dev/loop0 on /mnt/floppy type ext2 (rw)

Achter het type bestand zie je de tekst '(rw)' vermeld staan. Dit betekent dat dit bestandssysteem met de optie 'read-write' is gemount. Je kunt ook de optie 'ro' meegeven.

umount

De logische tegenhanger van de 'mount' opdracht is de 'umount' opdracht. Je dient daarbij óf de map, óf de gebruikte partitie op te geven. Het ontkoppelen ('unmounten') van de map mnt kan dus als volgt:

sntcursist@l092pc01:~> sudo umount /dev/loop0

of

sntcursist@l092pc01:~> sudo umount /mnt/floppy/

Dit unmounten kan alleen als de betreffende map niet door iemand gebruikt wordt. Anders zie je de volgende melding:

sntcursist@l092pc01:~> cd /mnt/floppy/
sntcursist@l092pc01:/mnt/floppy> sudo umount /mnt/floppy/
umount: /mnt/floppy: apparaat is bezig
(Welke processen het apparaat gebruiken kan mogelijk
gevonden worden met behulp van lsof(8) of fuser(1).)

Op dat moment moet je op zoek gaan naar de oorzaak van deze melding. Sta je zelf in de betreffende map? Is er nog een programma actief dat vanaf deze map gestart is?

Indien je een map niet kunt afkoppelen, kun je opdracht umount voorzien van het argument -l (lazy), waardoor de umount opdracht de map zal afkoppelen vanaf het moment dat dit mogelijk wordt.

Systeemstart

Tijdens het opstarten van het systeem worden één of meer bestandssystemen gemount. Dit gebeurt door opstartscripts die allerlei controles doen en diverse systeembestanden lezen. Eén van die bestanden is /etc/fstab. In dit bestand staat een lijst van de beschikbare bestandssystemen en op welke plaats zij gemount moeten worden.

sntcursist@l092pc01:~> cat /etc/fstab
/dev/sda5 swap swap defaults 0 0
/dev/sda8 / ext4 acl,user_xattr 1 1
/dev/sda7 /usr/home/Documents ext3 defaults 1 2
/dev/sda2 /var/backup ext3 defaults 1 2
/dev/sda1 /windows/C ntfs-3g users,gid=users,fmask=133,dmask=022,locale=nl_NL.UTF-8 0 0
/dev/sda4 /windows/D ntfs-3g users,gid=users,fmask=133,dmask=022,locale=nl_NL.UTF-8 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs noauto 0 0
debugfs /sys/kernel/debug debugfs noauto 0 0
usbfs /proc/bus/usb usbfs noauto 0 0
devpts /dev/pts devpts mode=0620,gid=5 0 0

Elke regel bevat als eerste de device file van de betreffende partitie, vervolgens de map waarmee de koppeling tot stand moet worden gebracht (mount point), daarna het type bestandssysteem en daarna een aantal opties en twee vlaggen.

Als je wilt dat het bestandssysteem /dev/sda6 bij het opstarten van het systeem gemount wordt aan /media/muziek, dan dient de volgende regel toe worden toegevoegd:

/dev/sda6 /media/muziek ext4 ro 0 0

Men kan daarbij uit de volgende opties kiezen:

defaults Geen speciale opties, alles standaard.

user Een gewone gebruiker mag dit bestandssysteem mounten. Vervolgens kan hij of zij via deze map de informatie benaderen.

users Elke gebruiker mag dit bestandssysteem mounten en unmounten.

ro Read-only bestandssysteem. Kan alleen van gelezen worden.

noauto Wordt niet automatisch gemount als het systeem wordt opgestart.

exec Van dit bestandssysteem mogen gebruikers programma's opstarten.

loop Gebruikt geen apparaat maar een bestand (image)

De twee vlaggen hebben achtereenvolgens de volgende betekenis. De eerste vlag betekent dat de opdracht `dump` van dit bestandssysteem een back-up moet maken (1=ja, 0=nee). De tweede vlag heeft invloed op het controleren van het bestandssysteem bij een filesystem check. Een 0 betekent 'geen check', een '1' betekent 'als eerste checken' en een '2' betekent 'overige'. Voor de hoofdmap staat er een 1.

Het bestand /etc/fstab kan door jouw als systeembeheerder naar wens met behulp van een editor als joe worden aangepast.

In het hierboven aangegeven voorbeeld moet de map /media/muziek bestaan, anders zal het mounten van /dev/sda6 bij het opstarten van de computer mislukken. Voor je deze grote stap zet, kun je met de opdracht `sudo mount -a` testen of er geen fouten in het bestand /etc/fstab staan (beter voorkomen, dan genezen).

Opdrachten

Normaal zal het systeem zorgen voor het mounten (aankoppelen) en unmounten (afkoppelen) van de aanwezige bestandssystemen (waaronder ingeplugde USB-apparaten). In de opdrachten ga je een paar nuttige toepassingen van het manueel gebruik van mounten en unmounten zien.

  1. Om Windows XP op de VMWare Player te kunnen installeren moet je van de VMWare site een diskette image downloaden met drivers. Surf naar www.vmware.com/download en download via Desktop Downloads de SCSI Disk Drivers voor VMWare Workstation.

    1. Hoe groot is het gedownloade bestand?

    2. Start een terminal.

    3. Voer de opdracht `sudo mount /PAD/BESTANDSNAAM /mnt` (waarbij /PAD/BESTANDSNAAM moet aangepast worden naar de plaats en naam van het gedownloade bestand) uit.
      Wat moet je proberen (lees opmerking)?

    4. Voer de opdracht `sudo mount /PAD/BESTANDSNAAM /mnt -o loop` uit.

    5. Open in Dolphin de map /mnt. Je ziet nu de inhoud van het gedownloade bestand (diskette image).

      1. Hoeveel bestanden staan op deze image?

      2. Voer in de terminal de opdracht `sudo umount /mnt` uit.
        Wat merk je in het Dolphin-venster?

      3. Sluit het Dolphin venster.

  2. Nog interessanter is dezelfde techniek toe te passen op CD's of DVD's.

    1. Start de terminal.

    2. Met de opdracht `sudo mkdir /mnt/DVD` maak je een nieuwe map.

    3. Koppel het bestand ~/Documenten/Kiwi/openSUSE-11.3-livecd-kde.i686-2.8.0.iso aan de map /mnt/DVD.

    4. Bekijk de inhoud van de DVD image.

      1. Wat is het grootste bestand in de DVD image?

      2. Hoe groot is het grootste bestand?

    5. Koppel de map /mnt/DVD los van het ISO-bestand.

    6. Wis de map met de opdracht `sudo rm -r /mnt/DVD`.

  3. Partities op harde schijven van virtuele computers kun je op de volgende manier beheren:

    1. Installeer indien nodig de VMware Player (zie p.23)

    2. Pak het bestand ~/Documenten/VMware/vmdk.tar.gz uit naar de Persoonlijke map.

    3. Maak de map /mnt/VMDK.

    4. Met de opdracht `sudo vmware-mount Other\ Linux\ 2.6.x\ kernel/Other\ Linux\ 2.6.x\ kernel.vmdk -p` kun je te weten komen welke partities de virtuele harde schijf in het vmk-bestand aanwezig zijn.

      1. Welk bestandssysteem bevat de eerste primaire partitie?

    5. Met de opdracht `sudo vmware-mount Other\ Linux\ 2.6.x\ kernel/Other\ Linux\ 2.6.x\ kernel.vmdk 2 /mnt/VMDK` koppel je de tweede partitie van de virtuele harde schijf aan de map /mnt/VMDK.

      1. Bekijk de inhoud van de tweede virtuele partitie.

      2. Wat is de inhoud van het enige bestand op deze partitie?

    6. Koppel alle gekoppelde virtuele partities los met de opdracht `sudo vmware-mount -x`.

    7. Verwijder de map /mnt/VMDK.

  4. Nu ga je een lege image maken en opvullen met gegevens.

    1. Gebruik de opdracht `dd if=/dev/zero of=diskette.img bs=512 count=2880` om een lege image aan te maken.

      1. Waarvoor zorgt het argument bs?

      2. Waarvoor het argument count?

    2. Met de opdracht `sudo /sbin/mkfs -t msdos diskette.img` krijgt het image een bestandssysteem.
      Welk type bestandssysteem kreeg het image?

    3. Koppel het image diskette.img aan de map /mnt/Diskette.

    4. Kopieer met Dolphin als gebruiker sntcursist het bestand ~/Documenten/Bestandsbeheer/gpl-3.0.txt naar de image. Wat merk je?

  5. Je hebt geen schrijfrechten op de diskette. Los dit als volgt op:

    1. Koppel het image terug los van de map /mnt/Diskette.

    2. Koppel het image aan de map /mnt/Diskette, gebruik daarbij wel het argument '-o loop,umask=0002,gid=users,uid=sntcursist'.

    3. Kopieer met Dolphin als gebruiker sntcursist het bestand ~/Documenten/Bestandsbeheer/gpl-3.0.txt naar de image.

    4. Bekijk bij de Eigenschappen van het gekopieerde bestand de Toegangsrechten.

      1. Wie is eigenaar van het bestand?

      2. Bekijk eveneens de Geavanceerde toegangsrechten.
        Vaststelling:

    5. Koppel het image terug los van de map /mnt/Diskette.

    6. Wis de map /mnt/Diskette.

    7. Wis het bestand diskette.img.

  6. Bij DVD's die je veel gebruikt, kun je aankoppelen tijdens het opstarten van het systeem.

    1. Maak de map /mnt/image.

    2. Open als systeembeheerder met een teksteditor het bestand die bij het opstarten van de computer zorgt voor het mounten van bestandssystemen.

    3. Stel eerst de regel samen die je straks gaat toevoegen. Deze regel moet voldoen aan:

      1. Het image ~/Documenten/Kiwi/openSUSE-11.3-livecd-kde.i686-2.8.0.iso wordt gekoppeld aan de map /mnt/image.

      2. De image mag alleen gelezen worden.

      3. De gebruikers moeten programma's kunnen opstarten vanaf de DVD.
        De regel wordt:

    4. Voeg deze regel toe aan het configuratiebestand.

    5. Test of de aanpassing gelukt is.

    6. Sluit alle programma's.

    7. Herstart de computer en controleer of alles naar wens verliep.

  7. Ook het internet kan je koppelen in de mappenstructuur van uw computer. We gebruiken hier FTP, maar hetzelfde systeem kan gebruikt worden om WebDAV, SVN, CIFS, NFS, SSH, enz. servers te benaderen. De hier beschreven methode laat gewone gebruikers toe in hun persoonlijke map onderdelen te koppelen. Alleen die ene gebruiker kan er dan ook gebruik van maken.

    1. Installeer het pakket curlftpfs.

    2. Maak de map ~/FTP/Belnet.

    3. Koppel met de opdracht `curlftpfs ftp.belnet.be FTP/Belnet/` de internet FTP server aan de map ~/FTP/Belnet.

    4. Open de map ~/FTP/Belnet. Hoeveel mappen bevat deze map?

    5. Navigeer verder op Belnet naar ~/FTP/Belnet/mirror/ftp.opensuse.org/update/11.3/.

      1. Hoeveel mappen staan in deze map?

      2. Wat bevat deze map?

    6. Koppel Belnet terug af met de opdracht `fusermount -u FTP/Belnet/`.

  8. Schrijf een script om achtereenvolgens de volgende zaken uit te voeren:

    1. De map ~/FTP/Belnet aanmaken.

    2. Koppel de FTP-server ftp.belnet.be aan de map ~/FTP/Belnet.

    3. Test het script tot het werkt.

    4. Plaats het script in de map ~/.kde4/Autostart.

    5. Test het script door je af te melden en terug aan te melden.

  9. Schrijf een tweede script om achtereenvolgens de volgende zaken uit te voeren:

    1. Koppel de FTP-server Belnet los van de map ~/FTP/Belnet.

    2. Verwijder de map ~/FTP/Belnet.

    3. Test het script tot het werkt.

    4. Plaats het script in de map ~/.kde4/shutdown.