嵌入式根文件系统框架: busybox应用
使用busybox需要确保busybox的运行,以及掌握常用的工具命令。
一、补全目录与文件
将busybox编译得到的_install下的目录补全需要的目录:
mkdir /proc /lib /etc /dev /usr /var
动态库依赖: readelf -d busybox Igrep NEEDED //在busybox目录下运行
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
c库的选择: glibc, 还是uclibc ---->取决于你的交叉编译器glibc --->更全面完善的功能
uclibc --->更小的体积
将依赖的动态库libm.so.0 libc.so.0 ld-uClibc.so.0拷贝到lib/目录下
2,模仿本地的设备dev目录等制作设备节点
ls -lh /dev/console //查看本地console
mknod console c 5 1 //制作busybox文件系统console节点
ls -lh /dev/tty[1-3] //查看本地tty
mknod tty1 c 4 1 //制作busybox文件系统的tty节点
mknod tty2 c 4 2
mknod tty3 c 4 3
3,etc配置文件目录制作
将busybox的examples/bootfloppy/etc/*目录下的内容拷贝过来
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
1,文件系统里lib/下的库对应交叉编译工具链目录下的库
文件系统里lib/下的库
对应交叉编译工具链/opt/mips-gcc472-glibc216-32bit/mips-linux-gnu/libc/uclibc/lib目录下的库
查看该目录的大小du –sh .
由于lib库比较大,我吗拷贝必要的库到lib/目录下即可,以下是几个必要的常用的动态库;
libpthread.so.0 //线程库
libthread_db-0.9.33.2.so //相关数据库
libresolv.so.0 //网络库
librt.so.0 //实时库
2,完善配置文件目录
基本的etc目录内容如下
fstab //自动挂载文件系统
inittab //
profile //环境变量配置文件,配置一些Qt等软件路径
配置常用的环境变量,如下
添加新的配置文件,如下;
resolv.conf //网络DNS配置文件
配置文件;
rcS //init.d下的启动脚本,仅仅一条挂载命令
可以在rcS 里添加相应语句,以完善rcS启动脚本。
如下添加简单启动命令;
for script in /etc/init.d/s[0-9][0-9]*
do
if [ -x $script ];then
/bin/sh -c $script
fi
done
添加网络配置文件S80network,内容如下;
touch S80network
chmod a+x S80network
到此根文件系统的基本制作就完成了。如若有其他开发需求再此基础上添加。
常见的嵌入式文件系统
可以进入linux内核目录下,通过make ARCH=arm/mips menuconfig查看有哪些文件系统,以及配置相应的文件系统,配置完后编译内核即可内置到内核里。