host$代表在主机(ubuntu14.04)下操作
target$代表在开发板下操作
[ username ]表示你的用户名,例如root
一,busybox源码下载
二,解压编译
以busybox-1.20.2.tar.bz2为例,虚拟机ubuntu14.04
64位
1.修改/opt及其子目录,文件的用户和组
host$ cd
/opt
host$ sudo chown
[username] /opt -R
host$
sudo chgrp [username] /opt -R
2.copy
busybox-1.20.2.tar.bz2到ubuntu的/opt下并解压
host$ cp
xxx/busybox-1.20.2.tar.bz2
/opt
host$ tar -xvf
busybox-1.20.2.tar.bz2
3.配置选项
host$cd
busybox-1.20.2
host$make
menuconfig
在弹出的窗口中,跳到如下位置
Busybox
Settings
--->
Build Options
--->
[ ] Build BusyBox as a static binary (no shared libs)
(是否编译成静态库,在这里我没选,使用动态库)
根据需要选择静态还是动态库
其他的暂时先不管,保存退出
4.修改Makefile
host$vi
Makefile
修改ARCH
?=
CROSS_COMPILE
?=
为ARCH
?=arm
CROSS_COMPILE
?=arm-linux-(如果交叉编译器是arm-linux-gcc)
退出保存
5.编译
make;make install
6.检查生成的文件
默认安装目录为当前目录的_install目录
host$cd _install
查看busybox属性
host$file
/bin/busybox
bin/busybox: setuid
ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV),
statically linked, for GNU/Linux 2.6.31, stripped
红色字体部分必须是ARM
三,制作根文件系统
1.创建相应的目录
host$mkdir
dev lib
etc/init.d proc
sys home
mnt var tmp
root -p
2.添加系统启动配置文件
host$vim
etc/inittab
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
(注意/bin/sh前添加-)
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a –r
保存退出
host$vim
etc/fstab
proc /proc
proc
defaults 0
0
tmpfs /tmp
tmpfs
defaults 0
0
sysfs /sys
sysfs
defaults
0 0
tmpfs /dev
tmpfs
defaults
0 0
说明:sysfs,procfs,tmpfs都是虚拟文件系统,文件系统相关的信息存在内存中。
保存退出
host$vim
etc/init.d/rcS
/bin/mount
-a
mkdir /dev/pts
mount -t devpts devpts /dev/pts
echo /sbin/mdev >/proc/sys/kernel/hotplug
mdev –s
保存退出
修改rcS文件权限
host$chmod
777 etc/init.d/rcS
3.添加busybox运行时所需的动态库
如果在
“解压编译”“配置选项部分”选择的是静态编译,则这步不需要
查看所需动态库
host$
arm-linux-readelf -a bin/busybox | grep
"Shared"
根据信息,把相应的动态库copy到_install目录的lib下
动态库位置:[cross-compiler dir]/xxx/lib
4.修改权限
host$sudo chown root
* -R
host$sudo chgrp root
* -R
host$sudo chmod u+s
bin/busybox(注意:用户和组修改为root后,再修改这个权限;否则,有些命令可能无法运行;例如,busybox的用户和组是hello,执行sudo
chmod u+s bin/busybox,把文件系统烧写到开发板,发现mount命令无法使用,提示you must be
root。具体请查看s权限说明)
四,烧写文件系统
_install里就是简单的文件系统,烧写到开发板,进行验证即可