在Linux上实现对UFS文件系统的读写支持

[b]背景:[/b]

最近在使用XEN虚拟机,XEN官方目前发布的内核只有2.6.18的版本。现在需要在Linux上挂载(mount)FreeBSD的Image文件,并进行写操作。FreeBSD使用的文件系统是UFS2,但2.6.18的内核上只能对UFS进行读操作,写的操作是从2.6.21的内核才开始支持的。

[b]实现:[/b]

因此,为了在2.6.18上也支持写操作,需要做如下工作:

[list=1]
[*]对源码进行PATCH,PATCH文件见附件。解压在kernel源码根目录,解压后进入patch_ufs_write_support目录,执行patch.sh,若要取消PATCH,则执行upatch.sh。

[*]make menuconfig,并将File systems ---> Miscellaneous filesystems ---> 下的UFS file system support (read only)选择成,UFS file system write support (DANGEROUS)选择成[ * ],保存后make modules。

[*]将编译出来的 fs/ufs/ufs.ko 拷贝到 /lib/modules/$(uname -r)/kernel/fs/ufs/ufs.ko,重新加载模块即可(modproper ufs)。

[*]为了让ufs模块启动时自动加载,可以将附件中 rc.sysinit.ufs 内容追加到 /etc/rc.sysinit 文件中(cat rc.sysinit.ufs >> /etc/rc.sysinit)。[/list]
[b]使用:[/b]

使用有点特殊,需要remount,示例如下:


$ mount -t ufs -oloop,rw,offset=32256,ufstype=ufs2 FreeBSD.img /mnt/freebsd
此时挂载后仍是只读

$ touch /mnt/freebsd/testfile
提示只读无法写入

$ mount -o remount,rw /mnt/freebsd
重新挂载成读写模式

$ touch /mnt/freebsd/testfile
此时写入成功

$ umount /mnt/freebsd


附件的PATCH文件是网上找到的,是针对2.6.20-rc5的PATCH,经过比对、整理以及部分的修改后形成了这个针对linux-2.6.18-xen-3.4.2的PATCH文件。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值