armUbuntu | 开发板 OpenSSH 移植与使用

有时候我们需要远程登录到开发板上对系统进行一些操作,这个时候就要使用到 SSH 服务。 SSH 是较可靠、专为远程登录会话和其他网络服务提供安全性的协议,OpenSSH 是 SSH 协议的免费开源版本,本章实现如何在开发板中移植 OpenSSH,实现 SSH 服务。 OpenSSH 简介 SSH 全称为 Secure Shell(安全外壳协议,简称 SSH),是一种加密的网络传输协议,用于在不安全的网络中为网络服务提供安全的传输环境。SSH 功能很强大,但是最常用的还是用于远程登录。OpenSSH 是 SSH 协议的具体实现,OpenSSH 是一款开源、免费的 SSH 软件,提供了服务器端后台程序和客户端工具,OpenSSH 提供了很多程序,常用有以下几个: ssh ssh 软件用于替换 rlogin 与 Telnet。 scp 和 sftp 将文件复制到其他主机上,用于替换 rcp。 sshd SSH 服务器。 OpenSSH 移植 OpenSSH 源码获取 这里我们一共需要移植三个软件包:zlib、openssl 和 openssh。依次到这三个软件的官网下载对应的源码,官网如下: zlib 官网:http://www.zlib.net/。 openssl 官网:https://www.openssl.org/source/。 openssh 官网:http://www.openssh.com/。 这三个软件的源码我们已经放到了开发板光盘中,路径为:1、例程源码->7、第三方库源码->zlib-1.2.11.tar.gz、 openssl-1.1.1d.tar.gz 和 penssh-8.2p1.tar.gz。接下来就依次编译、移植这三个软件。 移植 zlib 库 参考 armUbuntu | 开发板 移植 zlib 库 - Jocker博客

armUbuntu | 开发板 移植 openssl 库

将 openssl 源码压缩包拷贝到 Ubuntu 中前面创建的 tool 目录下,然后使用如下命令将其解压: tar -vxzf openssl-1.1.1d.tar.gz 解压完成以后就会生成一个名为 openssl-1.1.1d 的目录,然后在新建一个名为“debug”的文件夹,用于存放 openssl 的编译结果。进入到解压出来的 openssl-1.1.1d 目录中,然后执行如下命令进行配置: cd openssl-1.1.1d/ mkdir debug export CROSS_COMPILE=arm-linux-gnueabihf- 配置编译路径: ./Configure linux-armv4 shared no-asm --prefix=/home/alientek/tmp/PortingBasedOnSourceCode/openssl-1.1.1d/debug 此处需要用绝对路径,请注意 编译: make 安装: make install 中的 lib 目录是我们需要的,将 lib 目录下的 libcrypto 和 libssl 库拷贝到开发板根文件系统中的/usr/lib 目录下,命令如下: sudo cp ./debug/lib/libcrypto.so* /home/alientek/tmp/nfs/ubuntu_rootfs/lib/ -af sudo cp ./debug/lib/libssl.so* /home/alientek/tmp/nfs/ubuntu_rootfs/lib/ -af

armUbuntu | 开发板 移植 zlib 库

zlib 源码下载地址为:http://zlib.net/ tar -vxzf zlib-1.2.11.tar.gz //解压 解压完成以后得到一个名为“zlib-1.2.11”的 zlib 源码文件。另外新建一个名为“zlib”的文件夹来保存 zlib 的编译结果。进入 zlib 源码目录,然后配置并编译,命令如下: 配置环境变量: cd zlib-1.2.11/ export CC=arm-linux-gnueabihf-gcc export LD=arm-linux-gnueabihf-ld export AD=arm-linux-gnueabihf-as 配置编译路径: ./configure --prefix=./debug/ 编译: make 安装: make install 将./debug/目录下的 zlib 库文件拷贝到开发板根文件系统的/lib 目录下,命令为: sudo cp ./debug/lib/* /home/alientek/tmp/nfs/ubuntu_rootfs/lib/ -rfa -rfa的参数是cp的参数 -a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容。其作用等于 dpR 参数组合。 -d:复制时保留链接。这里所说的链接相当于 Windows 系统中的快捷方式。 -r 或 –recursive:用于复制目录及其所有的子目录和文件,如果要复制目录,需要使用该选项。 -i 或 –interactive:在复制前提示确认,如果目标文件已存在,则会询问是否覆盖,回答 y 时目标文件将被覆盖。。 -u 或 –update:仅复制源文件中更新时间较新的文件。 -v 或 –verbose:显示详细的复制过程。 -p 或 –preserve:保留源文件的权限、所有者和时间戳信息。 -f 或 –force:强制复制,即使目标文件已存在也会覆盖,而且不给出提示。 -l:不复制文件,只是生成链接文件。

交叉编译--build、--host、--target、--prefix

编译例子 ./configure --build=编译平台 --host=运行平台 --target=目标平台 [各种编译参数] build:表示目前我们正在运行的平台名称是什么,如:当前我们是在电脑上编译该系统,那么我们的 –build 就可能是 x86,如果在其他种类机器上编译就是那个机器所对应平台名称。 host:表示我们把这个编译好的 gcc 在什么样的平台下运行,在交叉编译过程中这个需要我们来指定。host 也可以不指定,那么 host 将自动使用 build 来定义。 注:–build 和 –host 不同的时候就被配置文件认定为交叉编译方式。 target:该参数的目的是让配置程序知道这个软件被编译后使用来处理什么平台上的文件的。 交叉编译 交叉编译参数配置 –build、–host、–prefix,这三个参数是交叉编译最常用的参数 注意:当 –build 和 –host 参数不相等时才为交叉编译。–tartget:表示需要处理的目标平台名称,无指定使用host相同名称,大多数软件交叉编译此参数无用处。–prefix:用于指定库install的路径 –build、–host 参数设置 –build (编译平台) 通过查看编译平台的编译软件版本信息获取 gcc -v 查看输出的Target –host (运行平台) 通过查看交叉编译编译工具链版本信息获取 arm-linux-gnueabihf-gcc -v 如果使用arm-linux-gnueabihf-gcc -v指令无法获取版本信息,其实工具链的前缀arm-linux-gnueabihf就是 –host的参数 交叉编译例子 ./configure --build=i686-linux-gnu --host=arm-linux-gnueabihf --prefix=/usr/local/arm-xxx

armUbuntu | armv7l ubuntu | 安装完python之后,没有pip

检查环境信息: root@xx:/# python -V Python 3.5.2 root@xx:/# ls /usr/local/lib/python3.5/dist-packages/ root@xx:/# cd /usr/local/lib/python3.5/dist-packages/ root@xx:/usr/local/lib/python3.5/dist-packages# ls root@xx:/usr/local/lib/python3.5/dist-packages# whereis python python: /usr/bin/python /usr/bin/python3.5m /usr/bin/python3.5 /usr/lib/python3.5 /usr/lib/python2.7 /etc/python3.5 /usr/local/lib/python3.5 root@xx:/usr/local/lib/python3.5/dist-packages# uname -a Linux xx 4.1.15 #1 SMP PREEMPT Fri Dec 18 13:01:09 CST 2020 armv7l armv7l armv7l GNU/Linux /usr/bin/python 软连 的是 python3.5 目标: 给python3.5装上pip 检查 cd /usr/local/lib/python3.5/dist-packages/ 文件夹下发现没有pip文件夹,也就是没装python3.5的pip 开始安装: 由于我是nfs在线挂载的根文件系统,不知为何无法使用dns服务,所以在hosts中修改了需要用到域名的相关信息 vim /etc/hosts 127.0.0.1 localhost 127.0.0.1 LJW_RY_V1.0.0 # 185.125.190.39 ports.ubuntu.com # 101.6.15.130 mirrors.tuna.tsinghua.edu.cn # 146.75.112.175 bootstrap.

minicom 指令介绍

打开minicom配置界面 sudo minicom -s 然后用方向键向下移动到“Serial port setup”,回车进入串口、波特率的配置 按键盘“A”把串口的映射文件名输入。 按键盘“E”可以修改波特率 按键盘“F”把硬件流关闭,否则minicom可能无法接收键盘输入。 配置好后,回车生效,回到主配置页面,方向键向下选到“Save setup as dfl”可以把刚才的设置保存为默认,以后只要参数不变可以直接执行“sudo minicom”打开串口,不用每次都进配置页面。 方向键向下选中“Exit”回车,退出配置页面,打开串口,看到如下: 看到光标跳动说明正常,现在就可以输入数据或AT指令了。 先输入字符“A”,然后再输入字符“T”,再回车,看到模块回复“OK”,说明AT命令执行成功了,只是因为我们没开字符回显,所以看不到输入了什么东西。 字符回显有两种方式,一种是模块的字符回显,一种是minicom的字符回显。 (不推荐)执行AT命令“ATE1”打开模块的字符回显功能。打开后输入一个字符就能看到模块回显一个字符了。 (推荐)minicom提供的字符回显功能。 在minicom中按下"CTRL+A"键,然后再按"Z"键,再按下“E”键就可以打开了 退出minicom:crtl+A->x 在minicom中打开配置页面:crtl+A->o 在minicom中输入回车和换行: 键入ctrl+M,即可输入0D 回车符(\r) 键入ctrl+J,即可输入0A 换行符(\n) 可以使用如下指令快速打开串口: minicom -D /dev/ttyUSB1 CRTL + A; z 查看帮助页面 ctrl + a; z # 帮助界面 ctrl + a; o # 配置 ctrl + a; c # 清屏幕 ctrl + a; x # 推出