第4阶段——制作根文件系统之编译配置安装busybox(3)

在上一节分析出制作一个最小的根文件系统至少需要:

(1)/dev/console(终端控制台, 提供标准输入、标准输出以及标准错误)

/dev/null  (为空的话就是/dev/null, 所有写到这个文件中的数据都会被丢弃掉。)

(2)init进程的程序(也就是busybox,因为init程序位于busybox中)

(3)/etc/inittab(用于init进程读取配置, 然后执行inittab里的指定应用程序)

(4)应用程序(被inittab配置文件调用的应用程序)

(5)C库(glibc,被应用程序调用的C库函数,比如:printf,strcmp,fopen等)

本节目的:

编译配置busybox (因为制作最小的根文件系统需要init进程,以及运行各种命令等)

1 编译配置busybox

1.1 首先将busybox源码(位于资料光盘/system)放在linux中/work/system下

cd /work/system            

tar -xjf busybox-1.7.0.tar.bz2

解压后,cd busybox-1.7.0 进入busybox-1.7.0目录

2 查看busybox-1.7.0/INSTALL文件,让我们知道如何编译配置它,如下图:

得出:

make menuconfig             //通过配置菜单配置.config文件

make                        //编译busybox可执行文件

make install                  //直接安装,该命令会安装到PC机中,将破坏系统

make CONFIG_PREFIX=/path/from/root  install  //安装到指定目录/path/from/root下

3 所以首先make menuconfig 配置.config,如下图:

3.1 在Library Tuning(库调整)子菜单中设置按tab键补齐,如下图:

3.2 取消静态连接,如下图:

因为使用库函数glibc时,如果静态编译busybox,会出现很多警告信息:

库函数glibc需要放在/lib目录下

3.3 选择tar命令:

3.4选择insmod/rmod/lsmod命令,支持2.6.x内核:

3.5 支持mdev(并支持medv.conf和热拔插),选择mount/umount命令(并支持NFS文件系统)

3.6 选择ifconfig命令

4 通过make直接编译

make编译后发现有错:

原因是 busybox-1.7.0顶层目录下Makefile没有使用交叉编译”arm-linux-”

在Makefile中添加”arm-linux-”:

然后重新make编译即可

5 安装到指定目录

mkdir -p /work/nfs_root/mini_fs     //先创建指定目录

make CONFIG_PREFIX=/work/nfs_root/mini_fs  install    //安装到指定目录

cd /work/nfs_root/mini_fs 进入安装的目录:

从上图看出共有3个目录和1个linuxrc文件,其中

bin包含用户工具,包括了大部分命令,该子目录下所有文件指向busybox

sbin目录包含操作系统工具,同样也指向busybox。

linuxrc是一个链接文件,指向busybox。

busybox做好后,下一节就开始构建根文件系统

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏web编程技术分享

【php增删改查实例】第二十五节 - 在main.php中显示头像

20930
来自专栏钟绍威的专栏

硬连接与软连接,inode与links当访问一个文件的时候,发生了什么INODE的内容建一个硬连接发生了什么?访问硬连接的过程注意建一个软连接发生了什么?访问一个软连接注意

硬连接和软连接,第一感觉就像是window的快捷方式,实则不然 要说硬连接和软连接,那就必须了解inode和block以及分区了 EXT文件系统在创建分区的时候...

21490
来自专栏云计算教程系列

如何在CentOS 7上将ngx_pagespeed添加到Nginx

ngx_pagespeed,或者pagespeed,是一个Nginx模块,旨在通过精简资源的规模来缩短客户端浏览器加载它所需的时间,从而自动优化您的网站。如果您...

23400
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装Linux,Nginx,MySQL,以及PHP(LNMP)堆栈

LNMP软件堆栈是一组可用于为动态网页和Web应用程序提供服务的软件。这是一个描述Linux操作系统的首字母缩写词,带有Nginx Web服务器。后端数据存储在...

19040
来自专栏前端vue

编写接口连接并查询数据库数据(二)

安装测试工具postman 不想下载软件的话可以用谷歌插件postman 这个东西是测试用的,不需要的可以不下载

1.1K10
来自专栏Java技术栈

Maven精选系列--依赖范围、传递、排除

今天讲讲如何管理依赖,及依赖的范围、传递性等特征。 添加依赖 下面我添加了一个spring-web的依赖,maven就会去下载spring-web的jar包及...

398120
来自专栏IT笔记

Linux下安装 Python3

Linux下大部分系统默认自带python2.x的版本,最常见的是python2.6或python2.7版本,默认的python被系统很多程序所依赖,比如cen...

16530
来自专栏屈定‘s Blog

网站升级HTTPS与HTTP2记录

最近看到两篇文章对于HTTPS与HTTP2两者讲解的很详细,分享并实践一下,正好近期捣鼓了一个个人站点https://mrdear.cn/,可以用来实验. 文章...

70440
来自专栏JavaEdge

从零开始的电商后台世界(更新 ing)2 预备知识储备3 前端框架的分析5 React 框架基础

20830
来自专栏前端杂货铺

移动端测试方案--sptt

sptt sptt是移动端UI自动化测试的一种解决方案,全称为special tool of test。sptt提供了一套测试解决方案,并使用命令行完成相关操作...

40460

扫码关注云+社区

领取腾讯云代金券