剛剛上面說了許多,那麼可不可以在開機的時候就將我要的磁區都掛好呢?!這樣我就不需要每次進入 Linux 系統都還要在掛載一次呀!當然可以囉!那就直接到
/etc/fstab裡面去修修就行囉!不過,在開始說明前,這裡要先跟大家說一說系統掛載的一些限制:
- 根目錄 / 是必須掛載的﹐而且一定要先於其它 mount point 被掛載進來。
- 其它 mount point 必須為已建立的目錄﹐可任意指定﹐但一定要遵守必須的系統目錄架構原則
- 所有 mount point 在同一時間之內﹐只能掛載一次。
- 所有 partition 在同一時間之內﹐只能掛載一次。
- 如若進行卸載﹐您必須先將工作目錄移到 mount point(及其子目錄) 之外。
好了,那麼我們進入 /etc/fstab 看一看吧:
[root@linux ~]# cat /etc/fstab # Device Mount point filesystem parameters dump fsckLABEL=/ / ext3 defaults 1 1 /dev/hda5 /home ext3 defaults 1 2 /dev/hda3 swap swap defaults 0 0 /dev/hdc /media/cdrom auto pamconsole,exec,noauto,managed 0 0 /dev/devpts /dev/pts devpts gid=5,mode=620 0 0 /dev/shm /dev/shm tmpfs defaults 0 0 /dev/proc /proc proc defaults 0 0 /dev/sys /sys sysfs defaults 0 0 |
其實這個 /etc/fstab 就是將我們使用 來掛載一個裝置到系統的某個掛載點, 所需要下達的指令內容,將這些內容通通寫到 /etc/fstab 裡面去,而讓系統一開機就主動掛載囉~ 那麼 mount 下達指令時,需要哪些參數?不就是『裝置代號、掛載點、檔案系統類別、參數』等等, 而我們的 /etc/fstab 則加入了兩項額外的功能,分別是備份指令 dump 的執行與否, 與是否開機進行 掃瞄磁碟呢~
我這個人比較龜毛一點,因為某些 distributions 的 /etc/fstab 檔案排列方式蠻醜的, 雖然每一欄之間只要以空白字元分開即可,但就是覺得醜,所以通常鳥哥就會自己排列整齊, 並加上註解符號,就是 # 字號,來幫我記憶這些資訊!由上面的說明,我們知道 /etc/fstab 內總共有六欄,分別來談一談每一欄的內容吧!
- 磁碟裝置代號或該裝置的 Label:
這個就是裝置代號啦!將您需要的裝置代號給他填上去吧!! 不過,還記得我們的 filesystem 可以擁有標頭名稱吧 (Label)? 沒錯,我們也可以利用 Label 來掛載檔案系統喔!例如上表當中的特殊字體的第一行, 我的根目錄 (/) 就是以 Label 名稱為 / 的磁碟分割槽來掛載的啊! 利用 label 掛載時,您必須要知道您的磁碟內的 label 名稱,可以利用 來讀取, 也可以利用 來更改標頭名稱啊。 在知道了 label 名稱後,最後就可以利用 LABEL=(your label name) 來設定您的裝置囉~
Tips: 記得有一次有個網友寫信給鳥哥,他說,依照 的設定去練習修改自己的 partition 的 Label name 之後,卻發現,再也無法順利開機成功! 後來才發現,原來他的 /etc/fstab 就是以 Label name 去掛載的。但是因為在練習的時候, 將 Label name 改名字過了,導致無法在開機的過程當中順利搜尋到~所以啦, 各位親愛的朋友,這裡再次的強調,利用裝置名稱 (ex> /dev/hda1) 來掛載 partition 時, 雖然是被固定死的,所以您的硬碟不可以隨意插在任意的插槽,不過他還是有好處的。 而使用 Label name 來掛載,雖然就沒有插槽方面的問題,不過,您就得要隨時注意您的 Label name 喔!尤其是新增硬碟的時候! ^_^ | |
- 掛載點 (mount point)::
就是掛載點啊!掛載點是什麼?一定是目錄啊~要知道啊!!!
- 磁碟分割槽的檔案系統:
就如同我們在這個章節一開始就談到的, Linux 在傳統上面,使用的是 ext2/ext3 等檔案系統, 目前則加入了很多日誌式檔案系統,例如 reiserfs 及 XFS 等檔案系統的支援。 此外,存在已久的 Windows vfat, msdos 及 iso9660 的光碟檔案系統, 還有網路檔案系統如 nfs, smbfs 等等,都可以被支援。這個欄位就是寫這些檔案系統的地方啊!
- 檔案系統參數:
每個檔案系統還有很多參數可以加入的,例如中文編碼的 iocharset=big5,codepage=950之類的,當然還有很多常見的參數, 雖然之前在 mount 已經提過一次,這裡我們利用表格的方式再次的說明一下:
參數 | 內容意義 |
async/sync 非同步/同步 | 是否允許磁碟與記憶體中的資料以同步寫入的動作?使用 async 這個非同步寫入的方式會比較快速一些。 |
auto/noauto 自動/非自動 | 在開機的時候是否自動掛載該磁區?既然設定在這個區域內了, 當然希望開機的時候自動掛載囉! |
rw/ro 可讀寫/唯讀 | 讓該磁區以可讀寫或者是唯讀的型態掛載上來,如果是 vfat 之類的非 Linux 傳統磁區,您不想讓 Linux 變更的話,那麼使用 ro 也不錯!能夠提供有效的保護呢! |
exec/noexec 可執行/不可執行 | 限制在此檔案系統內是否可以進行『執行』的工作?如果是純粹用來儲存資料的, 那麼可以設定為 noexec 會比較安全,相對的,會比較麻煩! |
user/nouser 允許/不允許使用者掛載 | 是否允許使用者使用 mount 指令來掛載呢?一般而言,我們當然不希望一般身份的 user 能使用 mount 囉,因為太不安全了,因此這裡應該要設定為 nouser 囉! |
suid/nosuid 具有/不具有 suid 權限 | 該檔案系統是否允許 SUID 的存在?一般而言,如果不是 Linux 系統的磁區,而是一般資料的 partition ,那麼設定為 nosuid 確實比較安全一些!畢竟有 SUID 是蠻可怕的一件事。 |
usrquota | 注意名稱是『 usrquota』不要拼錯了!這個是在啟動 filesystem 支援模式,更多資料我們在第四篇再談。 |
grpquota | 注意名稱是『grpquota』,啟動 filesystem 對群組磁碟配額模式的支援。 |
defaults | 同時具有 rw, suid, dev, exec, auto, nouser, async等參數。 基本上,預設情況使用 defaults 設定即可! |
- 能否被 dump 備份指令作用:
在 Linux 當中,可以利用 dump 這個指令來進行系統的備份的。而 dump 指令則會針對 /etc/fstab 的設定值,去選擇是否要將該 partition 進行備份的動作呢! 0 代表不要做 dump 備份, 1 代表要進行 dump 的動作。 2 也代表要做 dump 備份動作, 不過,該 partition 重要度比 1 小。
- 是否以 fsck 檢驗磁區:
開機的過程中,系統預設會以 fsck 檢驗我們的 partition 內的 filesystem 是否完整 (clean)。 不過,某些 filesystem 是不需要檢驗的,例如虛擬記憶體 swap ,或者是特殊檔案系統, 例如 /proc 與 /sys 等等。所以,在這個欄位中,我們可以設定是否要以 fsck 檢驗該 filesystem 喔。 0 是不要檢驗, 1 是要檢驗, 2 也是要檢驗,不過 1 會比較早被檢驗啦! 一般來說,根目錄設定為 1 ,其他的要檢驗的 filesystem 都設定為 2 就好了。
所以說,如果我想要將我們剛剛練習時,建立的 /dev/hdb5 這個 ext3 的 filesystem 掛載到 /mnt/hdb5 時, 並且在開機的時候就已經自動的掛載好,那麼就可以將底下這一行寫入到 /etc/fstab 當中了:
/dev/hdb5 /mnt/hdb5 ext3 defaults 2 2 |
很簡單吧!所以啦,以後您自己建立的磁碟檔案系統想在開機的時候掛載好時,就在 /etc/fstab 加入吧! 此外,這個 /etc/fstab 還有什麼特殊功能呢?還記得使用 -a 時,我們提到的該參數參考檔案吧?!沒錯啊!就是這個 /etc/fstab 啊!而且,一般來說,
當我們編輯 /etc/fstab 後,為了避免可能的錯誤,通常就會以 mount -a 這個指令來測試看看呢!這是很重要的一個測試動作喔!
另外,您也必須要瞭解到,除了這些磁碟檔案格式之外, 其實在系統裡面還有一些特殊的格式可以掛載來幫助系統的運作的! 例如上表當中非特殊字體的那幾行字!
而 /etc/fstab 是開機時的設定檔,不過,
實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個檔案當中的。每次我們在更動 filesystem 的掛載時,也會同時更動這兩個檔案喔!但是,萬一發生您在 /etc/fstab 輸入的資料錯誤,導致無法順利開機成功,而進入單人維護模式當中,那時候的 / 可是 read only 的狀態,當然您就無法修改 /etc/fstab ,也無法更新 /etc/mtab 囉~那怎麼辦? 沒關係,可以利用底下這一招:
[root@linux ~]# mount -n -o remount,rw / |
加上 -n 則不更新 /etc/mtab ,加上 -o 則提供額外的參數設定。 利用這一動作,嘿嘿!您的 / 就可以讀寫,那麼自然就能夠更新檔案內容囉~