next up previous contents
Next: Automatyczne montowanie Up: System plików Previous: Tworzenie nowych systemów plików   Spis rzeczy

Montowanie i odmontowywanie systemów plików

System operacyjny montuje swój główny system plików (root) rozruchu. Każdy inny system plików może zostać zamontowany w jakimkolwiek katalogu głównego systemu plików, poza /. Kiedy montowanie następuje w niepustym katalogu, jego zawartość jest ukrywana. Pliki i katalogi są niewidoczne dopóki jest tam zamontowany system plików.

Rysunek: Montowanie w niepustym katalogu.
\begin{figure}\centering\includegraphics{witus-obrazki/mount-Model.eps}
\end{figure}
Gdy chcemy zamontować system plików musimy podać poleceniu mount jego typ, urządzenie, na którym on się znajduje i punkt montowania.
[root@222-mo3-2 fs]# mount -t vfat /dev/hda1 /mnt/win_c/
[root@222-mo3-2 fs]# mount | grep win_c
/dev/hda1 on /mnt/win_c type vfat (rw)
Kiedy system plików jest zamontowany informacja o nim jest dodawana do pliku /etc/mnttab (w Linuxie /etc/mtab).
[root@222-mo3-2 fs]# cat /etc/mtab
/dev/hdb1 / reiserfs rw,notail 0 0
none /proc proc rw 0 0
none /proc/bus/usb usbdevfs rw 0 0
none /dev devfs rw 0 0
none /dev/pts devpts rw,mode=0620 0 0
/dev/hdb6 /home reiserfs rw,notail 0 0
/dev/hdb7 /usr reiserfs rw,notail 0 0
/dev/hda1 /mnt/win_c vfat rw 0 0
Wszystkie wersje UNIXa mają funkcje umożliwiające manipulację na tablicy montowania. Najczęściej są to dwie funkcje, których nagłówki znajdują sie w <sys/mnttab.h>:
  1. int getmnttent(FILE *fp, struct mnttab *mp);
  2. int putmnttent(FILE *iop, struct mnttab *mp);
Jak łatwo się domyślić pierwsza służy do odczytywania z tablicy montowania, a druga do zapisywania. Struktura mnttab ma następujące składowe:
char *mnt_special;     /* Urządzenie, na którym znajduje się system plików */
char *mnt_mountp;      /* Punkt montowania */
char *mnt_fstypee;     /* Typ systemu plików */
char *mnt_mntopts;     /* Operacje montowania */
char *mnt_time;        /* Czas montowania */
W Linuxie format tablicy montowań jest trochę inny i funkcje operują na strukturze mntent, która różni się nieco od mnttab. Oto prosty przykład programu odczytującego dane z tablicy:
#include <stdio.h>
#include <mntent.h>

main()
{
  struct mntent *mt;
  FILE *fp;

  fp = fopen("/etc/mtab", "r");

  printf("%-20s%-20s%-30s\n",
         "punkt montowania", "typ systemu plikow", "urzadzenie");
  while ((mt = getmntent(fp)) != NULL) {
    printf("%-20s%-20s%-30s\n",
	   mt->mnt_dir, mt->mnt_type, mt->mnt_fsname);
  }
}
I wynik jego działania:
[root@222-mo3-2 fs]# ./mymount
punkt montowania    typ systemu plikow  urzadzenie
/                   reiserfs            /dev/hdb1
/proc               proc                none
/proc/bus/usb       usbdevfs            none
/dev                devfs               none
/dev/pts            devpts              none
/home               reiserfs            /dev/hdb6
/usr                reiserfs            /dev/hdb7
/mnt/win_c          vfat                /dev/hda1

Odmontowuje system plików polecenie umount, której można podać zarówno urządzenie, na którym system plików się znajduje, jak i punkt jego montowania.


next up previous contents
Next: Automatyczne montowanie Up: System plików Previous: Tworzenie nowych systemów plików   Spis rzeczy
Elżbieta Krępska 2004-01-19