通过ssh搭建PC和ARM开发板文件传输系统
1.首先确认开发板与电脑是否能ping通
(1)使用网线连接开发板与PC,PC可以连上WiFi,这里注意如果之前电脑通过网线连接了外网,可能通过DHCP的方式自动获取一个IP地址,这时候再使用网线连接PC和开发板,IP可能会出错(而通过后面的方法一般通过WIFI共享给的以太网端口的地址是192.168.137.1),因此一般连接之后,我都使用网络重置,或者开机之前就连接好PC和开发板。
(2)打开网络和Internet设置——更改适配器选项——右击“WLAN”——选择共享——允许其他网络用户通过此计算机连接——以太网——确定
(3)在windows里查看cmd,输入ipconfig查看以太网的地址应该是192.168.137.1(其他地址只要保证开发板的IP跟PC的IP在同一个网段(只有最后一位不同)就可ping)这个ip也是开发板的网关ip。电脑本地连接ip == 开发板的网关ip!
(4) 开发板通过网线连接笔记本电脑,修改开发板的ip地址,需要对应好自己的网关地址配置ip,例如网关ip是192.168.137.1,配置ip的命令:ifconfig eth0 192.168.137.XXX,XXX随便写个数字(除了1),要保证ARM开发板里的linux系统里有ifconfig和route命令,没有的话,在menuconfig里选择命令,make,make install,使用busybox重新制作文件系统,这里不详谈了(之前的系统不是我烧的,这些命令都没有,苦啊),但是这样重启之后,ip又会回到初始ip,要想永久修改ip到系统下etc/init.d/rcS里添加一句ifconfig eth0 192.168.137.XXX
(5)设置完ip后,先ping自己的电脑试一下
ping 192.168.137.1
成功了之后,设置网关
route add default gw 192.168.137.2
设置完ping百度
ping 202.108.22.5
如果能ping上则代表成功
2.移植SSH到ARM开发板
openssh移植到ARM Linux教程
几点说明:
1.按照此教程,但是我用的是arm-linux-gcc交叉编译器,直接把里面的arm-none-linux-gnueabi-gcc换成arm-linux-gcc即可
2.第6步交叉编译openssh中命令有错改为:
CC=arm-linux-gcc AR=arm-linux-ar ./configure --host=arm-linux --with-zlib=/home/sunproud/ssh/zlib.install/ --with-ssl-dir=/home/sunproud/ssh/openssl.install --disable-etc-default-login
3.还是第6步,一开始总是invalid host type,后来还查询了交叉编译器的bulid、host、target:
在讨论工具链创建时必须区分三台机器
构建机,其中工具链构建。
主机,其中,工具链将被执行。
目标机器,其中由工具链创建二进制文件被执行。工具链有四种常见的构建类型:
本机构建 ie BUILD=HOST=TARGET
用于为工作站构建普通gcc。例如BUILDHOSTTARGET==x86
交叉构建 ie BUILD=HOST!=TARGET
用于构建在工作站上工作但为目标生成二进制文件的工具链。例如BUILD=HOST=x86 TARGET=arm
跨本机构建,即BUILD!=HOST=TARGET
用于在目标上工作的工具链,并为目标生成二进制文件。例如BUILD=x86 HOST=TARGET=ARM
加拿大工具链即BUILD!=HOST!=TARGET
用于构建架构工具链在B上运行并为架构C生成二进制文件。例如BUILD=x86 HOST=mac TARGET=arm
但最后发现跟这个三个没什么关系,是openssh的版本问题,最后去找与编译器相同年份的openssl,谷歌gcc 4.8 openssh server找到openssh:release notes
下载与gcc相同年份的版本wget https://cdn.openbsd.org/pub/OpenBSD/OpenSSH/portable/openssh-6.4p1.tar.gz