迅为iMX6ULL开发板移植 ssh 服务

蓝咒 提交于 2021-02-13 07:57:19

硬件平台:i.MX6UULL开发板

 

转自:迅为i.MX6UULL开发板使用手册第七十五章

 

整个移植过程是比较简单的,而且我们没有做任何协议方面的了解,只是“配置”+“编译”就完成了整个工作,现在大家应该对移植开源软件有了基本的了解。本章节使用的资料已经放到了开发板网盘资料中,路径为:11_Linux 系统开发进阶\75_章节使用资料

入门视频教程中,给 Windows 系统安装了 ssh 客户端,给 Ubuntu 安装了 ssh 服务器,这样就可以通过 ssh 在 Windows 和虚拟机 Ubuntu 之间传输文件。其实在开发板上也是可以移植和安装 ssh 服务器,这样就可以通过网络,在 Windows 和开发板之间传输文件。

我们要完成的目标是能够通过 ssh 在开发板在 Windows 和开发板之间传输文件,当然也是可以使用ssh 控制台。

这个实验比前面的“串口文件传输工具”教程在工程(实用性)上是更加有用的,假如在实际的产品中,运行的是根文件系统,没有界面,如果数据需要在开发板和 Windows 传输数据,对于普通用户来说,是一个很好的选择,操作起来比较简单,只需要登陆然后直接将文件拖来拖去即可。

这个实验的难度要比“串口文件传输工具”要大一点,ssh 服务器需要依赖其他的库文件,所以需要开发者先移植完成所有依赖的库文件,最后才能移植 ssh 服务器。

 

75.1 SSH 官网和下载地址

本小节的地址在作者没有代理的情况下,测试可用。

OpenssL 下载官网地址,如下所示。就是罗永浩捐过 100 万的那个开源组织。

https://www.openssl.org/source/

OpenssL 的 github 下载地址,如下所示。

https://github.com/openssl/openssl

ssh 开源组织官网地址,如下所示。

http://www.openssh.com/

HXng KXng(o 用 X 替代,以防文档上传之后被屏蔽)的 ssh 下载地址,测试可以用,

如下所示。

https://openbsd.hk/pub/OpenBSD/OpenSSH/portable/

zlib 官网地址,如下所示。

http://www.zlib.net/

75.2 详细移植过程

源码使用迅为下载好的,编译器使用“arm-2009q3”。

作者是在 “/home/topeet/project/ssh-arm/”目录下,放三个需要移植的文件,移植文件的安装目录是“/home/topeet/project/ssh-arm/”目录下的“install”文件夹。install 下新建两个文件夹 “openssl-0.9.8h”和“zlib-1.2.3”,后面编译之后需要安装到这个目录下。

 

 

75.2.1 移植 Zlib

Ø 从迅为提供的资料中拷贝“zlib-1.2.3.tar.gz”到 Ubuntu 系统,使用命令“tar -vxf

zlib-1.2.3.tar.gz”解压,得到“zlib-1.2.3”文件夹,使用命令“cd zlib-1.2.3”进入“zlib-1.2.3” 文件夹,如图 75.2.1.1

 

 

Ø 接着使用命令“./configure --prefix=/home/topeet/project/ssh-arm/install/zlib-1.2.3”,设置配置文件,如图 75.2.1.1 所示。

 

 

Ø 使用命令“vim Makefile”修改编译参数,将所有 gcc 修改为“arm-none-linux-gnueabi-gcc”,

如图 75.2.1.3 所示。

 

 

Ø 接着使用编译命令“make”,如图 75.2.1.4 所示。

 

 

 

Ø 执行 make 无报错后,接着使用安装命令“make install”,如图 75.2.1.5 所示。

 

 

Ø 现在已经安装好了 zlib 库,在后面编译 SSH 的时候,需要用到 zlib 库,作者这里的路径是 “/home/topeet/project/ssh-arm/install”,后面配置的时候需要对应生成的库文件,如图 75.2.1.6 所示。

 

Ø

这部分移植其实就是修改了编译器,修改编译器之后编译出的文件和不修改编译出来的文件是不一样的。在移植过程中,可能因为没有将编译器配置为目标系统的编译器,那么编译出来的一定运行不了。

这里可以通过 linux 的 strings 命令查看非文本文件中的可读内容(libz.a),通常可以和 grep 命令搭配使用。

如下图所示,使用命令“strings -a /home/topeet/project/ssh-arm/install/zlib-

1.2.3/lib/libz.a”可以查看到所有可读信息,可读信息比较多,可以保存为文本再查看,使用

命令“strings -a /home/topeet/project/ssh-arm/install/zlib-1.2.3/lib/libz.a > log.my”重定位一下输出即可。

 

 

这里需要用到的命令是“strings -a /home/topeet/project/ssh-arm/install/zlib-

1.2.3/lib/libz.a | grep “GCC””,如图 75.2.1.8 所示。

 

 

如上图所示,可以看到编译器版本是“2009q3-67-4.4.1”的,说明这个库是使用我们设置的编译编译的,编译出的库文件当然也是 arm 上使用的。

75.2.2 移植 Openssl

Ø 接着来移植 openssl 库,拷贝“openssl-0.9.8h.tar.gz”到 Ubuntu 系统,使用命令

“tar -vxf openssl-0.9.8h.tar.gz”解压,得到“openssl-0.9.8h”文件夹,使用命令“cd openssl-0.9.8h” 进入“openssl-0.9.8h”文件夹,如图 75.2.2.1 所示。

 

 

Ø 接着使用命令“./Configure linux-elf-arm -DB_ENDIAN linux:'arm-none-linux-

gnueabi-gcc' --prefix=/home/topeet/project/ssh-arm/install/openssl-0.9.8h”配置编译文件, 如图 75.2.2.2 所示。

 

 

 

配置完成,如图 75.2.2.3 所示。

 

 

Ø 使用编译命令“make”编译完成,如图 75.2.2.4 所示。

 

 

Ø 最后使用安装命令“make install”,编译完成,如图 75.2.2.5 所示。

 

 

 

如图 75.2.2.6 所示,可以看到生成了后面移植 ssh 需要的对应的库文件。

 

 

和前面 libz.a 小节类似,可以使用命令查看一下编译出来的文件到底有没有配置正确。

 

 

75.2.3 移植 SSH

Ø 接着来移植 openssh,拷贝“openssh-4.6p1.tar.gz”到 Ubuntu 系统,使用命令“tar -vxf

openssh-4.6p1.tar.gz”解压,得到“openssh-4.6p1”文件夹,使用命令“cd openssh-4.6p1/”进入“openssh-4.6p1”文件夹,如图 75.2.3.1 所示。

 

 

Ø这里看一下 ssh 的 configure 的帮助文件,如图 75.2.3.2 所示,使用“ ./configure --help”。

 

 

ssh 的 configure 文件中需要配置的参数

--host 表示编译出来要运行的平台

--with-libs 表示需要的额外的库文件;

--with-zlib 表示库文件 zlib 的 instal 路径 l;

--with-ssl-dir 表示 OpenSSl 文件的 install 路径;

--disable-etc-default-login 表示不使用当前环境变量的编译器,所以后面配置参数时,最后直接配置 CC 和 AR 这两个编译器;

CC 表示设置使用的编译器;

AR 表示设置使用的编译器的路径(蛮奇怪,配置文件中似乎没有这个参数,用户可以执

行验证下)。

Ø 接着使用配置命令,命令比较长,作者使用颜色给大家分段:

./configure --host=arm-none-linux --with-libs

--with-zlib=/home/topeet/project/ssh-arm/install/zlib-1.2.3

--with-ssl-dir=/home/topeet/project/ssh-arm/install/openssl-0.9.8h

--disable-etc-default-login

CC=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-gcc

AR=/usr/local/arm/arm-2009q3/bin/arm-none-linux-gnueabi-ar

配置编译文件,如图 75.2.3.3 所示。

 

 

配置完成,如图 75.2.3.4 所示

 

 

 

 

Ø 使用编译命令“make”,编译完成,如图 75.2.3.5 所示

 

 

 

Ø 编译完成,最后肯定是需要安装到开发板上的,如下图所示。最后在目录下

“/home/topeet/project/ssh-arm/openssh-4.6p1”有这几个二进制文件“scp 、sftp 、ssh、 sshd、 ssh-add、ssh-agent、ssh-keygen、ssh-keyscan”需要安装到开发板上。最终编译出来的二进制文件,可 以使用 file 命令查看文件属性,如图 75.2.3.6 所示,使用命令“file scp”,可以看到“scp”文件是 32 位 ARM 上使用的可执行文件

 

 

关注公众号“迅为电子” 持续更新行业干货!

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!