移植SSH到ARM Linux开发板成功
步骤:
1.下载源码包,地址如下:
opensshopenssl
zlib
2.交叉编译
创建工作目录:
#mkdir /work#cd /work
在/work目下面创建ssh目录
# mkdir /work/lib
# mkdir /work/ssh
# cd
# mkdir compressed install source
#mv tarpakgs/openssh-4.6p1.tar.gz
#mv tarpakgs/openssl-0.9.8e.tar.gz
#mv tarpakgs/zlib-1.2.3.tar.gz
解压安装包:
# cd /work/ssh/compressed/# tar zxvf zlib-1.2.3.tar.gz
# tar zxvf openssl-0.9.8e.tar.gz
# tar zxvf openssh-4.6p1.tar.gz
交叉编译 zlib:
# cd
# ./configure --prefix=/work/ssh/install/zlib-1.2.3
# vim Makefile
CC=arm-none-linux-gnueabi-gcc
AR=arm-none-linux-gnueabi-ar rc
CPP =arm-none-linux-gnueabi-gcc -E
LDSHARED=arm-none-linux-gnueabi-gcc
# make
# make install
交叉编译openssl
# cd
# ./Configure --prefix=/work/ssh/install/openssl-0.9.8e
# make
# make install
# cd
#./configure --host=arm-none-linux-gnueabi
#make
注意:openssh不需要make install
3.操作目标板
3.1确保目标板上有以下目录,若没有,则新建:
/usr/local/bin//usr/local/sbin/
/usr/local/etc/
/usr/local/libexec/
/var/run/
/var/empty/
3.2从PC机上将以下文件拷贝到目标板Linux系统中
PC机 /work/ssh/source/openssh-4.6p1/ 目录下的
scp
moduli ssh_config sshd_config拷贝到目标板 /usr/local/etc
sftp-server
sshd拷贝到目标板 /usr/local/sbin/
3.3生成Key文件
在PC机 /work/ssh/source/openssh-4.6p1/ 目录下运行:
ssh-keygen -t rsa -f ssh_host_rsa_key -N ""
ssh-keygen -t dsa -f ssh_host_dsa_key -N ""
ssh-keygen -t ecdsa -f ssh_host_ecdsa_key -N ""
将生成的 ssh_host_*_key这3个文件copy到目标板的 /usr/local/etc/目录下
3.4修改目标板passwd文件。
在/etc/passwd 中添加下面这一行
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
4.测试
在目标板上运行:#/usr/local/sbin/sshd
可以用ps命令查看sshd是否在工作
如果运行的过程中有提示缺少动态连接库,可以在主机上搜索相应文件,拷贝到目标板/lib/目录下面,注意创建软连接!
OK!不出意外的话可以成功,
主机上:
#ssh root@192.168.0.34(开发板的ip)
然后输入开发板的root密码就就可以了。
//root密码就是你开发板上root的密码,如果之前root没有密码,需要重新设置,用passwd root,然后输入密码即可。
登录成功后如下图:
putty登录
linux主机登录
问题总结1.运行sshd时出现
sshd: /lib/libc.so.6: version `GLIBC_2.7 not found (required by sshd)
问题分析:说明你编译等时候指定等glibc和目标板所使用的不一致。
解决办法:配置openssh,即./configure时,使用对用等--host参数,如--host=arm-linux/arm-none-linux-gnueabi。
2.make openssl的时候,指定的prefix目录已经存在,无法创建。
问题分析:这是因为在prefix目录的时候,使用了相对路径,如../../install。
解决办法:openssl需要用指定绝对路径来安装,prefix参数应该如:--prefix=/work/ssh/install/openssl-1.0.0
3.使用arm-2007q3-51-arm-none-linux-gnueabi.bin的make编译ssh和gdbserver时出错:
/root/CodeSourcery/Sourcery_G++_Lite/bin/../lib/gcc/arm-none-linux-gnueabi/4.2.1/../../../../arm-none-linux-gnueabi/bin/ld: cannot find -lgcc_s
collect2: ld returned 1 exit status
make: *** [example] 错误 1
问题解析:
移植SSHARMLinux开发 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)