Linux下通過修改fstab來自動掛載Windows 分割槽
後來有一天浩哥看到了,說可以在Linux開機時自動掛載Windows分割槽的,修改/etc/fstab這個檔案,可以採用每個分割槽的UUID.後來校長也看到了我每次麻煩的操作,說是確實可以搞,而且他已經搞定了.我想我也得搞搞了.
首先就是man mount ,mount裡面提到,UUID和LABEL的方式更健壯,更具魯棒性.浩哥說的果然是對的.
mount裡面也提到可以參照fstab的manual文件,所以在man fstab後發現,fstab檔案是一個多檔案系統的資訊描述檔案,應用程式不能修改它,而它的維護和修改任務則需要系統管理員來完成.每個檔案系統在fstab中表示為一行,一行有多個域(field),每個域用空格或tab鍵隔開.下面我們就看一下各個域及其含義.
六個域名稱如下:
<file system> <mount point> <type> <options> <dump> <pass>
<pre> 這是兩個檔案系統的例子:
UUID=22b1037f-6c5e-46d0-b965-44cc42313795 / ext4 errors=remount-ro 0 1
UUID=7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8 /home ext4 defaults 0 2
</pre>
1.file system:表示將要掛在的快裝置的名稱.注意這個裝置也可以是遠端裝置,比如說是遠端伺服器上的某個裝置,後面我會舉一個例子.對於本地裝置,該域格式可以是/dev/cdrom,LABEL=<label>,或者UUID=<uuid>;對於遠端檔案系統,格式為<host>:<dir>,如 freeshell.ustc.edu.cn:/.遠端裝置格式好寫,對於本地裝置,如何獲取UUID 號和LABEL呢?要掛載的/dev/sdb1還是/dev/sda5呢?這個可以用blkid命令檢視:
<pre>sudo blkid
/dev/sda1: LABEL="M-gM-3M-;M-gM-;M-^_M-dM-?M-^]M-gM-^UM-^Y" UUID="9ED61632D6160B63" TYPE="ntfs" PARTUUID="5be4a3f9-01"
/dev/sda2: UUID="908265F98265E466" TYPE="ntfs" PARTUUID="5be4a3f9-02"
/dev/sda3: UUID="98B6FE61B6FE3EF6" TYPE="ntfs" PARTUUID="5be4a3f9-03"
/dev/sda5: UUID="7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8" TYPE="ext4" PARTUUID="5be4a3f9-05"
/dev/sda6: UUID="22b1037f-6c5e-46d0-b965-44cc42313795" TYPE="ext4" PARTUUID="5be4a3f9-06"
</pre>
我們知道,Windows系統的分割槽格式是ntfs(new technology file system),從上面的輸出中我們可以知道,要掛載的Windows分割槽是/dev/sda2和/dev/sda3.因為這兩個分割槽沒有LABEL,所有就沒法採用LABEL=<label>的方式來表示第一個域了.所以我們要掛載的兩塊Windows分割槽的第一個域可以這樣寫:
<pre>#C盤
/dev/sda2
#D盤
/dev/sda3
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466
#D盤
UUID=98B6FE61B6FE3EF6
</pre>
第一個域就寫好了,下面看第二個域.
2.mount point: 即掛載點,使用過mount命令的同學應該明白這個域是幹什麼的,簡單來說就是將物理的儲存盤在Linux系統中找一個點放置下來,相當於在Linux檔案樹上找一個點,將物理儲存對應到這個點上.掛載在這個點後,所有對該點的操作都會寫入到對應的物理儲存中.在最頂上的掛載例子中,我們看到UUID=22b1037f-6c5e-46d0-b965-44cc42313795(從blkid命令結果可以看出,該分割槽是/dev/sda6)的物理儲存掛載到了/目錄(Linux系統根目錄),也就是說/目錄下面的所有東西都寫入到該分割槽中(/home目錄除外),同理,所有/home目錄下的內容都寫入到UUID=7c4b5af9-599b-4052-aeb1-5dbd78f4d8e8(從blkid命令結果可以看出,該分割槽是/dev/sda5)的分割槽中.
那麼,我們要把C盤和D盤掛載到哪裡呢?我是這樣做的:
a.先檢視沒有自動掛載Windows分割槽之前,手動掛載時,系統會把C盤和D盤掛載到哪,結果如下:/media/wang(wang是我的使用者名稱),C盤被命名為908265F98265E466,D盤被命名為98B6FE61B6FE3EF6,即其相應的UUID.
b.所以我想,可能是掛載到/media目錄下的任意一個子目錄下吧,
所以我將該域分別設定為/media/c和/media/d,綜合前兩個域,應該寫成:
<pre>#C盤
/dev/sda2 /media/c
#D盤
/dev/sda3 /media/d
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466 /media/c
#D盤
UUID=98B6FE61B6FE3EF6 /media/d
</pre>
下面看第三個域type:
3.type 即檔案系統的格式,像Linux下常用的 ext,ext1,ext2,ext3,Windows下常用的fat16,fat32,ntfs等.可以根據blkid命令的結果來寫該域.根據blkid的結果, 我們要掛載的C盤和D盤的檔案系統格式為ntfs,所以前三個域都確定了,有如下寫法:
<pre>#C盤
/dev/sda2 /media/c ntfs
#D盤
/dev/sda3 /media/d ntfs
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466 /media/c ntfs
#D盤
UUID=98B6FE61B6FE3EF6 /media/d ntfs
</pre>
4.第四個域是option:選項,該域表示掛載的時候的一些選項,主要有6個選項,每個選項用逗號隔開,下面詳細說明每個選項的含義:
<pre>default:使用預設選項
noauto:當執行mount -a(即掛載全部檔案系統,開機時會執行此命令)時忽略此條記錄,也就是跟沒寫進fstab一樣
user:允許特定的使用者來掛載,如user=bob,則只能允許bob這個使用者來掛載
owner:允許物理裝置的擁有者來掛載
comment:為fstab維護程式提供一些說明
nofail:在掛載失敗後,忽略此錯誤,繼續往下執行
</pre>
因為我們沒有特殊要求,所以就選default,但nofail這個選項後面我會用到,暫且不表.所以前四個域可以寫成這樣子:
<pre>#C盤
/dev/sda2 /media/c ntfs default
#D盤
/dev/sda3 /media/d ntfs default
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466 /media/c ntfs default
#D盤
UUID=98B6FE61B6FE3EF6 /media/d ntfs default
</pre>
5.第5個域是dump,dump這個命令執行備份操作,該域為0,表示執行dump操作時忽略該分割槽,如果為1,則表示執行dump時也會備份該分割槽.因為我們沒有備份的需求,所以該域設定為0,所以前五個域為:
<pre>#C盤
/dev/sda2 /media/c ntfs default 0
#D盤
/dev/sda3 /media/d ntfs default 0
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466 /media/c ntfs default 0
#D盤
UUID=98B6FE61B6FE3EF6 /media/d ntfs default 0
</pre>
6.最後一個域是pass,不是passwd的pass,而是系統重啟時檢查分割槽正常與否時,該分割槽的檢查順序.根目錄所在檔案系統的passno是1,其他檔案分割槽為2.如果設定為0,則表示不檢查.我們的C盤和D盤不想讓Linux檢查,所以設定為0.
所以綜合以上步驟,我們可以寫出下面的完整的兩條記錄:
<pre>#C盤
/dev/sda2 /media/c ntfs default 0 0
#D盤
/dev/sda3 /media/d ntfs default 0 0
</pre>
或者:
<pre>#C盤
UUID=908265F98265E466 /media/c ntfs default 0 0
#D盤
UUID=98B6FE61B6FE3EF6 /media/d ntfs default 0 0
</pre>
按理來說這兩種形式都可以的,將任一種形式的兩條記錄新增到fstab檔案中,重新啟動系統,下次開啟Windows系統的分割槽時,應該就不需要輸入密碼了.