我們知道在存取磁碟前,必須先將該磁碟「掛入」(mount) 一個目錄中,而掛入檔案系統的指令為 mount。它的用法如下:
# mount device mount-point
例如,我們要將 ad0s1e 掛入 /home2 中:
# mount /dev/ad0s1e /home2
在執行 mount 指令前,我們必須確定掛入點存在,如果不在必須先建立目錄。
如果執行 mount 時不加任何參數則可以顯示目前已掛入的檔案系統:
# mount /dev/ad0s1a on / (ufs, local) devfs on /dev (devfs, local) /dev/ad0s1d on /tmp (ufs, local, soft-updates) /dev/ad0s1f on /usr (ufs, local, soft-updates) /dev/ad0s1e on /var (ufs, local, soft-updates) /dev/ad0s1g on /volume2 (ufs, local, soft-updates) /dev/da0s1d on /volume1 (ufs, local, soft-updates)
如果您要卸載一個檔案系統,可以使用 umount 指令。例如,我們要卸載 /usr/local:
# umount /usr/local
如果在卸載檔案系統時出現下列訊息,表示該檔案系統忙碌中,有可能有其它人正在存取它。
# umount /var umount: unmount of /var failed: Device busy
6.3.2 掛入與卸載其它檔案系統
mount 指令除了可以讓我們掛入 FreeBSD 的預設的檔案系統 UFS 外,我們還可以用它來掛入其它 FreeBSD 支援的檔案系統格式。例如,FreeBSD 安裝光碟是一般標準的資料光碟,它的檔案系統格式是 CD9660,我們將該 CD 掛入系統目錄中。首先,請先將光碟放入光碟機中,接著請使用下列指令來掛入光碟片:
# mount -t cd9660 /dev/acd0 /cdrom
在使用 mount 指令時,我們加上參數 -t cd9660 以指定檔案系統格式為 cd9660。我們可以看到在掛入之前,/cdrom 這個目錄是空的,而掛入後就出現了許多資料。光碟機掛入後,您會發現光碟機的退片鍵將失去作用,我們必須先卸載它才可以取出光碟片。
如果您要卸載它,可以使用 umount 指令。如果您在卸載時發生錯誤,請注意您的所在目錄是不是在 /cdrom 下,如果是,必須先離開才可以順利 umount:
# cd / # umount /cdrom
我們說過,掛入點和磁碟分割區之間並沒有必然的關係,您也可以將光碟掛入 /mnt 中,不一定要掛入 /cdrom,將 CDROM 掛入 /cdrom 只是習慣用法而已。
除了一般資料光碟的 cd9660 檔案格式外,FreeBSD 還支援下列常用的檔案格式:
檔案系統格式 | 說明 |
ufs | FreeBSD 預設的檔案系統。 |
ext2fs | Linux EXT2 檔案格式。 |
msdosfs | FAT/FAT32,DOS 相容的檔案系統。 |
ntfs | Windows 的 NTFS。 |
cd9660 | CD-ROM 的檔案系統。 |
udf | DVD 資料光碟格式。 |
nfs | 和 Sun Microsystems 相容的 "Network File System"。 |
smbfs | CIFS/SMB 檔案格式,也就是 Windows 的網路芳鄰,請參考 Samba 網路芳鄰一章。 |
mfs | 本地的 memory-based UNIX 檔案系統。 |
swap | 用來作 swapping 的檔案系統。 |
procfs | 用來存取執行程序(process)的檔案系統。 |
kernfs | 用來存取核心參數(kernel parameter)的檔案系統。 |
您可以在 mount 指令的參數 -t 之後加入上述檔案格式做為參數以掛入正確的檔案系統。或者,您也可以依檔案系統的不同使用 mount_xxxx 指令。例如,要掛入 msdos 檔案系統時,可以使用 mount_msdosfs;要掛入 cd9660 時,可以使用指令 mount_cd9660。您可以在 /sbin 目錄下看到這些 mount 的指令:
# ls /sbin/mount* /sbin/mount* /sbin/mount_mfs* /sbin/mount_procfs* /sbin/mount_cd9660* /sbin/mount_msdosfs* /sbin/mount_std* /sbin/mount_devfs* /sbin/mount_nfs* /sbin/mount_udf* /sbin/mount_ext2fs* /sbin/mount_nfs4* /sbin/mount_umapfs* /sbin/mount_fdescfs* /sbin/mount_ntfs* /sbin/mount_unionfs* /sbin/mount_linprocfs* /sbin/mount_nullfs*
實際上,當您執行 mount 加參數 -t 時,mount 就是會依據 -t 所給的檔案系統去執行相對映的 mount_xxx。
必須注意的是,在 Windows/DOS 作業系統中,有所謂的延伸磁區 (Extended Partitions)。延伸磁區有點像是 FreeBSD 的 slice,在延伸磁區下,會在細分成多個邏輯磁區 (Logical Partitions),當 FreeBSD 遇到這種磁區時,會將各個邏輯磁區編號從第五個 slice 開始 (跳過最多 4 個 slice 的限制)。所以,DOS 中第一個邏輯磁區在 FreeBSD 中的編號就是 ad0s5,第二個邏輯磁區就是 ad0s6,依此類推。
另外,有些檔案系統在 FreeBSD 中只有唯讀的能力。例如 NTFS,我們只能夠讀取該磁區的資料,而無法進行任何寫入的動作。
6.3.3 開機時自動掛入
如果您在安裝 FreeBSD 時是以光碟安裝,您也許會發現只要以下列二個指令其中一個就可以掛入光碟機:
# mount /cdrom # mount /dev/acd0
我們之所以可以這麼做是因為在 /etc/fstab 中已經記錄了 /cdrom 應該要掛入另一個裝置。讓我們來看一下這個檔:
# Device Mountpoint FStype Options Dump Pass# /dev/ad0s1b none swap sw 0 0 /dev/ad0s1a / ufs rw 1 1 /dev/ad0s1d /tmp ufs rw 2 2 /dev/ad0s1f /usr ufs rw 2 2 /dev/ad0s1e /var ufs rw 2 2 /dev/acd0 /cdrom cd9660 ro,noauto 0 0 |
我們可以看到最後一行掛入點 (Mount point) /cdrom 所對映的裝置是 /dev/acd0,而檔案系統格式的欄位中 (FStype) 所指定的格式是 cd9660,所以我們可以不必打完整的指令就可以掛入光碟。
在系統開機時,FreeBSD 會參考 fstab 來決定要將哪些檔案系統掛進來。在 fstab 各個欄位所代表的意義如下:
- Device:裝置名稱,就是要掛入的來源,最常用的是 /dev/ 的檔案,我們說過FreeBSD 將裝置視為檔案,所以這裡填的是 /dev/*。裝置也可以是NFS或是其他的虛擬裝置,如 proc,linpro 等。
- Mountpoint:掛入點,就是你要將來源掛到什麼地方,其中 swap 沒有掛入點,所以是 none。
- FStype:檔案系統就是要掛入的類型,必須在 kernel 中有定義。一般 FreeBSD 的檔案是 ufs,硬碟要掛入的設定就是 ufs。如果是 cdrom 就是 cd9660。請參考上方的檔案系統格式說明。
- Options:參數依各裝置而有所不同,如果開機時不掛入的話(如 cdrom),就必須加入參數 noauto。defaults 設定為 rw、dev、exec、auto、nouser、async。可用的參數如下,加上no 則為相反,如 nouser、noauto:
rw 可讀可寫。 ro 只可讀不可寫。 async 所有資料以非同步方式完成。 atime 每次存取動作都更新檔案時間。 auto 能被 mount -a 自動掛入系統。 dev 解譯檔案系統特性與儲存裝置規格。 exec 允許檔案系統中的二進位元檔被執行。 user 允許一般user 掛入。 sync 所有資料以同步方式完成。 sw swap。 noauto 開機時不掛入。 userquota 使用者磁碟配額限制 (須 kernel 支援 quota)。 groupquota 群組磁碟配額限制 (須 kernel 支援 quota)。 - dump:表示使用指令 dump 時要備份的檔案系統,0表示不要、1表示要。
- pass:這個欄位是給指令 fsck 用的,是檢查的順序。/ 的數字應該是1而其他的檔案系統為2。不需檢查的就是0(如 cdrom,swap 等)。
如果您新增一個分割區,並且希望在開機時自動載入,可以編輯 fstab,並加入您所要掛入的磁區。