需求
小容量的行動硬碟用FAT檔案系統是很方便交流的,但是大容量的行動硬碟就成問題了。Windows有NTFS,Linux用EXT4,MacOSX有HFS+等,FreeBSD當然是ZFS(還有UFS)。
完全沒法溝通。
雖然我很喜歡ZFS,它也的確好,但是因為我的桌面是Linux/Mac,鑑於HFS+之類的專用系統太不通用,所以最後決定用EXT4,萬一需要用到其它系統時,可以掛到linux下再通過samba共享。
這次因為需要在FreeBSD下COPY一些大檔案,所以研究了一下怎麼掛到FreeBSD下。
解決
首先是從這篇文章《FreeBSD 10: Mounting USB Drive with ext4 Filesystem》裡看到一個解決方案:通過FUSE。
# 安裝fuse
pkg install fusefs-ext4fuse
# 載入
kldload fuse.ko
複製程式碼
配置 /boot/loader.conf
fusefs_load="YES"
複製程式碼
配置 /etc/devfs.rules
[localrules=5]
add path 'da*' mode 0660 group operator
複製程式碼
配置 /etc/rc.conf
devfs_system_ruleset="localrules"
複製程式碼
配置 /etc/sysctl.conf
vfs.usermount=1
複製程式碼
立即啟用
sysctl vfs.usermount=1
複製程式碼
新建一個使用者目錄並且mount之
mkdir /home/raptor/mnt
chown raptor:raptor /home/raptor/mnt
mount -t ext4 -o mountprog=/usr/local/bin/ext4fuse,allow_other,late,rw /dev/da0s1 /home/raptor/mnt
複製程式碼
最後這句mount方法來自這個貼子:Howto mount ext4 (without FUSE), avoiding wrong permissions,因為按照前文直接用ext4fuse的話,只能用ROOT使用者訪問,普通使用者沒有許可權。
遺留問題
這樣雖然解決了掛載和訪問的問題,但是因為fuse對EXT4只提供了只讀支援,雖然我已經用mount掛載為rw,但是所有寫操作都會報錯:
Function not implemented
複製程式碼
目前貌似沒有解決方案……