S3C6410嵌入式应用平台构建(六)——linux-3.14.4移植到OK6410-(Yaffs2文件制做)

本文主要讲怎用利用yaffs2工具和busybox制做yaffs2文件系统镜像。大多数都是参照网上的,目的在于记录学习,不作任何用途。node

   1、制做mkyaffs2image工具linux

         进入yaffs2源码目录下utils目录,修改mkyaff2image.c,作以下修改:git

进入yaffs2源码目录下direct目录,修改yportenv.hweb

增长#define CONFIG_YAFFS_DEFINES_TYPESshell

保存后make,这时就在utils目录生产mkyaffs2image文件,把这个文件拷贝到/usr/bin目录下vim

到此,后面咱们就能够用该工具制做镜像文件了。app

 

    2、制做根文件系统dom

当咱们在linux下输入ls  / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是由于全部的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。socket

该标准规定了根目录下各个子目录的名称及其存放的内容:tcp

目录名

存放的内容

/bin

必备的用户命令,例如ls、cp等

/sbin

必备的系统管理员命令,例如ifconfig、reboot等

/dev

设备文件,例如mtdblock0、tty1等

/etc

系统配置文件,包括启动文件,例如inittab等

/lib

必要的连接库,例如C连接库、内核模块

/home

普通用户主目录

/root

root用户主目录

/usr/bin

非必备的用户程序,例如find、du等

/usr/sbin

非必备的管理员程序,例如chroot、inetd等

/usr/lib

库文件

/var

守护程序和工具程序所存放的可变,例如日志文件

/proc

用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容

/sys

用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容

/mnt

文件系统挂接点,用于临时安装文件系统

/tmp

临时性的文件,重启后将自动清除

制做根文件系统就是要创建以上的目录,并在其中创建完整目录内容。其过程大致包括:

· 编译/安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

· 利用交叉编译工具链,构建/lib目录

· 手工构建/etc目录

· 手工构建最简化的/dev目录

· 建立其它空目录

· 配置系统自动生成/proc目录

· 利用udev构建完整的/dev目录

· 制做根文件系统的Yaffs2映像文件

下面就来详细介绍这个过程。

  1. 下载并编译Busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录

  1.1 下载网址:http://www.busybox.net/   我下载  busybox-1.22.1.tar.bz2

  1.2 解压后修改Makefile文件,这就不用说,跟Linux同样。

   1.3 配置菜单

咱们大多按找默认配置,而后在此基础上进行修改。

   $ make defconfig

   $ make menuconfig

Busybox Settings --->Build Options --->(arm-linux-) Cross Compiler prefix
Busybox Settings --->General Configuration --->[*] Don't use /usr

Busybox Settings --->Installation Options—>你本身要安装的目录(默认是_install目录)

我本身设置在ok6410_fs/  


  1.4 编译,安装

  $make;make install

  咱们进入ok6410_fs后发现,已经有了  /bin、/sbin、/usr/bin、/usr/sbin

 

2. 构建基本的文件夹及文件

   创建Linux文件系统基本的文件夹,我也是参照别人的,无非就是新建文件夹,而后改权限嘛,我这里就偷个懒,和别人同样,写个脚本。

保存,修改权限:chmod +x creat_fs.sh

$ ./creat_fs.sh

 

2. 1 建立 /etc/profile文件,主要用于环境变量。文件内容以下:

2.2 建立初始化文件。etc/init.d/rcS

注意修改这个文件权限:chmod +x /etc/init.d/rcS

2.3 建立etc/fstab文件


2.4 建立 etc/inittab文件

inittab文件中每一个条目用来定义一个须要init启动的子进程,并肯定它的启动方式,格式为<id>:<runlevel>:<action>:<process>。例如:ttySAC0::askfirst:-/bin/sh

 

2.5 建立 usr/etc/init


注意修改权限:chmod +x usr/etc/init

 

2.6 建立usr/etc/mdev.conf,内容为空。

 

3. 拷贝arm工具链中库文件到lib目录中

$ cp /usr/local/arm/toolschain/4.4.3/arm-none-linux-gnueabi/lib/*so* lib/ –d

-d的做用,原来是一个连接文件的还拷贝成一个连接文件,若是不带-d的话会拷贝到源文件,这个时候文件就会比较大

 

4. 到此,基本的根文件系统已经准备好,下面用mkyaffs2image产生镜像文件。

$ mkyaffs2image ok6410_fs  rootfs.yaffs2

 

最后经过,tftp下载到板子上,写到nandflash上启动,启动log以下:

从上面能够看出,yaffs2文件系统是挂载成功了,可是内核仍是启动不起来,下篇文章在具体分析了。个人周末呀。。。。
相关文章
相关标签/搜索