如何在嵌入式系统中建立自己的根文件系统
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何在嵌入式系统中建立自己的根文件系统- -
Tag:嵌入式linux
正如楼上所言《构建嵌入式LINUX系统》这本书,还行,可以参考。
刚开始的时候,这个地方,我比较晕,其实,根本就没有什么东西,只要你作过一遍,就理解了。最好请教一下跟前作过的人,有一个感观的认识:
如二楼所言,cramfs和romfs只是一个文件系统类型,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。^-^恭喜你,你答对了,加10分
cramfs是只读压缩的文件系统,文件系统类型可以是ext2,ext3,什么的,
制作方法:假如你的根文件系统的目录是rootfs (你将来要用到的所有的文件就在这里)like this :mkcramfs rootfs rootfs.cramfs 就搞定了。如名字所言,它是只读压缩,所以比较省空间,如果你的flash比较小,就用这个吧!系统启动后,kernel把他load到内存中,解压,所以比较占内存。看你的需要了。
而ramdisk呢?这个用的比较多,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。关键是以后,在ramdisk里面可以写,这是一个和cramfs重要的区别了。
具体制作方法:
dd if=/dev/zero of=rootfs.img bs=1M count=一个整数(看你的实际的需要的空间了,一般也就10M)
把它格式化为你需要的文件系统,比如ext2 ,ext3 ,reiserfs 什么的,
比如ext3 : mkfs.ext3 root.img
然后把它mount到某个目录,比如tmp 吧:
mount -t ext3 /tmp/
然后,你的文件系统所在的目录的所有文件copy到tmp目录下:比如你的文件系统目录在/root/rootfs-test :
cp -av /root/rootfs-test/* /tmp/ (这里注意一个细节:copy的时候,用参数a表示copy全部,v表示只copy链接本身,不copy它指向的内容,这点很关键哦!) ,另外,有的人常用:cp -pdR 这个你也可以试试,意思就是原来什么样,copy过去就什么样。
然后卸载/tmp/ 目录就好了。
umount /tmp
一般的情况下,ramdisk是要压缩的,对于上面的生成好的img,rootfs.img ,你可以这样压缩:
gzip -v9 rootfs.img 会自动生成rootfs.img.gz ,一般压缩率,30%吧!
romfs ,我没有用过,也不敢瞎说。
个人经验:你自己要创建文件系统,一般是先建一个目录在里面建一些常用的目录,比如
bin ,sbin ,root ,etc lib 什么的,正如楼上所言,lib比较烦,需要考虑你要用的程序需要的动态链接库,
建议你先搞一个别人的,拿过来,参考,自己去改,一开始,自己去作肯定要疯的。
你可以到网上搜搜的。有个网站,/ 这个里面提供了一些简单的文件系统,你可以拿过来,自己改改。这是个比较快的方法,其实,里面要改基本是:
/etc/rc.d/** 下面的启动脚本。
lib/下的一些动态链接库。
shell
busybox知道吗?利用这个,可以省很多空间,到google上搜搜
现在你已经知道了要搜索的关键字了吧?以后就要靠自己了,没有人能帮助你了。
恕我直言,三天未必能搞定,我最开始的时候,对于这方面什么也不知道,东看西看,也要一个礼拜才搞定。一开始,先别着急作,先把概念搞清楚,流程搞清楚。这才是关键呢!如果是老大催的紧,你就这么说就可以。
还有要注意的是:这个帖子贴的地方不恰当,放在,嵌入式开发里面比较合适。这里主要是大家研究kernel源代码的地方。回的人不会太多