所谓的制作文件系统映像文件,就是将一个目录下的所有内容按照一定的格式存放到一个文件中,这个文件可以直接烧写到存储设备上去。当系统启动后挂接这个设备,就可以看到原来目录一样的内容。制作不同类型的文件系统映像文件需要使用不同的工具。

1、修改制作 yaffs映像文件的工具

   首先声明,我也是初次学习制作根文件系统,完全是比着葫芦画剽,照着韦老师的教程写的,至于为什么要修改,是为了适应他之前编译的linux2.6.22.内核,不过不要紧,重要的是先熟悉流程,废话不多说,我也不进行修改,因为我用的内核不是他的,先生成yaffs映像文件再说。

点此下载。

2、下图为我将此yaffs源码包的存放位置。

 

自己制做镜像系统 如何制作镜像系统_文件系统

3、执行命令:tar -xzvf yaffs_source.tar.gz 解压源码包

  

自己制做镜像系统 如何制作镜像系统_根文件系统_02

4、咱们可以看到此时解压的文件夹为 Development

   执行命令: cd Development/yaffs2/utils/ 

   

自己制做镜像系统 如何制作镜像系统_自己制做镜像系统_03

   在这个目录中,存放的是工具 mkyaffsimage 和 mkyaffs2imag 的源代码,前者用来制作 yaffs1 映像文件,后者用来制作yaffs2映像文件。

  

自己制做镜像系统 如何制作镜像系统_自己制做镜像系统_04

  同时,我先声明一点,我只能保证生成yaffs映像文件,并不能保证生成的映像文件能在我的mini2440板子上运行,因为我也是初学,写这博文主要是为了熟悉流程,具体的生成适合自己板子的还要加以配置,我一定会弄出来的!

   现在,暂不修改。

   执行命令:make 编译生成mkyaffsimage工具

   

自己制做镜像系统 如何制作镜像系统_根文件系统_05

   现在可以看到生成了mkyaffsimage工具了

   

自己制做镜像系统 如何制作镜像系统_自己制做镜像系统_06

5、执行命令:sudo cp mkyaffsimage /usr/local/bin/   将该工具复制到 /usr/local/bin 目录

  

自己制做镜像系统 如何制作镜像系统_根文件系统_07

6、执行命令:sudo chmod +x /usr/local/bin/mkyaffsimage

  

自己制做镜像系统 如何制作镜像系统_文件系统_08

7、现在可以制作yaffs映像文件了

  执行命令:cd  /home/song/nfs_root

  

自己制做镜像系统 如何制作镜像系统_源码包_09

  执行命令:mkyaffsimage fs_mini  fs_mini.yaffs  可以看到生成了yaffs镜像文件

 

自己制做镜像系统 如何制作镜像系统_根文件系统_10

 

8、此时你可以利用uboot控制界面将 fs_mini.yaffs下载、烧如Nand Flash了,操作命令如下

  执行命令:  tftp fs_mini.yaffs

  

自己制做镜像系统 如何制作镜像系统_源码包_11

  可以看到,下载根文件系统完毕。

#擦除此区域,nand使用之前需要先擦除,以便接下来将fs_mini.yaffs保存到这个地址处

 

自己制做镜像系统 如何制作镜像系统_文件系统_12

 执行命令:nand write.yaffs 0x30008000 0x580000 0xdbb040

  

自己制做镜像系统 如何制作镜像系统_自己制做镜像系统_13

  现在可以修改命令行参数以MTD2分区作为根文件系统,比如在 U-bood控制界面如下设置

[u-boot@MINI2440]# set bootargs noinitrd console=ttySAC0  root=/dev/mtdblock2  rootfstyle=yaffs 
  [u-boot@MINI2440]# saveenv

  

  到这里已经完成了,虽然制作出了根文件系统yaffs格式,但是并没有在我的板子上启动起来,结果不出所料,失败的原因就是还没有正确配置根文件系统,并且没有考虑移植的内核。接下来的任务就是好好学学怎么样配置。加油!