在FreeBSD上mount Ext4文件系统的移动硬盘
需求
小容量的移动硬盘用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
目前貌似没有解决方案……
推送到[go4pro.org]