嵌入式根文件系统框架: busybox应用

使用busybox需要确保busybox的运行,以及掌握常用的工具命令。


一、补全目录与文件

将busybox编译得到的_install下的目录补全需要的目录:

mkdir /proc /lib /etc /dev /usr /var

busybox简单容器 busybox 使用_配置文件


动态库依赖: readelf -d busybox Igrep NEEDED //在busybox目录下运行

busybox简单容器 busybox 使用_busybox简单容器_02


ld-uClibc.so.0  libc.so.61ibm.so.6

ld-uClibc.so.0 ---->实现动态库的链接

1,交叉编译工具链库下的找依赖的动态库

find . -name libm.so.0

find . -name libc.so.0

find . -name ld-uClibc.so.0

busybox简单容器 busybox 使用_busybox简单容器_03

c库的选择: glibc, 还是uclibc ---->取决于你的交叉编译器glibc --->更全面完善的功能
uclibc --->更小的体积

 

将依赖的动态库libm.so.0 libc.so.0 ld-uClibc.so.0拷贝到lib/目录下

busybox简单容器 busybox 使用_bc_04

2,模仿本地的设备dev目录等制作设备节点

ls -lh /dev/console   //查看本地console

mknod console c 5 1  //制作busybox文件系统console节点

busybox简单容器 busybox 使用_busybox简单容器_05

ls -lh /dev/tty[1-3]   //查看本地tty

mknod tty1 c 4 1   //制作busybox文件系统的tty节点

mknod tty2 c 4 2

mknod tty3 c 4 3

busybox简单容器 busybox 使用_busybox简单容器_06

 

3,etc配置文件目录制作

将busybox的examples/bootfloppy/etc/*目录下的内容拷贝过来

busybox简单容器 busybox 使用_busybox简单容器_07

4,嵌入式常用的工具命令

设备驱动管理:

fdiskfsck
hwclock
mkdosfs
insmod  rmmod  lsmod
mknod
modprobe
lsusbmdev
mount
umount
文本编辑处理: I
mkdirmkfifo
mv
cp
touch

rmunlink
awk
cat
cut
findvi
sed
wCtar
grep
head
tail
less
more
xargs
od stat
网络信息配置:
udhcpc

udhcpd

route

netstat

 ping
ifconfig
系统信息管理:
chmod   clear   date
dd
df
echo
free
ipcrmipcs
ls
ps
pwd
top
uptime
kill
killall reboot sleepsysctl
usleep
总结:

编译完成后的安装步骤是进行busybox根文件系统应用高效开始的第一步熟悉并掌握常用的工具命令是进行busybox根文件系统应用开发的第二步

确保busybox的正确运行需要额外的库支持,这是进行busybox应用的前提条件

 

应用环境开发的三步准备工作:动态库lib,配置文件etc,启动脚本init.d

busybox简单容器 busybox 使用_bc_08

 

1,文件系统里lib/下的库对应交叉编译工具链目录下的库

文件系统里lib/下的库

busybox简单容器 busybox 使用_bc_09

对应交叉编译工具链/opt/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/uclibc/lib目录下的库

busybox简单容器 busybox 使用_文件系统_10

查看该目录的大小du –sh .

        

busybox简单容器 busybox 使用_配置文件_11

由于lib库比较大,我吗拷贝必要的库到lib/目录下即可,以下是几个必要的常用的动态库;

 

libpthread.so.0  //线程库

libthread_db-0.9.33.2.so  //相关数据库

libresolv.so.0   //网络库

librt.so.0   //实时库

 

 

2,完善配置文件目录

基本的etc目录内容如下

busybox简单容器 busybox 使用_busybox简单容器_12

fstab  //自动挂载文件系统

inittab  //

profile  //环境变量配置文件,配置一些Qt等软件路径

配置常用的环境变量,如下

busybox简单容器 busybox 使用_busybox简单容器_13

 

添加新的配置文件,如下;

resolv.conf   //网络DNS配置文件

busybox简单容器 busybox 使用_配置文件_14

配置文件;

rcS   //init.d下的启动脚本,仅仅一条挂载命令

busybox简单容器 busybox 使用_配置文件_15

可以在rcS 里添加相应语句,以完善rcS启动脚本。

如下添加简单启动命令;

for script in /etc/init.d/s[0-9][0-9]*

do

         if [ -x $script ];then

                   /bin/sh -c $script

         fi

done

busybox简单容器 busybox 使用_busybox简单容器_16

添加网络配置文件S80network,内容如下;

touch S80network

busybox简单容器 busybox 使用_文件系统_17

chmod a+x S80network

 

busybox简单容器 busybox 使用_配置文件_18

到此根文件系统的基本制作就完成了。如若有其他开发需求再此基础上添加。

 

 

 

 

 

 

 

 

 

 

常见的嵌入式文件系统

busybox简单容器 busybox 使用_bc_19

可以进入linux内核目录下,通过make ARCH=arm/mips menuconfig查看有哪些文件系统,以及配置相应的文件系统,配置完后编译内核即可内置到内核里。

busybox简单容器 busybox 使用_bc_20

busybox简单容器 busybox 使用_bc_21