第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做好后,下一节就开始构建根文件系统
第4阶段——制作根文件系统之编译配置安装busybox(3)的更多相关文章
- 第4阶段——制作根文件系统之分析init进程(2)
本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 (3) 分析busybox中init进 ...
- 第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)
本章学习如何启动第一个应用程序 1.在前面的分析中我们了解到,在init进程中内核挂接到根文件系统之后,会开始启动第一个应用程序: kernel_init函数代码如下: static int __in ...
- 使用Busybox-1.2.0制作根文件系统
使用Busybox-1.2.0制作根文件系统 cross-3.3.2 make-3.8.1 STEP 1: 创建根文件系统目录,主要包括以下目录/bin,/etc,/dev,/mnt,/sbin,/u ...
- 利用busybox制作根文件系统
实际项目中可以使用Buildroot制作根文件系统 1.busybox源码下载及配置 https://busybox.net/downloads/ 1.1.修改Makefile (1) ARCH = ...
- mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)
http://blog.csdn.net/yinjiabin/article/details/7489563 根文件系统一般包括: 1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/pro ...
- 通过busybox制作根文件系统
通过busybox制作根文件系统可以自定义选项,在制作的根文件系统中添加需要的命令,指定生成的根文件系统到相应的目录下. 一. 根文件系统的获取方式--->官网: https://busybox ...
- 通过busybox制作根文件系统详细过程
我在之前的uboot通过NFS挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已.而使用busybox制作根文件系统可以自 ...
- mkyaffs2image制作根文件系统、使用NFS挂载虚拟机目录(2)
1.制作根文件系统及nfs烧写 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好 ...
- 制作根文件系统之Busybox init进程的启动过程分析
先来介绍一下什么是Busybox:它是将众多的UNIX命令集合进一个很小的可执行程序中. 在制作根文件系统之内核如何启动init进程中遗留了一个问题是/linuxrc是内核启动的第一个应用程序,那么它 ...
随机推荐
- [补档]暑假集训D6总结
考试 不是爆零,胜似爆零= = 三道题,就拿了20分,根本没法玩好吧= = 本来以为打了道正解,打了道暴力,加上个特判分,应该不会死的太惨,然而--为啥我只有特判分啊- - 真的是惨. 讲完题觉得题是 ...
- caffe数据读取的双阻塞队列说明
caffe的datareader类中 class QueuePair { public: explicit QueuePair(int size); ~QueuePair(); BlockingQue ...
- offsetWidth\offsetleft 等图文解释
网页可见区域宽: document.body.clientWidth;网页可见区域高: document.body.clientHeight;网页可见区域宽: document.body.offs ...
- Vue学习-01
1.vue 学习 v-bind:title 数据绑定 v-if 判断显示或者隐藏 <div id="app-3"> <p v-if="seen" ...
- ASP.NET Core MVC – 自定义 Tag Helpers
ASP.NET Core Tag Helpers系列目录,共四篇: ASP.NET Core MVC Tag Helpers 介绍 ASP.NET Core MVC – Caching Tag Hel ...
- Go语言学习笔记(七)杀手锏 Goroutine + Channel
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 Goroutine Go语言的主要的功能在于令人简易使用的并行设计,这个方法叫做Goroutine,通过Gorou ...
- this final 关键字
this: 1:将当前对象的值返回(谁调用就指谁). 2:添加this关键字可以区分局部变量和成员变量. 3:使用this可以调用其他构造函数(前提是this正处于构造函数中). final: 1:修 ...
- Head First 设计模式 第1章 策略模式
本章从浅入深的讲解了策略模式的使用,以及策略模式中所涉及到的几个设计原则,在本章的最后给出了策略模式的定义. 1.定义及优点 什么是策略模式呢? 答:定义算法族(对象),分别封装起来,让他们之间可以相 ...
- 填涂颜色 洛谷 p1162
题目描述 由数字0 组成的方阵中,有一任意形状闭合圈,闭合圈由数字1构成,围圈时只走上下左右4个方向.现要求把闭合圈内的所有空间都填写成2.例如:6X6的方阵(n=6),涂色前和涂色后的方阵如下: 0 ...
- 在Linux下更新或安装curl
问题 我这有一个项目是.net core写的,然后运行到centos机器上,刚开始发请求都能正常处理,但是时间长了,程序会报Segmentation fault,然后退出,我查了一下系统log,说的是 ...