快速学会linux根文件系统制作

来源:互联网 发布:enum class java 编辑:程序博客网 时间:2024/05/01 00:26


特别说明:根文件系统制作过程中所有拷贝命令均需加“-a”参数(  #cp  –a  )否则将出现难以预料的问题。

                  

按照此方法可以制作完成一个yaffs2格式的纯净的linux根文件系统,其它格式可以使用相应的打包工具即可。本教程只是一个简单的创建根文件系统的流程说明,做开发的话还会有很多后续环境配置。故新手可以按照本教程操作学习,对linux根文件系统有一个感性认识。

1、工具准备

busybox(本教程采用1.20版本)  (百度搜索即可下载)

 yaffs2打包工具(要在uboot中配置相应的格式支持)

 交叉编译工具链(arm-linux-gcc、mips-linux-gcc)

2、busybox配置编译

      1.解压busybox压缩包,进入解压后的目录

      2.执行  # make menuconfig命令,进入配置界面

注意以下选项:

(1)      Build BusyBox as astatic binary ( no shared libs )  //将busybox编译成静态链接

(2)      Do you want to buildbusybox with a Cross Compile? (/usr/local/arm/3.3.2/bin/arm-linux-) CrossCompile prefix  //指定交叉编译器路径

(3)       Support reading an inittab file  //支持init读取/etc/inittab 配置文件

(4)       ash选中ash   //建立的rcS脚本才能执行

(5)       cp  cat  ls mkdir  mv   //可执行命令工具的选择,自己看着办吧,需要用到的就选上

(6)       Installation Options 指定安装路径(默认为./_install)

其余大部分选项默认即可,busybox的具体问题可以网络搜索相关文档查看。

           3.保存退出。

执行#make#make install,将会在指定目录下(./_install)生成文件系统需要的目录结构及相关命令和启动文件

           4.创建动态库(使用静态编译的跳过本步骤)

         使用#***-linux-readelf –d 命令查看busybox程序所使用的动态库文件及其软链接

         拷贝库文件及其软链接到指定存放文件系统目录的/lib目录下

         (切记拷贝使用#cp –a命令)

3、建立文件系统的目录结构

 

              执行# mkdirmyroots  建立文件系统根目录

              执行# mkdirbin sbin usr lib dev mnt opt root etc home proc tmp var创建所有需要用到的目录结构

              将busybox编译产生的/bin、/sbin、/usr目录和linuxrc文件拷贝至文件系统根目录myroots下

          执行# mkdiretc/init.d

进入etc/init.d目录下,建立一个脚本文件,并命名为rcS,用gedit打开,添加如下内容:

#!/bin/sh

 

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:

runlevel=S

prevlevel=N

umask022

exportPATH runlevel prevlevel

#

#  Trap CTRL-C &c only in this shell so wecan interrupt subprocesses.

#

trap":" INT QUIT TSTP

这个文件可以添加各种启动需要运行的命令脚本,如网卡配置、nfs挂载等

 

4、创建设备节点文件

在根目录/dev目录下,执行“#mknod设备名字 类型 主设备号 次设备号”创建设备文件

#mknodconsole c 5 1

也可以从pc机linux下dev目录中复制相关设备文件到文件系统/dev目录

5、写init启动脚本

在/etc下创建启动脚本文件inittab

#vi/etc/inittab

写入如下两行:

::sysinit:/etc/init.d/rcS

::respawn:-/bin/login

第一行指定开机系统启动之后运行的启动脚本是rcS,第二行要求需用户密码登录系统

将pc机/etc/下的passwd、shadow、group文件拷贝至根文件系统/etc下,删去root以外的条目。则可以用pc机root帐号和密码登录嵌入式设备

 

6、创建虚拟文件系统

文件系统根目录下执行#mkdir/proc /sys /tmp

在rcS脚本中挂载三个虚拟文件系统,或板子启动后在串口终端执行:

#mount–t proc proc /proc

#mount–t sysfs sys /sys

#mount–t tmpfs tmp /tmp

挂载后proc文件夹存放系统关键信息

Sys目录存放系统信息

Tmp目录可做临时文件存储,直接存在内存上,读写速度快

 

7、用yaffs2工具打包文件系统

       在工具所在目录执行#yaffs2 2 根文件系统目录 根文件系统镜像名字

       #yaffs2  2 ***/rootfs  myrootfs.image

       #chmod  644 myrootfs.image  更改镜像权限

 

 

 

至此,一个空白的根文件系统制作完毕,可以烧写到板子上运行

0 0
原创粉丝点击