请问有人了解ntfs系统在嵌入式平台上的移植吗?

27 views
Skip to first unread message

zhang xuecheng

unread,
Jan 6, 2009, 5:44:44 AM1/6/09
to 嵌入式Linux
比如说ntfs-3g,移植到嵌入式平台上,有没有相关的经验或者建议呢?谢谢

--best regards
--http://veryzhang.cn

adam

unread,
Jan 6, 2009, 6:09:45 AM1/6/09
to embedded-l...@googlegroups.com
我没有做过ntfs文件系统的移植,但是文件系统的移植应该都差不多。有几个问
题需要解决,你可以现自己调查一下。

1. 内核模块,这包括
block设备的驱动
文件系统本身的.ko文件
对NLS支持的语言模块
2. VFS支持和一些utilities

这些东西都应该都可以从Linux内核和ntfs-3g的本家得到。如果需要交叉编译,
你还需要解决你的工具链的问题。

ntfs-3g的本家
http://www.ntfs-3g.org/

--
Adam Jiang
e-mail: jiang...@gmail.com

Adam

unread,
Jan 7, 2009, 1:18:53 AM1/7/09
to 嵌入式Linux
突然想问你一个文题,你是出于什么考虑希望在嵌入式设备上用NTFS文件系统的?
有什么特殊的需求导致这一点么?

alai

unread,
Jan 7, 2009, 1:40:25 AM1/7/09
to embedded-l...@googlegroups.com
如果是ARM或MIPS平台,已经有不少成功案例啦,有不少NAS都可以读写NTFS啦。当然,一般来说,它们建议使用只读方式。在LINUX下写NTFS文件系统,还是没有100%保证。

2009/1/7 Adam <Jiang...@gmail.com>

Adam Jiang

unread,
Jan 7, 2009, 1:45:59 AM1/7/09
to embedded-l...@googlegroups.com
ntfs移植应该难度不是很大。但是我很好奇什么理由需要选在ntfs呢?
因为加密么?如果是因为加密,利用block设备的驱动就可以做了,而
且效率比在文件系统层面加密好很多。所以还是有点不解。

2009/1/7 alai <ala...@gmail.com>:

--
Adam Jiang
------------------------------------------
e-mail:jiang...@gmail.com

sen guo

unread,
Jan 7, 2009, 3:24:16 AM1/7/09
to embedded-l...@googlegroups.com
以前在linuxforum的时候看有人讨论过,刚也特意查了下,似乎ntfs-3g在ARM上是可以的(或许会还有些小问题,具体没做过,就不了解)。以下是找到的一些链接,希望有用:

http://blog.chinaunix.net/u/22617/showart_151905.html
http://jerker.blog.163.com/blog/static/742147220081112742245/
http://zh-kernel.org/pipermail/linux-kernel/2008-May/004930.html
http://forum.openwrt.org/viewtopic.php?pid=75221

另外,似乎1.0之后,对ARM/MIPS支持都是越来越好的了。

2009/1/7 Adam Jiang <jiang...@gmail.com>

Adam Jiang

unread,
Jan 7, 2009, 4:03:18 AM1/7/09
to embedded-l...@googlegroups.com
ntfs-3g是在用户空间实现的驱动程序和实用程序,所以,只要交叉编译不出问题,直接就能port。
我刚才从ntfs-3g的本家下载了新的stable版本,用mipsel工具链实验了一下,已经编译成功了,没
什么特别的问题。

1. 下载ntfs-3g
http://www.ntfs-3g.org/ntfs-3g-1.5130.tgz

这个包里面自包含了fuse,所以,就用internal就可以了。

2. 设置指向你的工具链的PATH
export PATH=/usr/local/toolchain/mipsel/bin/:$PATH

3. 解包,用configure脚本配置
CC=mipsel-linux-gcc ./configure --host=mipsel-linux-gcc
这里你可以指定你的prefix,如果需要精简,指定--exec-prefix。

4. 编译
CC=mipsel-linux-gcc make

5. 安装到rootdisk
make install

我手头的开发板只有MIPS结构的little endian,如果你的arm也是小端,并且工具链已经准备好了的话,
编译,安装,应该没有问题。看到sen guo给的帖子里面都指出了有国际化的问题,这个可能需要花点
功夫。特别是你使用的c库并不能很好支持iconv的情况下。

2009/1/7 sen guo <gxu...@gmail.com>:

张学成

unread,
Jan 7, 2009, 10:50:19 AM1/7/09
to embedded-l...@googlegroups.com
非常感谢大家的回帖!大伙儿太热情了,呵呵,深受感动啊:)
我们是mp4的平台,用的是nucleus操作系统,因为要支持1080p的高清视频,而高清视频文件的大小基本都在4G以上,所以必须用ntfs系统了。
现在还在评估阶段,因为不清楚linux的驱动移植到我们的平台难度有多大,所以先请教一下有经验的同志,呵呵
再次感谢大家的帮助:)

2009/1/7 Adam Jiang <jiang...@gmail.com>

adam

unread,
Jan 7, 2009, 11:22:02 AM1/7/09
to embedded-l...@googlegroups.com
恩,终于看到你的需求了。
考虑单个文件的大小限制的,NTFS并不是唯一的选择。ReiserFS v4也是可以的
,这个文件系统在x86上支持最大4TB。而且性能也不错。退一步讲,FAT32也是
支持4GB的单个文件大小。

文件系统选择是个复杂的事情,做好多做一下论证。你选择NTFS的风险还有一个
,就是这个在用户空间支持的文件系统的效率肯定不如在内核空间支持的效率高
。此外,视频文件的读写重要还是看吞吐,单文件大小的影响有多大,要做实验
阿。

移植应该不是问题。

在下面的连接,你可以很快的查看到各种文件系统的限制,可能有助于你选择文
件系统。

http://en.wikipedia.org/wiki/Comparison_of_file_systems

> > >> e-mail:jiang...@gmail.com <e-mail%3Ajian...@gmail.com>
> > >
> > >
> >
> >
> >
> > --
> > Adam Jiang
> > ------------------------------------------
> > e-mail:jiang...@gmail.com <e-mail%3Ajian...@gmail.com>
> >
>
> >

alai

unread,
Jan 7, 2009, 9:06:28 PM1/7/09
to embedded-l...@googlegroups.com
看了LZ的说明,我打个岔,一直在找一个家用的网络媒体播放器,但总也找不到完全适合以下需求的:
1. 支持多种主流媒体文件播放,包括rm, mp4, mkv等等;目前来看,对rm格式的支持相对较弱;
2. 支持samba,以网络邻居方式访问NAS中的媒体文件;目前来看,支持uPnP的较多,支持samba的很少;
3. 支持WIFI,这一点目前市场上的支持一半一半;
4. 支持中文文件名,国外的产品在这方面做得尤其差;
5. 物美价廉,这个就不用说了;

看起来LZ好象正在做硬盘播放器方面的研发,其实我认为LAN在家庭中的应用会越来越普及,硬盘播放器远不如NAS+网络播放器来得方便。

2009/1/8 adam <jiang...@gmail.com>

张学成

unread,
Jan 7, 2009, 9:30:13 PM1/7/09
to embedded-l...@googlegroups.com
我们做的是便携媒体播放器的方案,基本上ntfs是唯一的选择:)

2009/1/8 alai <ala...@gmail.com>



--
   best regards,
   zhang xuecheng

Adam Jiang

unread,
Jan 7, 2009, 9:45:14 PM1/7/09
to embedded-l...@googlegroups.com
??
为什么便携就只能选择ntfs?你的block设备比较特殊么?

2009/1/8 张学成 <zhangxue...@gmail.com>:

张学成

unread,
Jan 8, 2009, 2:46:31 AM1/8/09
to embedded-l...@googlegroups.com
这块不是我做的,所以我也不是很清楚,不过对嵌入式系统来说,文件系统应该是由用户选择的,用户在电脑上将优盘格式化成了ntfs格式,我们就只能支持ntfs格式了。
主要是windows平台下没有别的格式可以选择了吧?

2009/1/8 Adam Jiang <jiang...@gmail.com>

Adam Jiang

unread,
Jan 8, 2009, 2:54:55 AM1/8/09
to embedded-l...@googlegroups.com
哦,原来如此。考虑到Windows的挂载和用户使用的方便,那的确NTFS比较合适了。
Good luck.

2009/1/8 张学成 <zhangxue...@gmail.com>:

alai

unread,
Jan 8, 2009, 3:56:25 AM1/8/09
to embedded-l...@googlegroups.com
的确如此,这种便携式播放器中的媒体文件还是要靠PC机来下载然后拷入播放器中。但如果是带网络接口的播放器,就可以自行下载,文件系统的选择就更多了。

2009/1/8 Adam Jiang <jiang...@gmail.com>

rider

unread,
Feb 2, 2009, 4:30:28 AM2/2/09
to 嵌入式Linux
你好, 按你说的方法做了尝试,可configure过不了,希望能帮忙解决问题,不胜感激!

On 1月7日, 下午5时03分, "Adam Jiang" <jiang.a...@gmail.com> wrote:
> ntfs-3g是在用户空间实现的驱动程序和实用程序,所以,只要交叉编译不出问题,直接就能port。
> 我刚才从ntfs-3g的本家下载了新的stable版本,用mipsel工具链实验了一下,已经编译成功了,没
> 什么特别的问题。
>

> 1. 下载ntfs-3ghttp://www.ntfs-3g.org/ntfs-3g-1.5130.tgz


>
> 这个包里面自包含了fuse,所以,就用internal就可以了。
>
> 2. 设置指向你的工具链的PATH
> export PATH=/usr/local/toolchain/mipsel/bin/:$PATH
>
> 3. 解包,用configure脚本配置
> CC=mipsel-linux-gcc ./configure --host=mipsel-linux-gcc
> 这里你可以指定你的prefix,如果需要精简,指定--exec-prefix。
>
> 4. 编译
> CC=mipsel-linux-gcc make
>
> 5. 安装到rootdisk
> make install
>
> 我手头的开发板只有MIPS结构的little endian,如果你的arm也是小端,并且工具链已经准备好了的话,
> 编译,安装,应该没有问题。看到sen guo给的帖子里面都指出了有国际化的问题,这个可能需要花点
> 功夫。特别是你使用的c库并不能很好支持iconv的情况下。
>

> 2009/1/7 sen guo <gxue...@gmail.com>:
>
>
>
>
>
> > 以前在linuxforum的时候看有人讨论过,刚也特意查了下,似乎ntfs-3g在ARM上是可以的(或许会还有些小问题,具体没做过,就不了解)。以下是-找到的一些链接,希望有用:

> > 2009/1/7 Adam Jiang <jiang.a...@gmail.com>


>
> >> ntfs移植应该难度不是很大。但是我很好奇什么理由需要选在ntfs呢?
> >> 因为加密么?如果是因为加密,利用block设备的驱动就可以做了,而
> >> 且效率比在文件系统层面加密好很多。所以还是有点不解。
>
> >> 2009/1/7 alai <ala...@gmail.com>:
>

> >> > 如果是ARM或MIPS平台,已经有不少成功案例啦,有不少NAS都可以读写NTFS啦。当然,一般来说,它们建议使用只读方式。在LINUX下写NTFS文件-系统,还是没有100%保证。
>
> >> > 2009/1/7 Adam <Jiang.A...@gmail.com>


>
> >> >> 突然想问你一个文题,你是出于什么考虑希望在嵌入式设备上用NTFS文件系统的?
> >> >> 有什么特殊的需求导致这一点么?
>
> >> >> On 1月6日, 下午7时44分, zhang xuecheng <zhangxuecheng1...@gmail.com> wrote:
> >> >> > 比如说ntfs-3g,移植到嵌入式平台上,有没有相关的经验或者建议呢?谢谢
>
> >> >> > --best regards
> >> >> > --http://veryzhang.cn
>
> >> --
> >> Adam Jiang
> >> ------------------------------------------

> >> e-mail:jiang.a...@gmail.com
>
> --
> Adam Jiang
> ------------------------------------------
> e-mail:jiang.a...@gmail.com- 隐藏被引用文字 -
>
> - 显示引用的文字 -

adam

unread,
Feb 2, 2009, 7:25:09 AM2/2/09
to embedded-l...@googlegroups.com
你好。具体出现什么样的错误提示呢?能不能把你在终端得到的log贴上来看看?

王晓军

unread,
Feb 3, 2009, 12:11:08 AM2/3/09
to embedded-l...@googlegroups.com
你好,我是用cygwin建的交叉编译环境,能否给个QQ或MSN请教一下你,这个速度太慢了,谢谢。附件是log

2009/2/2 adam <jiang...@gmail.com>

王晓军

unread,
Feb 3, 2009, 12:12:47 AM2/3/09
to embedded-l...@googlegroups.com


2009/2/2 adam <jiang...@gmail.com>
config.rar

Adam

unread,
Feb 3, 2009, 12:14:12 AM2/3/09
to 嵌入式Linux
我的IM在下面。
msn messager: jcad...@hotmail.com
gtalk: jiang...@gmail.com

技术讨论在邮件列表里面可以给更多的人参考。但是如果问题紧急,我可以在线帮你看看。

On 2月3日, 午後2:11, 王晓军 <rider.w...@gmail.com> wrote:
> 你好,我是用cygwin建的交叉编译环境,能否给个QQ或MSN请教一下你,这个速度太慢了,谢谢。附件是log
>

> 2009/2/2 adam <jiang.a...@gmail.com>

> > > > >> e-mail:jiang.a...@gmail.com <e-mail%3Ajiang.a...@gmail.com>


>
> > > > --
> > > > Adam Jiang
> > > > ------------------------------------------
> > > > e-mail:jiang.a...@gmail.com- 隐藏被引用文字 -
>
> > > > - 显示引用的文字 -
>

> --
> ^_^,天生我才,随遇而安...快乐并积极着...

Adam Jiang

unread,
Feb 3, 2009, 12:18:45 AM2/3/09
to embedded-l...@googlegroups.com
这个log里的信息比较少。

如果能用一台Linux的工作站来编译一下的话,说不定问题就能解决。
1. 你的目标(target)平台是什么?
2. 你的toolchain是从哪里得到的?什么版本?是不是直接在Cygwin上可以使用?
3. 从config的信息来看,似乎它使用了Cygwin的自有库和头文件。这个是不是你想要的?

2009/2/3 王晓军 <rider...@gmail.com>



--
Adam Jiang
------------------------------------------
e-mail:jiang...@gmail.com

Adam Jiang

unread,
Feb 3, 2009, 12:47:18 AM2/3/09
to embedded-l...@googlegroups.com
你的log中有这样一句
configure:2090: error: /bin/sh ./config.sub arm-linux-gcc failed
是不是交叉编译的arm-linux-gcc这个命令不在你的path上?

2009/2/3 王晓军 <rider...@gmail.com>



--
Adam Jiang
------------------------------------------
e-mail:jiang...@gmail.com

王晓军

unread,
Feb 3, 2009, 12:51:21 AM2/3/09
to embedded-l...@googlegroups.com


2009/2/3 Adam Jiang <jiang...@gmail.com>
output.txt

Adam Jiang

unread,
Feb 3, 2009, 1:03:09 AM2/3/09
to embedded-l...@googlegroups.com
工具链是OK的。

config命令应该用:
CC=/usr/local/toolchain/mipsel/arm-linux-gcc ./configure --host=arm-linux

我给的那个例子是随后会想起来写的,配置的时候末尾多了个'gcc',呵呵。
这样系统就找不到正确的交叉编译system type了,所以出错。

2009/2/3 王晓军 <rider...@gmail.com>
$ arm-linux-gcc -v main.c
Using built-in specs.
Target: arm-linux
Configured with: ../../gcc-4.0.2/configure --prefix=/usr/local/devkitPro/devkitG
P2X --host=i586-mingw32msvc --build=i686-pc-linux-gnu --target=arm-linux --enabl
e-languages=c,c++ --disable-libmudflap --disable-libssp --disable-libstdcxx-pch
--with-sysroot=/usr/local/devkitPro/devkitGP2X/sysroot --with-build-sysroot=/usr
/local/devkitPro/devkitGP2X/sysroot --enable-shared --disable-win32-registry --e
nable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --disable-nls --w
ith-float=soft --with-cpu=arm920t --enable-cxx-flags=-mcpu=arm920t --enable-symv
ers=gnu --enable-c99 --enable-long-long --disable-multilib --with-gnu-as --with-
gnu-ld
Thread model: posix
gcc version 4.0.2
 c:/cygwin/arm/bin/../libexec/gcc/arm-linux/4.0.2/cc1.exe -quiet -v -iprefix c:\
cygwin\arm\bin\../lib/gcc/arm-linux/4.0.2/ -isysroot c:\cygwin\arm\bin\../sysroo
t main.c -quiet -dumpbase main.c -mcpu=arm920t -mfloat-abi=soft -auxbase main -v
ersion -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVaaaa.s
ignoring nonexistent directory "c:\cygwin\arm\bin\../lib/gcc/arm-linux/4.0.2/../
../../../arm-linux/include"
ignoring nonexistent directory "c:\cygwin\arm\bin\../sysroot/usr/local/devkitPro
/devkitGP2X/lib/gcc/arm-linux/4.0.2/../../../../include"
ignoring nonexistent directory "/usr/local/devkitPro/devkitGP2X/lib/gcc/arm-linu
x/4.0.2/include"
ignoring nonexistent directory "/usr/local/devkitPro/devkitGP2X/arm-linux/includ
e"
#include "..." search starts here:
#include <...> search starts here:
 c:\cygwin\arm\bin\../lib/gcc/arm-linux/4.0.2/include
 c:\cygwin\arm\bin\../sysroot/usr/include
End of search list.
GNU C version 4.0.2 (arm-linux)
       compiled by GNU C version 3.4.2 (mingw-special).
GGC heuristics: --param ggc-min-expand=95 --param ggc-min-heapsize=122779
main.c: In function 'main':
main.c:3: warning: incompatible implicit declaration of built-in function 'print
f'
main.c:4:2: warning: no newline at end of file
 c:/cygwin/arm/bin/../lib/gcc/arm-linux/4.0.2/../../../../arm-linux/bin/as.exe -
mcpu=arm920t -mfloat-abi=soft -o C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceGbaaa.o C
:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cccVaaaa.s
 c:/cygwin/arm/bin/../lib/gcc/arm-linux/4.0.2/../../../../arm-linux/bin/ld.exe -
-eh-frame-hdr -dynamic-linker /lib/ld-linux.so.2 -X -m armelf_linux -p c:/cygwin
/arm/bin/../sysroot/usr/lib/crt1.o c:/cygwin/arm/bin/../sysroot/usr/lib/crti.o c
:/cygwin/arm/bin/../lib/gcc/arm-linux/4.0.2/crtbegin.o -Lc:/cygwin/arm/bin/../li
b/gcc/arm-linux/4.0.2 -Lc:/cygwin/arm/bin/../lib/gcc -Lc:/cygwin/arm/bin/../lib/
gcc/arm-linux/4.0.2/../../../../arm-linux/lib -Lc:/cygwin/arm/bin/../sysroot/lib
 -Lc:/cygwin/arm/bin/../sysroot/usr/lib C:\DOCUME~1\ADMINI~1\LOCALS~1\Temp/cceGb
aaa.o -lgcc --as-needed -lgcc_s --no-as-needed -lc -lgcc --as-needed -lgcc_s --n
o-as-needed c:/cygwin/arm/bin/../lib/gcc/arm-linux/4.0.2/crtend.o c:/cygwin/arm/
bin/../sysroot/usr/lib/crtn.o
Reply all
Reply to author
Forward
0 new messages