arm开发板的NTFS-3G完整移植+中文目录支持+自动挂载(udev)

-NTFS-3G完整移植+中文支持+自动挂载

1内核裁剪

1.1进入内核源码目录下:

$make menuconfig

Linux/arm 2.6.37 Kernel Configuration

   File systems  --->                //NTFS-3G需要依赖用户空间文件系统FUSE的支持

<*> FUSE (Filesystem in Userspace) support

<*>Character device in Userspace support

-*- Native language support  --->  //默认语言配置为utf8,并包含一些其他常用语言的编码

(utf8) Default NLS Option

<*>   Codepage 437 (United States, Canada)

<*>   Simplified Chinese charset (CP936, GB2312)

<*>   ASCII (United States)                                                                  

<*>   NLS ISO 8859-1  (Latin 1; Western European Languages)

<*>   NLS UTF-8

DOS/FAT/NT Filesystems  --->     //这里的NTFS是只读的,不支持写,我们使用NTFS-3G软件包,并且支持读写,所以这里不配置。

< > NTFS file system support

 

1.2编译生成新的uImage,放入提供tftp服务文件夹下;

$make uImage

$cp arch/arm/boot/uImage /tftpboot


2 NTFS-3G完整移植

NTFS-3G使用的是时间距离较近的版本,优化了内存占用过多的问题:

2.1解压:

$tar xvf ntfs-3g_ntfsprogs-2016.2.22


2.2进入ntfs-3g源码目录下:

$cd ntfs-3g_ntfsprogs-2016.2.22

2.3编译前配置

$  ./configure --build=i386 --host=arm-arago-linux-gnueabi --prefix=/song/usr --exec-prefix=/song

--build=i386 编译的主机;

--host=arm-arago-linux-gnueabi编译出来的二进制程序所执行的主机;

/song/usr和/song 目录为生成的文件存放位置,可自己定义;

 

2.4然后就是make && make install;稍等片刻,就可以了。

$make && make install


2.5 /song/bin文件夹下的ntfsfixntfs-3g拷贝到nfs文件系统的/bin目录下

$cp ntfsfix ntfs-3g /DVRRDK_04.00.00.03/target/rfs_816x/bin/

ntfsfix      //ntfs硬盘修复工具

ntfs-3g     //ntfs硬盘挂载工具

 

2.6 /song/sbin文件夹下的mkntfs拷贝到nfs文件系统的/sbin目录下

$cp mkntfs /DVRRDK_04.00.00.03/target/rfs_816x/bin/

mkntfs     //格式化分区工具

 

2.7 /song/lib文件夹下的libntfs-3g.so、libntfs-3g.so.87libntfs-3g.so.87.0.0

拷贝到nfs文件系统的/lib目录下

$cp libntfs-3g.so  libntfs-3g.so.87  libntfs-3g.so.87.0.0 /DVRRDK_04.00.00.03/target/rfs_816x/bin/

libntfs-3g.so  libntfs-3g.so.87  libntfs-3g.so.87.0.0   //动态库

暂时只用到挂载时的ntfs-3g和格式化的mkntfs以及ntfsfix三个工具,注意ntfs-3g需要动态库libntfs-3g.so.87,需要把lib夹中的so一同一起移植过去。

 

2.8好了,到此ok,我测试了一下:

[root@JHI-SXY:/media]#: ntfs-3g

ntfs-3g: No device is specified.

 

ntfs-3g 2016.2.22 integrated FUSE 27 - Third Generation NTFS Driver

                Configuration type 1, XATTRS are on, POSIX ACLS are off

 

Copyright (C) 2005-2007 Yura Pakhuchiy

Copyright (C) 2006-2009 Szabolcs Szakacsits

Copyright (C) 2007-2016 Jean-Pierre Andre

Copyright (C) 2009 Erik Larsson

 

Usage:    ntfs-3g [-o option[,...]] <device|image_file> <mount_point>

 

Options:  ro (read-only mount), windows_names, uid=, gid=,

          umask=, fmask=, dmask=, streams_interface=.

          Please see the details in the manual (type: man ntfs-3g).

 

Example: ntfs-3g /dev/sda1 /mnt/windows

News, support and information:  http://tuxera.com


2.9 ntfs-3g可以显示版本,再进行挂载测试:

#ntfs-3g /dev/sda1 /mnt  //可以正常挂载,但是不支持中文目录,在后面进行了解决;

#mount -t ntfs-3g /dev/sda1 /mnt  //不可以使用,ntfs-3g不是ntfs,无法识别,试了好多方法还是不行,原因可能是busybox的mount的缺陷吧,放弃;最后决定自动挂载时使用ntfs-3g,心累!。

3中文支持

这里采用了这位博主的方法:
http://blog.csdn.net/wavemcu/article/details/7202908

3.1进入Busybox源码目录下,busybox版本是1.19.4

$cd libbb/

$vi printable_string.c

  printable_string.c源码修改了红色加粗的代码:

中文是“?”的原因:大于0x7F的字符直接被break掉,或者直接被“?”代替了。所以就算是linux内核设置了支持中文,也是无法显示出来的,被“?”代替了。

 

1. const char* FAST_FUNC printable_string(uni_stat_t *stats, const char *str)  

2. {  

3.     static char *saved[4];  

4.     static unsigned cur_saved; /* = 0 */  

5.   

6.     char *dst;  

7.     const char *s;  

8.   

9.     s = str;  

10.     

  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值