/etc/fstab 檔案解釋
檔案fstab包含了你的電腦上的儲存設備及其檔案系統的資訊。它是決定一個硬碟(分區)被怎樣使用或者說整合到整個系統中的唯一檔案。
這個檔案的全路徑是/etc/fstab。它隻是一個文本檔案,你能夠用你喜歡的編輯器打開它,但是必須是root使用者才能編輯它。同時fsck、mount、umount的等指令都利用該程式。
具體來說:用fstab可以自動挂載各種檔案系統格式的硬碟、分區、可移動裝置和遠端裝置等。對于Windows與arch雙作業系統使用者,用fstab挂載FAT格式和NTFS格式的分區,可以在Linux中共享windows系統下的資源。
fstab檔案示例
現在讓我們看一下一個典型的fstab檔案:
# <file system><dir><type><options><dump><pass>
none /dev/pts devpts defaults 0 0
none /dev/shm tmpfs defaults 0 0
/dev/cdrom /media/cd iso9660 ro,user,noauto,unhide 0 0
/dev/dvd /media/dvd udf ro,user,noauto,unhide 0 0
/dev/fd0 /media/fl auto user,noauto 0 0
/dev/hda1 swap swap defaults 0 0
/dev/hda4 / ext3 defaults 0 1
/dev/hda3 /home xfs rw,suid,exec,auto,nouser,async 0 2
</pass></dump></options></type></dir></file>
fstab詳解
讓我們對fstab的用法進行一個詳細的了解。一個典型的entry有下面的fields (fields用空格或tab分開):
<file system><dir><type><options><dump><pass></pass></dump></options></type></dir></file>
- <file systems> 不是我們通常了解的檔案系統,而是指裝置(硬碟及其分區,DVD光驅等)。它告知我們裝置(分區)的名字,這是你在指令行中挂載(mount)、解除安裝(umount)裝置時要用到的。so one should substitute for this entry the device name, remote partition, or similar. </file>
- <type> 指挂載裝置或分區為何種檔案系統類型(例如:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap等)。 archLinux支援許多檔案系統。 要得到一個完整的支援名單查找mount man-page。典型 的名字包括這些:ext2, ext3, reiserfs, xfs, jfs, smbfs, iso9660, vfat, ntfs, swap和auto, 'auto' 不是一個檔案系統,而是讓mount指令自動判斷檔案類型,特别對于可移動裝置,軟碟,DVD驅動器,這樣做是很有必要的,因為可能每次挂載的檔案類型不一緻。 </type>
- <options>,選項,這部分是最有用的設定!!! </options>
它能使你所挂載的裝置在開機時自動加載、使中文顯示不出現亂碼、限制對挂載分區讀寫權限。它是與mount指令的用法相關的,要想得到一個完整的清單,參考mount manpage.
-
- 推薦參數
noatime 關閉atime特性,提高性能,這是一個很老的特性,放心關閉,還能減少loadcycle
-
- 預設設定
defaults 使用預設設定。等于rw,suid,dev,exec,auto,nouser,async,具體含義看下面的解釋。
-
- 自動與手動挂載
auto 在啟動或在終端中輸入mount -a時自動挂載
noauto 裝置(分區)隻能手動挂載 The file system can be mounted only explicitly.
-
- IO編碼設定
iocharset= 在=号後面加入你的本地編碼,似乎在這個裝置(分區)中做檔案IO的時候就會自動做編
碼的格式轉換。
例如:你的某個分區是編碼是utf8,而裝置中檔案的編碼是gb2312,當是複制你裝置中的檔案到你的這
個分區時,它将自動做編碼轉換。
(不知道我的了解對不對,但是好像用下面的nls就可以實作轉換。)
-
- 中文亂碼的解決
nls= 在=号後面加入你的本地編碼,你的中文就不會出現亂碼。
-
- 讀寫權限
umask= 這是關于讀寫權限的,好像比下面的ro,rw選項更管用!!!
例如:umask=000或0222,使得挂載時option中有default,普通使用者仍然能讀寫挂載裝置中的東西。
請大家補充!!!
ro 挂載為隻讀權限
rw 挂載為讀寫權限
-
- 可執行
exec 是一個預設設定項,它使在那個分區中的可執行的二進制檔案能夠執行。
noexec 二進制檔案不允許執行。千萬不要在你的root分區中用這個選項!!!
-
- I/O同步
sync 所有的I/O将以同步方式進行
async 所有的I/O将以非同步方式進行
-
- 使用者挂載權限
user 允許任何使用者挂載裝置。 Implies noexec,nosuid,nodev unless overridden.
nouser 隻允許root使用者挂載。這是預設設定。
suid Permit the operation of suid, and sgid bits. They are mostly used to allow users on a computer system to execute binary executables with temporarily elevated privileges in order to perform a specific task.
nosuid Blocks the operation of suid, and sgid bits.
- <dump> 是dump utility用來決定是否做備份的. 安裝之後(Arch Linux預設是不安裝dump的), dump會檢查entry并用數字來決定是否對這個檔案系統進行備份。允許的數字是0和1。如果是0,dump就會忽略這個檔案系統,如果是1,dump就會作一個備份。大部分的使用者是沒有安裝dump的,是以對他們而言<dump>這個entry應該寫為0。 </dump></dump>
- <pass> fsck會檢查這個頭目下的數字來決定檢查檔案系統的順序(looks at the number substituted for <pass> and determines in which order the file systems should be checked)。允許的數字是0, 1, 和2。 檔案系統的<pass>選項是0将不會被fsck utility檢查。root檔案系統應該擁有最高的優先權, 1,而所有其它的檔案系統,如果你想讓它被check的話,應該寫成2。 </pass></pass></pass>
注意: 除了直接用裝置(分區)名字,你也可以用UUID或卷名。格式 LABEL= or UUID=<uuid>。例如, `LABEL=Boot' or `UUID=3e6be9de-8139-11d1-9106-a43f08d823a6'. </uuid>
用fstab自動挂載FAT32和NTFS檔案系統
1.先在用fdisk -l(可能需要在root權限下)得到硬碟資訊表,例如:
# Device Boot Start End Blocks Id System
/dev/sda1 * 1 2397 19253871 b W95 FAT32
/dev/sda2 2398 3144 6000277+ 83 Linux
/dev/sda3 3145 9729 52894012+ 5 Extended
/dev/sda5 3145 3152 64228+ 83 Linux
/dev/sda6 3153 3276 995998+ 82 Linux swap / Solaris
/dev/sda7 3277 7340 32644048+ 83 Linux
/dev/sda8 7341 9729 19189611 7 HPFS/NTFS
從上面知道,這台電腦上隻有一個硬碟,其中分區sda1和sda8為NTFS格式,sda1為可以啟動的,因而可能為window的系統所在盤。下面把系統盤以隻讀方式持載上去,非系統盤sda8以讀寫方式挂載上去(不能挂載在"/"及其以下的任何目錄)。
2.用你喜歡的編輯器在終端中打開/etc/fstab,例如:
nano /etc/fstab
在檔案末尾加入:
/dev/sda1 /mnt/WindowsC vfat defaults,codepage=936,iocharset=cp936,umask=0222 0 0
/dev/sda8 /mnt/WindowsD ntfs defaults,iocharset=utf8,umask=000,nls=utf8 0 0
儲存,退出。
警告:使用936的codepage挂在fat32分區可能會造成linux下識别中文正常但是到windows下反而出現亂碼,推薦替換成utf8,但是dmesg提示警告,沒有關系,n多人用了這麼長時間都沒有問題
/dev/sda1 /mnt/WindowsC vfat user,utf8,umask=000 0 0
3.在終端中輸入
mount -a