最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet而不支持ssh,本文将详细描述如何交叉编译dropbear并将其移植到目标板卡上使能dropbear。
目标环境:
CPU:ARM
内核版本:4.X
工具下载:
第一步:编译zlib-1.2.8
下载zlib-1.2.8.tar.gz,笔者将其放在/home/liangwode/test目录下。
1
2
3
|
mkdir
-pv build /zlib
build /dropbear
tar
xvzf zlib-1.2.8. tar .gz
cd
zlib-1.2.8
|
进入解压缩后的zlib目录,配置zlib
1
|
. /configure
--prefix= /home/liangwode/test/build/zlib
|
修改生成的Makefile
1
2
3
4
5
6
|
CC=arm-linux-gnueabi- gcc (根据所使用的交叉工具链修改)
AR=arm-linux-gnueabi-ar
RANLIB=arm-linux-gnueabi-ranlib
LDCONFIG=arm-linux-gnueabi-ldconfig
LDSHARED=$(CC) -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
CPP=$(CC) -E
|
编译并安装
1
|
make
&& make
install
|
在/home/liangwode/test/build/zlib下就生成了zlib库的相关文件
第二步:编译dropbear
回到/home/liangwode/test,解压缩dropbear
1
2
|
bzip2
-d dropbear-2016.74. tar .bz2
tar
xvf dropbear-2016.74. tar
|
进入dropbear目录,配置dropbear
1
2
|
cd
dropbear-2016.74
. /configure
--prefix= /home/liangwode/test/build/dropbear
--with-zlib= /home/liangwode/test/build/zlib
CC=arm-linux-gnueabi- gcc
--host=arm
|
编译并安装
1
2
3
|
make
make
scp
make
install
|
拷贝scp到安装目录
1
|
cp
scp
/home/liangwode/test/build/dropbear/bin
|
第三步:移植到目标板
先挂载目标板的根文件系统,笔者使用TF卡,分了两个区,一个是boot,一个是sysroot
1
|
mount
/dev/sdc2
/mnt/sysroot
|
拷贝库及可执行文件到目标系统
1
2
3
4
|
cp
-frP /home/liangwode/test/build/zlib/lib/ * /mnt/sysroot/usr/lib
cp
-fP /home/liangwode/test/build/dropbear/bin/ * /mnt/sysroot/usr/sbin
cp
-fP /home/liangwode/test/build/dropbear/sbin/ * /mnt/sysroot/usr/sbin
sync
|
卸载SD卡,并启动目标板
1
|
umount
/mnt/sysroot
|
创建dropbear配置目录,并生成密钥
1
2
3
4
|
mkdir
/etc/dropbear
cd
/etc/dropbear
dropbearkey -t rsa -f dropbear_rsa_host_key
dropbearkey -t dss -f dropbear_dss_host_key
|
添加系统启动服务
1
2
3
|
vi
/etc/init .d /rcS
添加
/usr/sbin/dropbear
|
重启目标板,用PC通过ssh远程登录即可(用已有的账号密码)。