《2022年2022年建立jffs根文件系统 3.pdf》由会员分享,可在线阅读,更多相关《2022年2022年建立jffs根文件系统 3.pdf(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、JFFS2 根文件制作由 于使 用的 ubantu7.04 的环 境没 有安 装制 作 JFFS2 文件系 统 镜像的 工 具mkfs.jffs2,所以首先在 Linux 系统中安装 mkfs.jffs2 工具,安装的过程如下:1下载 MTD 工具包本处使用的是 mtd-snapshot-20050519.tar.bz2 :farsight#tar jxvf mtd-snapshot-20050519.tar.bz2 farsight#cd mtd farsight#./configure farsight#make farsight#make install 如果系统中没有安装ZLIB 库,
2、那么首先安装ZLIB 库。具体的安装过程如下:farsight#tar zxvf zlib-1.2.3.tar.gz farsight#cd zlib-1.2.3 farsight#./configure farsight#make farsight#make install 完成此步骤后,系统中就有了 mkfs.jffs2 的工具。注意: 这个工具不同于mkfs.ext2工具,它只能制作相应的JFFS2文件系统的镜像,而不具有进行格式化的功能,而 mkfs.ext2具备这以上两种功能。然后用这个工具就可以制作JFFS2文件系统的镜像了。2、制作 JFFS2文件镜像实验平台用到的 nand f
3、lash 是 K9F1208, 在制作镜像过程添加的参数需要和它对应。farsight#mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0 x4000 -pad=0 x800000 -n 这样就会生成一个8M 大小的 rootfs.jffs2 的镜像,它也正是 JFFS2文件系统的镜像,关于这个命令行里的选项的内容,可以用man a mkfs.jffs2命令来查看内容。JFFS2 维护了几个链表来管理擦写块, 根据擦写块上的内容, 一个擦写块会在不同的链表上。具体来说,当一个擦写块上都是合法(valid) 的节点时,它会在clean_list 上
4、 ;当 一个 擦写 块包含 至少 一个 过时 (obsolete)的 节点 时, 它会在dirty_list 上;当一个擦写块被擦写完毕,并被写入CLEANMARKER 节点后,它 会 在free_list 上 。 而 当 你 在 挂 载 这 个 文 件 系 统 的 时 候 , 如 果 出 现CLEANMARKER node found at 0 x0042c000 has totlen 0 xc != normal 0 x0 的警告的时候,可以加一个 -n 的选项, 这个主要是由于针对Nand Flash不需要在每个擦除块的开始写入 CLEANMARKER 节点。3、设置内核启动参数本处用的
5、 bootloader是 U-BOOT.所以在 U-BOOT 的命令终端设置如下:FS2410#setenv bootargs root=/dev/mtdblock/2 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M 4、配置内核支持 JFFS2文件系统File systems - Miscellaneous filesystems - JournallingFlash File System v2 (JFFS2) support *JFFS2write-bufferingsupport 名师资料总结 - - -
6、精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 3 页 - - - - - - - - - *AdvancedcompressionoptionsforJFFS2 *JFFS2ZLIBcompressionsupport *JFFS2RTIMEcompressionsupport * JFFS2 RUBIN compression support 5、下载 rootfs.jffs2 镜像下载到 Nand Flash第二个分区。FS2410#nand erase 200000 800000 FS2
7、410#nand write.jffs2 300008000 200000 800000 这里说明下关于 nand flash操作的几个常用命令的含义nand write:向 Nand Flash 写入数据,如果 NandFlash相应的区域有坏块,则直接报错。nand write.jffs2 :向 Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块。nand read : 读取 Nand Flash相应区域的数据, 如果 NandFlash相应的区域有坏块,则直接报错。nand read.jffs2s:读取 Nand Flash 相应区域的数据,如果NandF
8、lash相应的区域有坏块,将对应坏块区域的缓冲填充0 xff,然后跳过此坏块继续读取。nand read.jffs2 :读取 Nand Flash相应区域的数据, 如果 NandFlash相应的区域有坏块,直接跳过坏块。具体的参考代码参看U-BOOT 源码: common/cmd_nand.c文件。下载完 JFFS2文件系统镜像后, 需要把 Linux 内核 NandFlash的驱动关于第二个分区的大小改为 8M(和镜像一样大),否则会出现类似如下错误:Freeing init memory: 124K Warning: unable to open an initial console. A
9、rgh. Special inode #171 with mode 0 xa1ff had more than one node Kernel panic: No init found. Try passing init= option to kernel. Argh. Special inode #63 with mode 0 xa1ff had more than one node Returned error for crccheck of ino #63. Expect badness. Argh. Special inode #67 with mode 0 xa1ff had mor
10、e than one node Returned error for crccheck of ino #67. Expect badness. Argh. Special inode #68 with mode 0 xa1ff had more than one node 到此,一个 JFFS2 文件系统的镜像制作成功。可以启动系统并测试JFFS2 的性能了还有一种制作 JFFS2文件系统镜像的方法,在制作镜像的参数中可以不加pad选项,过程如下:farsight#mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0 x4000 -n 启动开发板烧
11、写 rootfs.jffs2 镜像FS2410#nand erase 200000 800000/(注意把整个存放文件系统的分区全部给擦除)。FS2410#nand write.jffs2 30008000 200000 31a28c/( 必须是 rootfs.jffs2的实际大小。如果是你写成了 4M,那么分区的其余部分JFFS2文件系统将无法识别 )。挂接 JFFS2文件系统名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 3 页 - - - - - - - - - (
12、1) 修改设备号由于 ROM 设备和 MTDBlock 设备的主设备号( major)都是 31,所以如果你不想把 JFFS2 作为根文件系统的话,必须修改他们之一的major。如果你要修改JFFS2的设备 major,在 /linux-2.4.x/include/linux/mtd/mtd.h 中把define MTD_BLOCK_MAJOR 31 改成define MTD_BLOCK_MAJOR 30 (2) 编写 Maps文件添加在 flash上的 map文件。在/kernel/drivers/mtd/maps下添加 flash(如 intel NOR型 28f128j3a)的 map。
13、(3) 将配置加入 /kernel/drivers/mtd/maps/Config.in 中dep_tristate CFI Flash device mapped on S3C2410 CONFIG_MTD_S3C2410 $CONFIG_MTD_CFI (4) 配置内核使其支持jffs2。这里要特别注意 Memory Technology Devices (MTD)的选项支持及其子项RAM/ROM/Flash chip drivers - Mapping drivers for chip access - 的选项支持;还有File systems下选项支持。具体的配置选择请参考附录1 (5
14、) 制作 jffs2 映象首先取得 jffs2 的制作工具: mkfs.jffs2(可从网上取得)。执行如下命令即可生成所要的映象:chmod 777 mkfs.jffs2 /取得 mkfs.jffs2 的执行权限,即 mkfs.jffs2成为可执行文件./mkfs.jffs2 d jffs2/ o jffs2.img / 生成 jffs2 文件映象,其中目录 jffs2 可以是任意的目录,这里的jffs2 是我新建的一个目录。(6) Jffs2 的下载烧写完引导程序(boot loader) 、 内核影像 (zImage) 、 根文件系统(ramdisk.image.gz )之后,接着烧写
15、jffs2.img,具体烧写如下:tftp 30800000 jffs2.img fl 1800000 30800000 20000 (其中 20000可根据 jffs2 的大小适当调整,理论上只要比 jffs2.img 略大即可,但要为20000 的整数倍。 1800000是 Jffs2在闪存中的起始位置, 3800000是将 jffs2.img 下载到内存中的位置)(7) 在根文件系统上自动挂接Jffs2 在 ramdisk.image.gz的 mnt/etc/init.d/rc$文件中加入如下指令以便启动时自动挂载jffs2 文件系统。 Mount t jffs2 /dev/mtdblock/4 /mnt (其中的 /dev/mtdblock/4 是flash上的 jffs2 分区)名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 3 页 - - - - - - - - -