嵌入式linux学习之arm开发板移植ssh

本文详细介绍了如何在Linux虚拟机下为ARM架构下载并编译zlib、openssl和openssh源码,包括设置交叉编译器、修改Makefile以及打包和移植到目标设备的过程。
摘要由CSDN通过智能技术生成

1.下载源码

(1)zlib 下载网址:http://www.zlib.net/fossils/ 教程中版本选择的是: zlib-1.2.11.tar.gz
(2)openssl下载网址:https://www.openssl.org/source/mirror.html 教程中版本选择的是: openssl-1.1.1-stable-SNAP-20210701.tar.gz
(3)openssh(前两者可以看做ssh的依赖)下载网址:https://fastly.cdn.openbsd.org/ 教程中版本选择的是: openssh-8.6p1.tar.gz

2.编译源码

0) 将上述压缩包均拷贝到Linux虚拟机下
(目录随意,例如我放在/home/tao/linux/tool/openssh/),解压 :tar -zxvf xxx.tar.gz 分别解压三个压缩包
1) 编译zlib源码

cd /home/tao/tools/openssh/zlib*
mkdir install_dir #创建安装目录
./configure --prefix=/home/tao/tools/openssh/zlib*/install #执行之后会生成Makefile
vim Makefile #修改Makfile 将其中gcc、g++都修改为交叉编译器的名称。

## 原来代码
#####  19: CC=gcc
##### 30: LDSHARED=gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
#####  31: CPP=gcc -E
##### 修改如下
#####  19: CC=arm-linux-gnueabihf-gcc#根据自己的交叉编译器更改
##### 30: LDSHARED=arm-linux-gnueabihf-gcc -shared -Wl,-soname,libz.so.1,--version-script,zlib.map
##### 31: CPP=arm-linux-gcc -E

make
make install

2) 编译openssl源码

cd /home/tao/tools/openssh/openssl*
mkdir install_dir
./Configure linux-generic32 no-asm shared no-async --prefix=/home/tao/tools/openssh/openssl-3.1.5/install
arm-linux-gnueabihf-cpp
vim Makefile

# CROSS_COMPILE=arm-linux-gnueabihf-     #交叉编译器的前缀,修改成这样

make
make install
完成后install_dir文件夹内容:
在这里插入图片描述

3) 编译openssh源码

cd /home/tao/tools/openssh/openssh*
./configure --host=arm-linux --with-libs --with-zlib=/home/tao/tools/zlib --with-ssl-dir=/home/tao/linux/openssh/openssl-3.1.5/install --disable-etc-default-login CC=arm-linux-gnueabihf-gcc AR=arm-linux-gnueabihf-ar
–without-openssl-header-check# 注意修改路径
make
#千万不要 make install 不然会包含一些配置信息

打包

创建文件夹/srm-ssh,里面创建文件夹sbin,bin,etc,libexec

# 分类生成的文件,复制
cp sshd ../arm-ssh/sbin
cp scp sftp ssh ssh-add ssh-agent ssh-keygen ssh-keyscan ../arm-ssh/bin
cp sshd_config ssh_config ../arm-ssh/etc
cp sftp-server  ssh-keysign ../arm-ssh/libexec
# 生成一些秘钥,前提是主机上已经有ssh服务
cd ../arm-ssh/etc
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N "" #此处ssh-keygen 并非此次编译生成的
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
#我在stm32mp1上运行sshd时报错找不到libcrypto.so.3和libcrypt.so.1,现在复制到文件夹中:
cp /usr/local/arm/gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf/arm-linux-gnueabihf/libc/lib/libcrypt.so.1 ../
cp ../../openssl/lib/libcrypto.so.3 ../
tar -zcvf arm-ssh.tar.gz arm-ssh/      #先打包
#拷贝到开发板(方式自选)或者使用scp
移植
cd arm-ssh
cp sbin/*  /usr/sbin
cp bin/*   /usr/local/bin 
cp etc/*   /usr/local/etc 
cp libexec/* /usr/local/libexec
cp lib* /usr/lib#那两个库必须
# 创建软连接
cd /bin
ln -s /usr/local/bin/scp 
ln -s /usr/local/bin/sftp 
ln -s /usr/local/bin/ssh 
ln -s /usr/local/bin/ssh-add 
ln -s /usr/local/bin/ssh-agent 
ln -s /usr/local/bin/ssh-keygen 
ln -s /usr/local/bin/ssh-keyscan
# 修改配置文件
vim /usr/local/sshd_config  # 将PermitRootLogin yes前的注释“#”号去掉 就可以以root登录
#如果没有此文件则创建文件添加此行
#如果开发板用户没有密码可以修改密码 passwd root
vi /etc/passwd添加如下
![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/4729321146ea4c38888710ac616d36b3.png)
chmod 600 /usr/local/bin/*#不能777否则报错权限太open
使用sshd可能报错需要使用绝对地址

/usr/sbin/sshd成功运行,使用finalshell等工具可登陆

  • 21
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Linux系统移植ARM架构上需要按照以下步骤进行操作: 1.了解ARM架构和目标平台:首先需要了解目标平台的硬件架构和规格,包括处理器的型号、内存大小等。同时,需要熟悉ARM架构,包括特殊的寄存器、指令集等。 2.准备交叉编译工具链:由于ARM和x86等不同架构的指令集不兼容,所以需要使用交叉编译工具链,将针对ARM架构编译生成的可执行文件在x86架构的机器上进行编译。可以选择使用已有的交叉编译工具链,或者自行构建。 3.配置内核和设备树:下载Linux内核源码,然后根据目标平台的硬件规格和内核配置需求,进行相应的配置。同时,需要编写设备树描述文件,描述硬件设备的布局和特性,以供内核在启动阶段使用。 4.交叉编译内核和驱动程序:使用之前准备好的交叉编译工具链,编译内核源码和相关的驱动程序,生成适用于ARM架构的可执行文件。同时,也需要针对目标平台的特殊驱动程序进行移植和编译。 5.制作启动镜像:将编译得到的内核、文件系统镜像和设备树等文件整合到一个启动镜像中,以便在目标平台上进行引导和运行。可以使用工具如U-Boot进行生成和引导。 6.调试和测试:将制作好的启动镜像烧录到目标平台上,然后通过串口等方式进行调试和测试,确保系统能够正常启动和运行。如果有问题,需要进行排除和修复。 总结:将Linux移植ARM架构上需要了解硬件和架构,准备交叉编译工具链,配置内核和设备树,编译内核和驱动程序,制作启动镜像,以及进行调试和测试。这些步骤需要耐心和细致的操作,但一旦成功,就可以在ARM平台上运行Linux系统。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值