在 Linux 系統中使用 USB 儲存裝置(隨身碟、外接硬碟)需手動掛載或設定自動掛載。本文涵蓋裝置識別、檔案系統判斷、手動掛載、中文檔名編碼處理、/etc/fstab 自動掛載等完整流程。
插入 USB 裝置前後執行 cat /proc/partitions 或 fdisk -l,觀察新增的分區(通常為 sdb1、sdc1 等,視現有磁碟數而定)。
# fdisk -l /dev/sdb
Disk /dev/sdb: 131 MB, 131104768 bytes
...
Device Boot Start End Blocks Id System
/dev/sdb1 * 1 2668 128016 6 FAT16
上例中 USB 裝置為 /dev/sdb,分區 /dev/sdb1 為 FAT16 格式。
mkdir -p /mnt/usb
| 檔案系統 | 掛載指令範例 |
|---|---|
| FAT16 | mount -t msdos /dev/sdb1 /mnt/usb |
| FAT32 | mount -t vfat /dev/sdb1 /mnt/usb |
| ext2/3/4 | mount -t ext4 /dev/sdb1 /mnt/usb |
| NTFS | mount -t ntfs-3g /dev/sdb1 /mnt/usb (需安裝 ntfs-3g) |
掛載 FAT32/NTFS 時指定字元集:
# FAT32
mount -t vfat /dev/sdb1 /mnt/usb -o codepage=936,iocharset=utf8
# NTFS (ntfs-3g)
mount -t ntfs-3g /dev/sdb1 /mnt/usb -o rw,uid=1000,gid=1000,umask=022,locale=zh_TW.UTF-8
codepage=936:舊系統中文編碼(CP936 簡體),新系統建議直接用 utf8。iocharset:核心顯示用字元集,現代發佈版多預設 UTF-8。編輯 /etc/fstab 新增一行(以 FAT32 為例):
/dev/sdb1 /mnt/usb vfat defaults,nofail,uid=1000,gid=1000,umask=022,iocharset=utf8 0 0
欄位說明:
nofail:裝置不存在時不阻礙開機。uid/gid:指定檔案擁有者,避免需 root 權限讀寫。umask:權限遮罩(022 為 755)。0 0:dump 備份標記與 fsck 檢查順序(可移式裝置設 0)。建議改用 UUID 或 LABEL: 因裝置名稱 (/dev/sdb1) 可能因插入順序改變。使用 blkid 查詢 UUID:
UUID=1234-ABCD /mnt/usb vfat defaults,nofail,uid=1000,gid=1000,umask=022,iocharset=utf8 0 0
umount /mnt/usb
# 若裝置忙碌,可用 lsof 找出佔用進程
lsof /mnt/usb
現代桌面環境(GNOME、KDE、Xfce)透過 udisks2 + gvfs 實現插入即掛載,掛載點通常在 /run/media/$USER/ 或 /media/$USER/。若無反應,確認已安裝 gvfs、udisks2 且啟動了相關服務。