ntfs-3g 集成

2023-01-31 01:01:59 ntfs

ntfs-3g 集成

1. 下载
Http://www.tuxera.com/commUnity/ntfs-3g-download/
ntfs-3g-2010.8.8

2. 建立makefile
a. 参考gstreamer/makefile
   大概把 gstreamer改成ntfs_3g和ntfs-3g,GSTREAMER改成NTFS_3G,设置版本,源码包等。
b. 定义option_configure_args
c. 取消install过程
根据需要确定是否--enable-debug

3. 编译

$make -C src/thirdparty/ntfs-3g/ remove
在Huangpu/makefile下面加入对ntfs-3g的编译目标,然后$make ntfs-3g

4. 运行
a. 把编译的结果mount到机顶盒
pc: #ln -s /home/qianjiang/apollo/sw/ga300/target/output/objs/summit-dualhd-gnu-4.4.0-linux-debug/comps/generic_apps/ ~/nfsroot/apps

apollo: # mount -t nfs -o rw,tcp,nolock,nfsvers=3 192.168.2.2:/home/qianjiang/nfsroot/apps mnt/apps/

b. 把目标文件拷贝到/bin和/lib下面
# cp mnt/apps/ntfs-3g/ntfs-3g-2010.8.8/libntfs-3g/.libs/libntfs-3g.so* /lib/
# cp mnt/apps/ntfs-3g/ntfs-3g-2010.8.8/src/.libs/ntfs-3g /bin/
# ntfs-3g --help

注意:
曾经运行src下面的ntfs-3g得到异常的问题:
# /mnt/apps/ntfs-3g/ntfs-3g-2010.8.8/src/ntfs-3g
-/bin/sh: /mnt/apps/ntfs-3g/ntfs-3g-2010.8.8/src/ntfs-3g: not found
网上说可能是相关库文件找不到,应该拷贝至/lib或者设置LD_LIBRARY_PATH,但是都未奏效。而且pc下运行也没问题,ldd ntfs-3g表明是无动态链接库。所以,很奇怪!

5. 调试
# ntfs-3g /dev/sda4 mnt/sda/
modprobe: module 'fuse' not found
ntfs-3g-mount: fuse device is missing, try 'modprobe fuse' as root

注:
曾经可没有这么好的出现提示,而是死机,,,所以。。。

6. 加入fuse
6.1 pc
#cd target/src/sd/os/oslinux/comps/kernel/linux-2.6.28.10/
#cp target/output/objs/pnx8473_hirf_moca_mp1_mtd_debug/.config ./
#make menuconfig => 选中fuse文件系统
#make modules
#cp fs/fuse/fuse.ko /home/qianjiang/nfsroot/appfs/lib/modules/2.6.28.10/extra/

注:这里对kernel的编译可能不是Official的方式。

6.2 apollo
#insmod fuse.ko

7. 测试
7.1写测试 ==> OK
7.2性能测试 ===>
写hello.sh
date
cp mnt/sda/GA300_full_src.tar.gz mnt/sda/GA300_full_src.tar.gz1
umount mnt/sda
date

# sh hello.sh
Wed Dec 31 17:06:19 MST 1969
Unmounting /dev/sda4 ()
Wed Dec 31 17:19:44 MST 1969

(read + write)bs = 1608602770(file size) * 8 / 805(time) = 15.3Mbits/s


8. 集成和check in
8.1 file: pnx8473_hirf_moca_mp1_mtd_debug_defconfig
    enable fuse

8.2 Huangpu/makefile
    add make target: ntfs-3g

8.3 ntfs-3g/makefile
    use to untar ntfs-3g package, configure, compile etc...

8.4 TODO
    需要编译结束后安装bin到rootfs,完成类似下面的功能:

cp ntfs-3g-2010.8.8/libntfs-3g/.libs/libntfs-3g.so* /lib/
cp ntfs-3g-2010.8.8/src/.libs/ntfs-3g /bin/

相关文章