修改安装目录路径,所以默认是在busybox目录下生成一个_install目录。如果想更改路径,在配置菜单的BusyBox Settings->Installation Options->BusyBox installation prefix设置安装路径。)
编译错误:编译中如果出现一个rlimit_fsize未定义的错误,解决的方法是在include/libbb.h文件中加入#include
二、编译Dropbear
Dropbear是一个为我们提供SSH服务的工具。这里使用0.53.1版本
1、下载源码
>wget http://matt.ucc.asn.au/dropbear/release/dropbear-0.53.1.tar.gz
>tar xfvz dropbear-0.53.1.tar.gz
>cd dropbear-0.53.1
2、配置
>./configure --prefix=/home/busybox/_install --host=arm-none-linux-gnueabi --disable-zlib
CC=arm-none-linux-gnueabi-gcc LDFLAGS=”-Wl,--gc-sections” CFLAGS=”-ffunction- sections-fdata-sections --Os”
其中/home/busybox/_install需要根据实际busybox编译后的存放路径来决定。
3、编译
>make PROGRAMS="dropbear dbclient dropbearkey dropbearconvert scp" MULTI=1 strip
编译错误:双引号中的东西不能少,陆佳华那本书上这一句少了dropbearconvert,导致编译时出现dropbearconvert没找到的错误。
4、make install,并为根文件系统的scp创建一个软连接。
>sudo make install
>cd /home/busybox/_install/usr/bin/
>ln –s ../../sbin/dropbear ./scp
三、工具链动态与应用的设置
1、进入_install目录并建立lib目录
>cd /home/busybox/_install
>mkdir lib
2、复制交叉编译器提供的库文件,为你实际交叉编译器安装的路径
>cp/arm-none-linux-gnueabi/libc/lib/* lib –r
3、剥离库中的调试标志
>arm-none-linux-gnueabi-strip lib/*
4、复制交叉编译器提供的工具集
>cp/arm-none-linux-gnueabi/libc/sbin/* sbin/ -r
>cp/arm-none-linux-gnueabi/libc/usr/bin/* usr/bin/ -r
四、目录的创建与配置
这一步是要创建文件系统下其余的目录,以及在启动系统时所需的配置文件,所有操作都在_install目录下
1、创建目录
>mkdir dev etc etc/dropbear etc/init.d mnt opot proc root sys tmp var var/log var/www
2、创建配置文件etc/fstab,内容为:
LABEL=// tmpfsdefaults 00
none/dev/ptsdevptsgid=5,mode=62000
none/procproc defaults00
none/syssysfsdefaults00
none/tmptmpfsdefaults00
2、创建配置文件etc/inittab,内容为:
::sysinit:/etc/init.d/rcS
#/bin/ash
#Start an askfirst shell on the serial ports
ttyPS0::respawn:-/bin/ash
#What to do when restarting the init process
::restart:/sbin/init
#What to do before rebooting
::shutdown:/bin/umount -a -r
3、创建配置文件etc/passwd,内容为:
:root:$1 $qC.CEbjC $SVJyqm.IG.gkElhaeM.FD0:0:0:root:/root:/bin/sh
4、创建配置文件etc/init.d/rcS,内容为:
#!/bin/sh
echo “Starting rcS …”
echo “++ Mounting filesystem”
mount –t proc none /proc
mount –t sysfs none /sys
mount –t tmpfs none /tmp
echo “++ Setting up mdev”
echo /sbin/mdev > /proc/sys/kernel/hotplug
mdev –s
mkdir –p /dev/pts
mkdir –p /dev/i2c
mount –t devpts devpts /dev/pts
echo “++ Starting telnet daemon”
telnetd –l /bin/sh
echo “++ Starting http daemon”
httpd –h /var/www
echo “++ Starting ftp daemon”
tcpsvd 0:21 ftpd ftpd –w /&
echo “++ Starting dropbear (ssh) daemon”
dropbear
5、为rcS赋予root的执行权限
>chmod 755 etc/init.d/rcS
>sudo chown root:root etc/init.d/rcS
五、制作ramdisk镜像文件
1、创建镜像文件
>cd ~
>dd if=/dev/zero of=ramdisk.img bs=1024 count=8192
>mke2fs –F ramdisk.img –L “ramdisk” –b 1024 –m 0
>tune2fs ramdisk.img –i 0
>chmod 777 ramdisk.img
2、复制_install内容到这个镜像中
>mkdir ramdisk
>sudo mount –o loop ramdisk.img ramdisk/
>sudo cp –R /home/busybox/_install/* ramdisk
>sudo umount ramdisk/
3、对镜像进行压缩,生成ramdisk.img.gz
>gzip ramdisk.img
六、生成uramdisk.image.gz
使用mkimage命令为ramdisk.img.gz添加一些头部信息,生成uramdisk.image.gz,否则uboot将提示ramdisk格式错误。
1、将uboot的tools目录下的mkimage拷贝到交叉编译器的bin目录中(相当于添加到环境变量中)
2、使用如下命令生成uramdisk.image.gz
>mkimage -n 'uboot ext2 ramdisk' -A arm -O linux -T ramdisk -C gzip -d ramdisk.img.gz uramdisk.image.gz