如果你使用的是雙系統,在使用 Linux 時可能會經常用到 Windows 磁區的檔案,雖然在環境桌面裡的檔案管理器通常能夠點選左側磁碟掛載,但每次掛載都得輸一次密碼進行系統調用,由於是臨時掛載,重開機後開啟檔案管理器就會提示之前打開的頁籤位置不存在,多次後便覺麻煩,寫成開機掛載就沒這問題了。

NTFS3 vs NTFS-3g

以前內核僅提供唯讀的 NTFS 驅動,需要安裝 NTFS-3g 才能讀寫,但自從 Linux 5.15 後,內核就加入了由 Paragon Software 提供的 NTFS 驅動,並叫 NTFS3,完整實現 NTFS 3.1 的標準,從內核級別支援 NTFS,從此不需要再安裝 ntfs-3g 也能讀寫 NTFS 檔案系統。

NTFS3 相較 NTFS-3g 最大的改進就是性能了,NTFS-3g 採用 FUSE 掛載,寫入時 CPU 佔用率較高,新版 NTFS3 寫入速度快,也能減少 CPU 佔用,不過有人說 NTFS3 還不穩定,就依自身需求選擇吧。

fstab

管理 Linux 啟動掛載磁區的設定檔是 fstab,位置在 /etc/fstab,系統會根據 fstab 的順序依次掛載,只要在這檔案末端加入你要掛載的磁區就好。

fstab 的格式為:<device> <dir> <type> <options> <dump> <fsck>

  • device:磁區的 UUID 或是設備路徑,UUID 可以通過 blkid 命令取得。
  • dir:掛載的目錄。
  • type:檔案系統(File System)代號。
  • options:相關掛載選項。
  • dump:是否啟用備份,ext2/3 才有用,0 表示禁用。
  • fsck:是否開機時檢查磁區。對於 root 磁區應該要寫 1,其他磁區寫 2,禁用寫 0。如果 root 採用 Btrfs 或 XFS 檔案系統應該寫 0。

第一欄 device 可以寫 UUID 或設備路徑,UUID 比較麻煩,用設備路徑就可以了,輸入 fdisk -l 可以獲取電腦的所有磁區,找到你的 Windows 磁區代號,根據磁區容量和類型來確定。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
$ fdisk -l
Disk /dev/nvme0n1: 476.94 GiB, 512110190592 bytes, 1000215216 sectors
Disk model: WDC PC SN730 SDBPNTY-512G-1101          
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 0C94E453-A793-4F7B-93AF-3E01A4DF6A74

所用裝置           Start       結束      磁區   Size 類型
/dev/nvme0n1p1      2048     534527    532480   260M EFI System
/dev/nvme0n1p2    534528     567295     32768    16M Microsoft reserved
/dev/nvme0n1p3    567296  252138543 251571248   120G Microsoft basic data
/dev/nvme0n1p4 252138544  629625903 377487360   180G Microsoft basic data
/dev/nvme0n1p5 629714944  966692863 336977920 160.7G Linux filesystem
/dev/nvme0n1p6 966692864 1000215182  33522319    16G Linux swap

比如我的 C 槽是所在裝置是 /dev/nvme0n1p3,這就是對應到 fstab 的 device 欄。

第二欄 dir,就是磁區掛載的目錄,一般我會放在 /mnt 下。這邊我建了一個 /mnt/Windows 目錄。

第三欄 type 有兩種可以選,如果你想用 NTFS-3g 驅動就填 ntfs-3g,用內核 NTFS 驅動就寫 ntfs3

第四欄 optionuid=userid,gid=groupid,umask=0022umask 是設定掛載的檔案目錄權限,uidgid 填自己就好,可以通過 id 命令取得。

剩下兩個欄位填 0 就好。

整行就是:

1
/dev/nvme0n1p3 /mnt/Windows ntfs3 uid=1000,gid=1000 0 0

意思就是將 /dev/nvme0n1p3 裝置掛載到 /mnt/Windows 目錄,檔案系統類型為 NTFS,僅有用戶 uid=1000 和 gid=1000 的用戶可以存取修改。

References

  1. fstab - ArchWiki
  2. NTFS-3G - ArchWiki