为基于busybox根文件系统的ARM嵌入式Linux交叉编译dropbear使能SSH
原创作品,允许转载,转载时请务必以超链接形式标明文章、作者信息和本声明,否则将追究法律责任。
最近使用busybox为基于ARM的板卡定制了一个极简单的根文件系统,由于busybox仅支持telnet而不支持ssh,本文将详细描述如何交叉编译dropbear并将其移植到目标板卡上使能dropbear。
目标环境:
CPU:ARM
内核版本:4.X
工具下载:
第一步:编译zlib-1.2.8
下载zlib-1.2.8.tar.gz,笔者将其放在/home/liangwode/test目录下。
mkdir -pv build/zlib build/dropbear tar xvzf zlib-1.2.8.tar.gz cd zlib-1.2.8
进入解压缩后的zlib目录,配置zlib
./configure --prefix=/home/liangwode/test/build/zlib
修改生成的Makefile
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
编译并安装
make && make install
在/home/liangwode/test/build/zlib下就生成了zlib库的相关文件
第二步:编译dropbear
回到/home/liangwode/test,解压缩dropbear
bzip2 -d dropbear-2016.74.tar.bz2 tar xvf dropbear-2016.74.tar
进入dropbear目录,配置dropbear
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
编译并安装
make make scp make install
拷贝scp到安装目录
cp scp /home/liangwode/test/build/dropbear/bin
第三步:移植到目标板
先挂载目标板的根文件系统,笔者使用TF卡,分了两个区,一个是boot,一个是sysroot
mount /dev/sdc2 /mnt/sysroot
拷贝库及可执行文件到目标系统
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卡,并启动目标板
umount /mnt/sysroot
创建dropbear配置目录,并生成密钥
mkdir /etc/dropbear cd /etc/dropbear dropbearkey -t rsa -f dropbear_rsa_host_key dropbearkey -t dss -f dropbear_dss_host_key
添加系统启动服务
vi /etc/init.d/rcS 添加 /usr/sbin/dropbear
重启目标板,用PC通过ssh远程登录即可(用已有的账号密码)。