向嵌入式linux开发板移植openSSH
晚上没事干,想着能不能把高大上的openSSH移植到我现在开发的嵌入式linux开发板上,前不久刚弄出来dropbear,但遇到一些小问题,一会说,所以把openSSH搞上去还是可以的。开发板端为服务器端,由宿主机客户端访问。
2016-8-16
背景
- 开发板:freescale i.mx6q
- 宿主机操作系统:ubuntu 14.04
- 开发板操作系统:linux 3.0.35
基本情况
使用dropbear后,ssh算是在板子上成功跑起来了,参见我另一篇日记,然而,在使用的过程中,需要对root用户重新设置一次密码后,才可以正常操作,然而,由于我对板子本身编译进去的ftp不了解,重新设置root密码后,就无法使用ftp传输文件了。了解到dropbear自带了scp协议一个简单文件传输工具,于是就开始搞,后来没搞出来。然后去研究如何把sftp加入到dropbear中,过程需要编译openSSH并提取sftp。得了,就直接搞openSSH吧。
经后来测试,编译后的openSSH可执行文件约为16M,确实足够大了,还好板子上的内存容量还足够。开启一个shell后的运行内存基本忽略,还是可以用的,最关键openSSH里还带有sftp,scp等工具,简直方便。
步骤
编译
1.需要用到的源码包有:openssh,openssl,zlib,请按下列地址下载:
openssh-7.3: http://ftp.openbsd.org/pub/OpenBSD/OpenSSH/openssh-7.3.tar.gz
openssl-1.0.1t: https://www.openssl.org/source/openssl-1.0.1t.tar.gz
zlib-1.2.8: http://zlib.net/zlib-1.2.8.tar.gz
请登录网站选择合适的版本下载。
2.首先编译zlib,这里不再重复写,参考我之前的日记(向嵌入式linux开发板移植dropbear)
3.编译openssl:openssl根目录下:
~ # mkdir /usr/local/openssl
~ # ./Configure --prefix=/usr/local/openssl os/compiler:arm-fsl-linux-gnueabi-gcc
~ # make
~ # make install
4.编译openssh:openssh源码根目录下:
~ # mkdir /usr/local/openssh
~ # ./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/usr/local/zlib --with-ssl-dir=/usr/local/openssl --disable-etc-default-login --disable-strip CC=arm-fsl-linux-gnueabi-gcc AR=arm-fsl-linux-gnueabi-ar
这里创建/usr/local/openssh
并没有作用,openssh是要运行在开发机的,在宿主机中make install
没有意义,这里是习惯性做法。另外,网上的技术帖子说将本地的路径作为打包路径一并打包,也是一种做法,但我认为略显麻烦或混乱,我最终是用脚本按部署所有的openssh工具的。
第二句命令配置configure,其中--disable-etc-default-login
是disable using PATH from /etc/default/login no
; --disable-strip
是disable calling strip(1) on install
,不大清楚有啥用,先记着了。第一次编译时没有添加这个参数,但最终还是设置成功了。
然后接着,在openssh源码路径下:
~ # make
这里不需要make install
,上边说过。据我印象,这次make会产生一些问题,都是与设置交叉编译链有关系的,如果遇到问题,就