根文件系统的构建
/*
*硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
*软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
*参考资料:《嵌入式Linux应用开发手册》
*/
目录
一、前言
在嵌入式系统中,u-boot的目的是为了启动内核,而内核的目的是为了启动应用程序。
提问:应用程序保存到哪里呢?
解答:应用程序保存在根文件系统中。
1、那什么是根文件系统呢?
(摘抄于《嵌入式Linux应用开发手册》第十七章)
与Window的C盘类似,Linux一样要在一个分区上存放系统启动多必需的文件,比如内核映象文件,内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所以来的库等。这些必须、基本的文件合称为根文件系统。
2、最小的根文件系统由什么组成?
组成部分:
① /dev/console /dev/null 设备节点
② /etc/inittab 启动配置文件
③ 配置文件中的指定程序
④ C库
⑤ busybox
二、配置编译Busybox
1、下载busgbox压缩包到Linux系统上并解压
tar xjf busybox-1.7.0.tar.bz2
在解压后的busybox-1.7.0
目录下找到这个INSTALL
文件
其中说明了编译的步骤
2、创建配置文件
指令为:
make menuconfig # This creates a file called ".config"
遇到问题:
这个时候由于系统的make工具太新,make的旧版规则已经无法兼容新版,会出现以下错误:
解决方法:
根据报错信息,修改makefile文件405行和1242行的代码:
405行修改为:%config: scripts_basic outputmakefile FORCE
1242行修改为:%/: prepare scripts FORCE
成功后出现以下画面:
接下来的配置:
按需配置自己所需要的配置项,这里介绍如何配置交叉编译工具
由于在配置项中寻找不到交叉编译工具的配置项,故通过修改makefile文件的方式进行配置。
- 添加
arm-linux-
前缀到如下位置:
3、make文件
在目录为busybox-1.7.0
执行make
命令
这个过程会比较久,成功后会出现以下界面
4、安装
由于我们是在PC机上进行配置安装,如果执行make install
会默认安装到PC目录下,破环系统。
正确步骤如下:
- 创建一个名为
first_fs
文件夹(可在任意目录下):mkdir -p /home/book/nfs_root/first_fs
- 执行安装命令
make CONFIG_PREFIX=/home/book/nfs_root/first_fs install
注意执行安装时目录为busybox-1.7.0
如何判断是安装成功?
- 进入你所新建的文件夹下,查看是否有如下文件:
- 进行如下操作,看看是否可以成功busybox链接
以上就是全部的配置安装busybox步骤了。
三、创建/console和/null设备文件
1、在创建设备文件时,可以先查看当前PC机上该设备文件的属性ls /dev/console /dev/null -l
解释:
crw------- 1 root root 5, 1 4月 10 14:50 /dev/console
2、在安装~/first_fs
下创建属性相同的/dev/console
和/dev/null
sudo mknod console c 5 1
sudo mknod null c 1 3
如图:
四、构造/etc/inittab
1、在/first_fs目录下
创建/ect文件mkdir etc
2、在/first_fs/etc
目录下创建可编辑文件vi inittab
添加内容为:console::askfirst:-/bin/sh
五、加载C库
1、在/first_fs
目录下新建lib文件mkdir lib
2、执行如下命令
cd /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib
cp *.so* /home/book/nfs_root/first_fs/lib -d
最终lib文件下如图:
六、制作yaffs2映像文件
提问:上述步骤所构建的最小根文件系统,如何烧写到开发板中呢?
解答:需要制作yaffs2映像文件。
1、解压yaffs工具压缩包
进入到/work/system
里面有一个文件,进行解压得到Development_util_ok
文件
命令:tar xjf yaffs_source_util_larger_small_page_nand.tar.bz2
2、make yaffs2工具
进入到解压文件Development_util_ok
中的/work/system/Development_util_ok/yaffs2/utils
进行make
命令
结果如下:其中mkyaffs2image
是我们所用到的工具
3、拷贝mkyaffs2image
到/usr/local/bin
命令:sudo cp mkyaffs2image /usr/local/bin
sudo chmod +x /usr/local/bin/mkyaffs2image
4、创建文件系统映像
回到/homr/book/nsf_root
目录下创建,使用方式可以输入mkyaffs2image
查询
输入指令mkyaffs2image first_fs first_fs.yaffs2
,就会生成first_fs.yaffs2
映像根文件系统
七、烧写映像根文件系统
通过服务器把生成的first_fs.yaffs2
文件下载下来,通过USB下载口烧写到开发版上,最终结果如下: