雙系統(Windows + Linux)環境下,如何正確掛載 NTFS、FAT32 分區並支援中文檔名,是常見挑戰。本文記錄真實案例:80GB 系統碟(Windows 主分區+擴展分區,全 NTFS)+ 80GB 移動硬碟(FAT32 + NTFS 60GB)+ 2GB USB 隨身碟,透過 ntfs-3g 與 /etc/fstab 實現開機自動掛載、中文正常顯示、讀寫權限完整。
yum install ntfs-3g (或 apt install ntfs-3g)mkdir -p /mnt/hda1 /mnt/hda5 /mnt/hda6 /mnt/Y /mnt/x/etc/fstab,加入以下條目# 系統分區
LABEL=/ / ext3 defaults 1 1
devpts /dev/pts devpts gid=5,mode=620 0 0
tmpfs /dev/shm tmpfs defaults 0 0
proc /proc proc defaults 0 0
sysfs /sys sysfs defaults 0 0
LABEL=SWAP-hda4 swap swap defaults 0 0
# 系統碟 NTFS 分區(Windows 區)
/dev/hda1 /mnt/hda1 ntfs-3g defaults,umask=000,locale=zh_TW.UTF-8 0 0
/dev/hda5 /mnt/hda5 ntfs-3g defaults,umask=000,locale=zh_TW.UTF-8 0 0
/dev/hda6 /mnt/hda6 ntfs-3g defaults,umask=000,locale=zh_TW.UTF-8 0 0
# 移動硬碟 NTFS 分區(60GB 電影區)
/dev/sda2 /mnt/Y ntfs-3g defaults,umask=000,locale=zh_TW.UTF-8 0 0
# 移動硬碟 FAT32 分區
/dev/sda1 /mnt/x vfat defaults,umask=000,iocharset=utf8 0 0
| 參數 | 說明 |
|---|---|
ntfs-3g | 使用 FUSE 實現的 NTFS 讀寫驅動(舊 ntfs 僅支援唯讀) |
vfat | FAT32/VFAT 檔案系統類型 |
umask=000 | 所有用戶擁有完整讀寫執行權限(rwxrwxrwx) |
locale=zh_TW.UTF-8 | NTFS 專用,指定語系編碼,解決中文檔名亂碼 |
iocharset=utf8 | VFAT 專用,指定字元集為 UTF-8 |
defaults | 包含 rw, suid, dev, exec, auto, nouser, async 等預設選項 |
早期嘗試對 NTFS 使用 iocharset、對 FAT32 使用 locale 會導致掛載失敗或中文不顯示。各檔案系統專屬參數不可混用:
locale 指定語系。iocharset 指定字元集。# 重新掛載所有 fstab 定義的分區
mount -a
# 檢查掛載狀態
mount | grep -E 'hda|sda'
# 測試中文檔名讀寫
touch /mnt/hda1/測試.txt
ls -l /mnt/hda1/
echo "內容" > /mnt/Y/電影清單.txt
cat /mnt/Y/電影清單.txt
UUID 或 LABEL 取代 /dev/sdX,避免裝置名稱因插拔順序改變而錯亂:blkid 查看 UUID,fstab 中寫 UUID=xxxx-xxxx。nofail,x-systemd.automount 選項,避免開機卡住:UUID=xxxx /mnt/Y ntfs-3g defaults,nofail,x-systemd.automount,umask=000,locale=zh_TW.UTF-8 0 0mount -t ntfs-3g /dev/sdb1 /mnt/tmp 手動掛載,用完 umount 即可。正確配置 fstab、選對檔案系統類型與編碼參數,即可在 Linux 完美讀寫 Windows 分區,實現資料無縫共享。