韦东山嵌入式Linux学习——002 构建最小根文件系统(1)

根文件系统的构建

/*
 *硬件平台:韦东山嵌入式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目录下,破环系统。
正确步骤如下:

  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下载口烧写到开发版上,最终结果如下:
在这里插入图片描述

发布了40 篇原创文章 · 获赞 29 · 访问量 3613

猜你喜欢

转载自blog.csdn.net/weixin_42813232/article/details/105419991