本文部分引自https://blog.csdn.net/baimaozi/article/details/3134267?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-3.nonecase。感謝baimaozi的分享!
我用的是manjaro發行版,屬於arch系,所以大部分arch的方法都可以嘗試。然后archwiki上的方法雖然也是安裝ntfs-3g,但是配置方法與下文有所不同,並且我沒弄起來,終端報錯,不知道什么鬼。
正文:
裝好manjaro后,雖然可以訪問windows的盤,但是只能讀不能寫入文件,有點煩。而且一開始在dolphin中會這樣顯示:
沒掛載的盤上有黃色的東西。
就是沒掛載的盤一開始linux是檢測不到的,比如用kdiskfree。
為了實現讀寫ntfs文件系統的功能,我們采用ntfs-3g方案。
我們先安裝ntfs-3g.
sudo pacman -S ntfs-3g
tips:我發現裝了這個包重啟后我就可以在windows盤中新建文件了,雖然我也不知道為什么。也就是說你已經可以寫盤了。但是要做到開機即能檢測到盤,我們還是將它掛載。
我們查看下哪個分區是NTFS分區.
sudo /sbin/fdisk -l
例如我的:
Disk /dev/sda:476.94 GiB,512110190592 字節,1000215216 個扇區
磁盤型號:SAMSUNG MZNLN512
單元:扇區 / 1 * 512 = 512 字節
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:gpt
磁盤標識符:4BFE448F-5A16-4E19-807A-53C69FFCD1FA
設備 起點 末尾 扇區 大小 類型
/dev/sda1 2048 616447 614400 300M EFI 系統
/dev/sda2 616448 878591 262144 128M Microsoft 保留
/dev/sda3 878592 208931835 208053244 99.2G Microsoft 基本數據
/dev/sda4 208932864 210595839 1662976 812M Windows 恢復環境
/dev/sda5 210595840 439187455 228591616 109G Microsoft 基本數據
/dev/sda6 439187456 606957567 167770112 80G Microsoft 基本數據
/dev/sda7 832444416 1000214527 167770112 80G Microsoft 基本數據
/dev/sda8 606957568 832444415 225486848 107.5G Linux 文件系統
分區表記錄沒有按磁盤順序。
Disk /dev/loop0:67.56 MiB,70844416 字節,138368 個扇區
單元:扇區 / 1 * 512 = 512 字節
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
Disk /dev/loop1:86.25 MiB,90435584 字節,176632 個扇區
單元:扇區 / 1 * 512 = 512 字節
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
Disk /dev/loop2:96.63 MiB,101318656 字節,197888 個扇區
單元:扇區 / 1 * 512 = 512 字節
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
知道哪個是 NTFS分區 后,(我想掛載sda6和sda7)我們來編輯/etc/fstab,實現自動掛載.
sudo vi /etc/fstab
或者sudo nano /etc/fstab
來打開/etc/fatab
加入類似如下的內容:(只是一個例子)
/dev/sda1 /mnt/windows ntfs-3g users,noauto,uid=1000,gid=100,fmask=0113,dmask=0002,locale=zh_CN.utf8 0 0
/dev/sda6 /mnt/backup ntfs-3g users,uid=1000,gid=100,fmask=0113,dmask=0002,locale=zh_CN.utf8 0 0
#/mnt是根目錄下路徑,是你的NTFS文件系統的掛載點。windows或者backup都是名字,可以隨便取。
重啟,你就會發現開機后dolphin中原來windows盤上的黃東西沒了。用kdiskfree查看會發現我的sda6和sda7掛載完畢:
寫入代碼的特點為:
- 可以讓任何用戶掛載和卸載你的NTFS分區。
- user(uid=1000)和group(gid=100)擁有分區的所有文件,並且對文件有-rw-rw-r-- (0664)權限,對目錄有drwxrwxr-x (1775)權限。
- 使用zh_CN.utf8作為locale
- /dev/sda6在啟動時自動掛載,/dev/sda1則不會
其模式為:
典型的、非常有用的ntfs-3g選項
* users - 假如ntfs-3g可執行文件設置了SUID root(命令:chmod u+s /bin/ntfs-3g),則允許任何人掛載/卸載NTFS分區。請注意,你要用users而不是user
* noauto - 啟動時不要自動掛載分區 #慎用!
* uid - 指定NTFS分區中文件和目錄的擁有者(用十進制數表示)
* gid - 指定NTFS分區中文件和目錄的用戶組(用十進制數表示)
* fmask - 文件權限(八進制數掩碼)
* dmask - 目錄權限(八進制數掩碼)
* locale - 通常用來讓使用國際化字符集的文件可見
掩碼值
要無需任何計算就可以較易弄懂特定權限的掩碼值,可以這樣做:
- 啟動一個新的shell會話。使用任何你喜好的終端模擬器。
- 使用umask命令獲得指定權限設置的八進制數。
- 使用umask"設置"文件創建時掩碼。例如:
$ umask ug=rw,o=r
請注意ug=rw,o=r等於-rw-rw-r--或者0664。 - 直接不帶參數執行umask獲取八進制數。
$ umask
將會顯示
0113
原文基礎上補充:如果你不小心寫錯了,導致系統啟動時找不到文件系統,然后進入了emergency mode,別慌。輸入你的root密碼(不會顯示),按回車,進入終端模式,然后sudo nano /etc/fstab
把原來改的東西改回去或者查看錯誤,保存重啟就應該ok了。另外,如果Linux系統只有一個用戶,建議參閱archwiki上ntfs—-3g 的配置方案。因為上述方案即使是關閉了Windows的快速啟動,仍偶爾會發生掛載失敗的問題。
- 使用umask"設置"文件創建時掩碼。例如: