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

(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)的更多相关文章

  1. 第4阶段——制作根文件系统之分析init进程(2)

    本节目标: (1) 了解busybox(init进程和命令都放在busybox中) (2) 创建SI工程,分析busybox源码来知道init进程做了哪些事情 (3)  分析busybox中init进 ...

  2. 第4阶段——制作根文件系统之分析init_post()如何启动第1个程序(1)

    本章学习如何启动第一个应用程序 1.在前面的分析中我们了解到,在init进程中内核挂接到根文件系统之后,会开始启动第一个应用程序: kernel_init函数代码如下: static int __in ...

  3. 使用Busybox-1.2.0制作根文件系统

    使用Busybox-1.2.0制作根文件系统 cross-3.3.2 make-3.8.1 STEP 1: 创建根文件系统目录,主要包括以下目录/bin,/etc,/dev,/mnt,/sbin,/u ...

  4. 利用busybox制作根文件系统

    实际项目中可以使用Buildroot制作根文件系统 1.busybox源码下载及配置 https://busybox.net/downloads/ 1.1.修改Makefile (1) ARCH = ...

  5. mini6410基于linux2.6.36内核通过NFS启动根文件系统总结(四制作根文件系统及通过NFS挂载文件系统)

    http://blog.csdn.net/yinjiabin/article/details/7489563 根文件系统一般包括: 1)基本的文件系统结构,包含一些必须的目录,比如:/dev,/pro ...

  6. 通过busybox制作根文件系统

    通过busybox制作根文件系统可以自定义选项,在制作的根文件系统中添加需要的命令,指定生成的根文件系统到相应的目录下. 一. 根文件系统的获取方式--->官网: https://busybox ...

  7. 通过busybox制作根文件系统详细过程

    我在之前的uboot通过NFS挂载ubuntu根文件系统中也有实现过根文件系统的制作,那只是在ubuntu官网已经做好的根文件基础上安装一些自己所需的软解而已.而使用busybox制作根文件系统可以自 ...

  8. mkyaffs2image制作根文件系统、使用NFS挂载虚拟机目录(2)

    1.制作根文件系统及nfs烧写 1.1 先解压文件系统,/wok/nfs_root 目录下是已经构造好的各种文件系统:① fs_mini.tar.bz2 是最小的根文件系统,里面的设备节点是事先建立好 ...

  9. 制作根文件系统之Busybox init进程的启动过程分析

    先来介绍一下什么是Busybox:它是将众多的UNIX命令集合进一个很小的可执行程序中. 在制作根文件系统之内核如何启动init进程中遗留了一个问题是/linuxrc是内核启动的第一个应用程序,那么它 ...

随机推荐

  1. Java基础之TCP与UDP

    OSI 7层参考模型 物理层 --> 数据链路层 --> 网络层 --> 传输层 --> 会话层 --> 表示层 --> 应用层 按此顺序称为拆包,反之为封包. T ...

  2. C# 6.0 内插字符串 (Interpolated Strings )

    讲Interpolated Strings之前,让我们先看EF Core 2.0 的一个新的特性:String interpolation in FromSql and ExecuteSqlComma ...

  3. Java常用文件操作-1

    在我们的实际工作中经常会用到的文件操作,再此,将工作中碰到的做一个记录,以便日后查看. 1.复制文件夹到新文件夹下 /** * 复制文件夹下所有文件到指定路径 *@param oldPath *@pa ...

  4. /etc/shadow,/etc/passwd,/etc/shadow,/etc/passwd文件的内容解释

    1.1 /etc/passwd文件内容格式           该目录存储的是操作系统用户信息,该文件为所有用户可见 用户名: 密码 : uid  : gid :用户描述:主目录:登陆shell 举个 ...

  5. Misra-Gries 算法

    2017/8/13 12:51:30 一.算法解决的问题 统计频繁项:统计一个数据流中出现频率最高的 k 的元素. 例如 问:k=3,统计数据流 [1,2,1,4,2,5,6,4] 中的频繁项. 答: ...

  6. 设计模式的征途—19.命令(Command)模式

    在生活中,我们装修新房的最后几道工序之一是安装插座和开关,通过开关可以控制一些电器的打开和关闭,例如电灯或换气扇.在购买开关时,用户并不知道它将来到底用于控制什么电器,也就是说,开关与电灯.换气扇并无 ...

  7. Apache崩掉:为进程配置合适的线程数

    放假以来,服务器Apache二次崩掉了,不能再拖了,找bug解决: 崩掉的具体状况是,服务器出现弹框显示:Apache停止工作: 顺手关掉这个可恶的小弹框,世界就清静了,服务器正常运行: 具体问题: ...

  8. ML: 聚类算法R包-模糊聚类

    1965年美国加州大学柏克莱分校的扎德教授第一次提出了'集合'的概念.经过十多年的发展,模糊集合理论渐渐被应用到各个实际应用方面.为克服非此即彼的分类缺点,出现了以模糊集合论为数学基础的聚类分析.用模 ...

  9. 关于Thread类的简单使用

    线程:线程也被称为轻量级进程,进程和线程都提供一个执行环境,但创建一个新的线程比创建一个新的进程资源要少得多 线程存在进程里,也就是说一个进程至少包括一个线程 线程共享进程的资源,包括内存和打开的文件 ...

  10. 一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(四)用户接口层之处理SDP报文

    当RTSP客户端向RTSP服务端发送DESCRIBE命令时,服务端理应当回复一条SDP报文. 该SDP报文中包含RTSP服务端的基本信息.所能提供的音视频媒体类型以及相应的负载能力,以下是一段SDP示 ...