飞凌课堂丨用busybox构建一个最小根文件系统

BusyBox是一个集成了三百多个最常用Linux命令和工具的软件。

BusyBox包含了一些简单的工具,例如ls、cat和echo等等,还包含了一些更大、更复杂的工具,例grep、find、mount以及telnet。有些人将BusyBox称为Linux工具里的瑞士军刀。

言归正传,我们直接进入正题!

busybox构建

首先我们需要下载busybox的源码包,www.busybox.net官网可下载

 

 

1、busybox菜单的配置及其编译

执行make menuconfig,出现busybox的配置界面,Busybox的编译配置和Linux 内核编译配置使用的命令是一样的。

 

2、执行make编译

Busybox的配置完成后,接下来我们开始编译Busybox,执行make命令,开始编译Busybox。由于使用的交叉编译工具链的版本不同,有些版本可能会出现编译错误。如果没有提示错误,就可以进入下一步的安装啦。

3、安装make install

编译完成后,接下来我们需要把编译生成的“二进制文件”安装到“../system”目录里面,安装二进制文件到“../system”目录输入命令“make install”进入“../system”目录,可看到安装的文件。

4、建立文件系统相关文件

进入ubuntu的根目录,可以看到ubuntu的文件系统,执行ls可以看到:

 

实际上他们每个文件都有一些特殊性的用途,那么我们要制作一个文件系统也需要他们之中的必要文件夹或者文件,接下来我们将手动的去创建这些文件夹或者文件。


▶ 建立etc目录

/etc放置的是一些配置文件,其不同的子文件夹下是对于不同功能的配置功能。

① 建立etc/inittab文件

文件系统初始的配置文件,每次进入文件系统时读取该文件,执行该文件所规定的命令,这里只需要在win系统下打开busybox的源码包里的example/inittab的文件复制出来修改一下就可以。

修改内容为可为:

# /etc/inittab  

::sysinit:/etc/init.d/rcS

::askfirst:-/bin/sh

# Stuff to do before rebooting

::ctrlaltdel:/sbin/reboot

::shutdown:/bin/umount -a -r

② 建立etc/init.d/rcS文件

同样的参考busybox的源码包里的examples/bootfloppy/etc/init.d/rcS文件

内容定义为:

#!/bin/sh

mount –a

mkdir /dev/pts

mount -t devpts /dev/pts

echo /sbin/mdev > /proc/sys/kernel/hotplug

mdev -s

▶ 建立dev设备文件

使用 mdev 建立设备文件,medv 的使用方法在 doc/medv.txt 上有说明。

▶ 建立其他目录

mkdir  proc/  mnt/  tmp/ sys/  root/

5文件系统的挂载

① 为了确保文件系统可以正确的被挂载,必须设置允许服务器去挂载文件系统,为此,首先需要设置服务器的/etc/exports的内容,在exports文件里面加上:/work/root *(rw,sync,no_root_squash)。然后重启一下nfs服务器

② 假设nand已经烧写有文件系统平且已经进入文件系统主要在用mount命令挂载nfs就可以,在板子的文件系统下建立一个mnt的文件夹mkdir /mnt 然后mount –t nfs –o nolock  192.168.1.110:/work/root /mnt。然后save,设置完成后。

重启开发板就可以了。