第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是内核启动的第一个应用程序,那么它 ...
随机推荐
- 我的学习之路_第三十四章_jsp
jsp 在只有servlet时,输出页面内容比较麻烦(成本高,java代码中输出HTML标签),所以需要一种技术,主要是HTML页面的代码(HTML,css,js),可以嵌入java代码,来实现动态页 ...
- Hadoop 新生报道(三) hadoop基础概念
一.NameNode,SeconderyNamenode,DataNode NameNode,DataNode,SeconderyNamenode都是进程,运行在节点上. 1.NameNode:had ...
- Dapper入门教程(三)——Dapper Query查询
介绍 查询方法(Query)是IDbConnection的扩展方法,它可以用来执行查询(select)并映射结果到C#实体(Model.Entity)类 查询结果可以映射成如下类型: Anonymou ...
- 如何在centos7上安装redis
解压缩 tar zxvf redis-3.0.4.tar.gz 进入解压后的目录 cd redis-3.0.4 使用Make 编译源文件 make 安装 进入源文件的目录 cd src 复制 Redi ...
- java8之lambda表达式(1)-基本语法
lambda表达式,即带有参数的表达式,为更清晰地理解lambda表达式,先看如下例子: (1) class Student{ private String name; private Double ...
- UiAutomator2.0升级填坑记
UiAutomator2.0升级填坑记 SkySeraph May. 28th 2017 Email:skyseraph00@163.com 更多精彩请直接访问SkySeraph个人站点:www.sk ...
- charAt()的功能
<script type="text/javascript"> var str="Hello world!" document.write(str. ...
- 微信小程序简单入门2
底部tab "tabBar": {"list": [{"pagePath": "pages/lists/lists",& ...
- 打鼹鼠 HNOI 2004
动态规划题从题目中可以发现是一个时间递增的过程,所以只要是在后面的点都是后出现的,换句话说,在条件达成时,前面的点可以到达后面的点,求最长的一条链,非常的像LIS(最长上升子序列),只要将 f[i]& ...
- python学习之核心数据类型
python核心数据类型 对象类型 例子 数字 1234,-345 字符串 'spam' 列表 [1,3,'ds'] 元组 (1,'spam',6) 字典 {'name':'lili','age':1 ...