添加自己的程序或文件到板子的文件系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所在的目录的所有文件copy到tmp目录下: 比如你的文件系统目录在/root/rootfs-test :
cp -av /root/rootfs-test/* /tmp/ (这里注意一个细节:copy的时候,用参数a表示copy全部,v表示只copy链接本身,不copy它指向的内容,这点很关键哦!) ,另外,有的人常用:cp -pdR 这个你也可以试试,意思就是原来什么样,copy过去就什么样。
这个mkfs.jffs2工具是要额外提供的,如果您没有,可发信索取。
对于CRAMFS:
和JFFS2完全相同的做法,你也完全可以自己
mkdir /cramfs_dir
mkcramfs /cramfs_dir cramfs.img
当然了,和JFFS2不同的是,它是只读的,你在PC机上添加了什么,到板子上就只能有什么,不能再动态创建目录和复制进去文件了,要添加必须重做cramfs.img烧 写到FLASH上才行。
cramfs和romfs只是一个文件系统类型,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你 linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。 ^-^恭喜你,你答对了,加10分
cramfs是只读压缩的文件系统,文件系统类型可以是ext2,ext3,什么的,
当然了,若你的软件包里面没有提供我们原来的这个目录,那也没关系,您完全可以自己重新
mkdir /jffs2_dir
这样做就是你新做的jffs2.img里面除了你刚刚添加的hello外没有任何目录和文件,而这完全可以工作,启动后自己添加即可。
mkfs.jffs2 -d /jffs2_dir -o jffs2.img
制作方法: 假如你的根文件系统的目录是 rootfs (你将来要用到的所有的文件就在这里)
like this : mkcramfs rootfs rootfs.cramfs 就搞定了。如名字所言,它是只读压缩,所以比较省空间,如果你的flash比较小,就用这个吧! 系统启动后,kernel把他load到内存中,解压,所以比较占内存。看你的需要了。
具体制作方法:
dd if=/dev/zero of=rootfs.img bs=1Mcount=一个整数(看你的实际的需要的空间了,一般也就10M)
把它格式化为你需要的文件系统,比如 ext2 ,ext3 ,reiserfs 什么的,
比如ext3 : mkfs.ext3 root.img
然后把它mount到某个目录,比如tmp 吧:
所以,若用户要添加自己的程序到文件系统的image里面去,就是把自己的程序或文件复制到这个FS在PC LINUX上的目录里面去,然后重新打包生成image,这样你的东东就加进去了,以后就是下载和烧写的问题了。
那么具体在做“把自己的程序或文件复制到这个FS在PC LINUX上的目录里面去”这个步骤的时候,不同的文件系统就略有区别了:
然后卸载/tmp/ 目录就好了。
umount /tmp
一般的情况下,ramdisk是要压缩的,对于上面的生成好的img, rootfs.img ,你可以这样压缩:
gzip -v9 rootfs.img 会自动生成rootfs.img.gz ,一般压缩率,30%吧!
romfs
uCLinux系统采用ROMFS文件系统,这种文件系统相对于一般的ext2文件系统要求更少的空间。空间的节约来自于两个方面:首先内核支持ROMFS文件系统比支持ext2文件系统需要更少的代码;其次ROMFS文件系统相对简单,在建立文件系统超级块(superblock)需要更少的存储空间。ROMFS文件系统不支持动态擦写保存,对于系统需要动态保存的数据采用虚拟RAM盘的方法进行处理(RAM盘将采用ext2文件系统).
这个mkcramfs的工具是REDHAT LINUX自带的。
对于uClinux上用的ROMFS:
genromfs -v -V "ROMdisk" –f romfs.img –d romfs_dir
当然了,这个romfs目录是任何一个uClinux-dist包里面都会默认带有的目录。
romfs, cramfs和ramdisk
可以从/下载生成romfs的工具genromfs
添加自己的程序或文件到板子的文件系统
首先,所谓文件系统就是用户程序和文件的集合,在LINUXPC机上放到一个统一的目录下,然后通过一个工具打包成一个image文件,这通常是个压缩的过程。然后烧制到板子上后,LINUX内核启动完成后,会逐个挂接这些文件系统映象文件并做解包的工作,当然第一个挂接的就是rootfs了,有了rootfs并提供了SHELL之后,就可以通过mount这个SHELL命令来挂载其它FS了。
例如您的程序是一个可执行程序hello,放在/目录下面:
对于RAMDISK:
它是要先在PC上解压到一个目录上的
mkdir /mydir
mount –o loop ramdisk.image /mydir
cp /hello /mydir
umount mydir
gzip ramdisk.image
这样就加入了
对于JFFS2,则不要解压原有的jffs2.img,而是直接往原来的目录里面添加即可:
注意:下面的这个jffs2_dir是你的软件包里面原来就有的,例如HHARM9-EDU就是
/HHARM9-EDU/Images/backup/jffs2目录,这个目录里面原来就有我们默认添加的一些文件和目录,你只要把自己的程序复制进去即可。
而ramdisk呢?这个用的比较多,ramdisk相当于一块硬盘空间,可以理解为在内存中虚拟出一块硬盘来,所以它上面就可以有你linux支持的各种文件系统什么的。所以你问的,它和romfs和cramfs确实不是一个层次的概念。 关键是以后,在ramdisk里面可以写,这是一个和cramfs重要的区别了。
相关文档
最新文档