第一、二期衔接——2.1 构建最小根文件系统

根文件系统的构建

  • 硬件平台:韦东山嵌入式Linxu开发板(S3C2440.v3)
  • 软件平台:运行于VMware Workstation 12 Player下UbuntuLTS16.04_x64 系统
  • 参考资料:《嵌入式Linux应用开发手册》
  • 开发环境:Linux 2.6.22.6 内核、arm-linux-gcc-3.4.5-glibc-2.3.6工具链


一、前言

在嵌入式系统中,u-boot的目的是为了启动内核,而内核的目的是为了启动应用程序
提问:应用程序保存到哪里呢?
解答:应用程序保存在根文件系统中。

1、那什么是根文件系统呢?

(摘抄于《嵌入式Linux应用开发手册》第十七章)

与Window的C盘类似,Linux一样要在一个分区上存放系统启动多必需的文件,比如内核映象文件,内核启动后运行的第一个程序(init)、给用户提供操作界面的shell程序、应用程序所以来的库等。这些必须、基本的文件合称为根文件系统。

2、最小的根文件系统由什么组成?

组成部分:

  1. ① /dev/console 与 /dev/null 设备节点
    /dev/console 这个设备代表的是系统控制台错误信息和诊断信息通常会被发送到这个设备。
    /dev/null 这个是一个空设备文件,所有写到这个文件中的数据都会被丢弃掉

  2. ② /etc/inittab 启动配置文件
    init进程根据 /etc/inittab 文件创建其他子进程,比如调用脚本文件配置IP地址、挂接其他文件系统、最后启动shell等。

  3. ③ 配置文件中的指定程序

  4. ④ C库lib
    该目录下存放共享库和可加载模块(驱动程序)。

  5. ⑤ Busybox
    是一个遵循GPL v2协议的开源项目,将众多的UNIX命令集合进一个很小的可执行程序中。在创建最小根文件系统时,利用Busybox,只需要在/dev目录下创建必要的设备节点、在/etc目录下创建一些配置文件就可以了。

二、配置编译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目录下,破环系统。
正确步骤如下:

  1. 创建一个名为first_fs文件夹(可在任意目录下):mkdir -p /home/book/nfs_root/first_fs
  2. 执行安装命令make CONFIG_PREFIX=/home/book/nfs_root/first_fs install
    注意执行安装时目录为busybox-1.7.0

如何判断是安装成功?

  1. 进入你所新建的文件夹下,查看是否有如下文件:
    在这里插入图片描述
  2. 进行如下操作,看看是否可以成功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下载口烧写到开发版上,最终结果如下:
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章