• 迅为iMX6ULL开发板移植 ssh 服务


     

    硬件平台: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 上使用的可执行文件

     

     

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

    迅为:http://topeetboard.com

  • 相关阅读:
    linux基础学习-14.3-第四关考试题
    linux基础学习-14.2-命令补充(4)
    linux基础学习-14.1-定时任务练习题
    引入jason依赖
    模糊查询sql语句
    多行删除操作
    分页助手依赖引入
    在web.xml文件中读取spring-security.xml配置文件
    spring-security框架引入依赖
    安全框架配置文件(spring-security.xml)
  • 原文地址:https://www.cnblogs.com/topeet/p/13840065.html
Copyright © 2020-2023  润新知