移植openssh至arm9嵌入式开发板

摘自奶牛博客

首先说移植的目的:有了ssh开机自动启动,就不用串口线来操作开发板了,可以节省很多时间,特别是文件传输的缓慢实在无法忍受。

我使用的开发板是海思的3515视频开发板。

移植过程:

下载相关源码:

openssh:

http://mirror.esc7.net/pub/OpenBSD/OpenSSH/portable/openssh-6.1p1.tar.gz

openssl:

http://www.openssl.org/source/openssl-1.0.1c.tar.gz

zlib:

http://zlib.net/zlib-1.2.7.tar.gz

然后配置好交叉编译工具

mkdir source package 
mkdir package/zlib 
mkdir package/openssl 
mv openssh-6.p1.tar.gz openssl-1.0.1c.tar.gz zlib-1.2.7.tar.gz ./source 
cd source 
tar xzvf openssh-6.p1.tar.gz 
tar xzvf openssl-1.0.1c.tar.gz 
tar xzvf zlib-1.2.7.tar.gz 

1.编译zlib

    ./configure --prefix=/home/nenew/package/zlib 

修改Makefile

    CC=arm-linux-gcc 
    AR=arm-linux-ar 
    CPP =arm-linux-gcc -E 
    LDSHARED=arm-linux-gcc

就是讲gcc ar用arm-linux-gcc arm-linux-ar来代替

    make 
    make install

2.编译openssl

./Configure --prefix=/home/nenew/package/openssl os/compiler:arm-linux-gcc 


 

这里可以直接指定交叉编译器,如果想知道哪些编译文件可以直接支持的话,一般./configure –help就可以看到说明

    make 
    make install 
    

3.编译openssh

    ./configure --host=arm-linux --prefix=/usr/local/openssh --with-zlib=/home/nenew/package/zlib --with-ssl-dir=/home/nenew/package/openssl --disable-etc-default-login --disable-strip CC=arm-linux-gcc AR=arm-linux-ar 
    

指定好了prefix为安装的目标目录,zlib与ssl的路径也就是我们刚才的安装路径,最后指定交叉编译器

    make 
    

这里并不安装,理由是不需要安装,安装到本机也无法执行,因为我们是交叉编译,你也许会问,为什么不直接换个预置安装目录来安装呢?如果不动手做你是不会知道的,sshd启动的时候会去安装目录下的etc找配置文件滴,所以这个目录不要随便指定,网上那些教程很多这里的路径都是有问题的。

编译工作至此结束,可以开始移植openssh了。

    mkdir -p usr/local/openssh 
    cd usr/local/openssh 
    mkdir etc bin 
    cd ../../../ 
    cp scp  sftp  ssh  ssh-add  ssh-agent  ssh-keygen  ssh-keyscan ./usr/local/openssh/bin 
    cp sshd_config ssh_config ./usr/local/openssh/etc 
    mkdir sbin bin 
    cp sshd ./sbin 
    cd bin 
    ln -s /usr/local/openssh/bin/scp 
    ln -s /usr/local/openssh/bin/sftp 
    ln -s /usr/local/openssh/bin/ssh 
    ln -s /usr/local/openssh/bin/ssh-add 
    ln -s /usr/local/openssh/bin/ssh-agent 
    ln -s /usr/local/openssh/bin/ssh-keygen 
    ln -s /usr/local/openssh/bin/ssh-keyscan 
    cd .. 
    mkdir -p usr/local/libexec 
    cp sftp-server  ssh-keysign usr/local/libexec 
    mkdir ../final 
    cp -r bin sbin usr ../final 
    cd ../final 
    tar czvf openssh.tgz ./ 
    

目录结构大体如下:

移植openssh至arm9嵌入式开发板_第1张图片

这就把需要拷贝的文件都准备好了,传到开发板的目录下,然后展开到/根。

这时候ssh并不能运行,还需要修改passwd与group文件,位置在/etc下,将sshd用户添加上。

passwd照着模样修改:

sshd::15:50:::/bin/sh

group照着模样修改:

sshd:*:50:

这里的两个50要对应,是组的编号

    mkdir -p /var/run/sshd 

然后就是配置ssh key了。

    cd /usr/local/openssh/etc 
    ssh-keygen -t rsa1 -f ssh_host_key -N "" 
    ssh-keygen -t rsa -f ssh_host_rsa_key -N "" 
    ssh-keygen -t dsa -f ssh_host_dsa_key -N "" 
    ssh-keygen -t ecdrsa -f ssh_host_ecdsa_key -N "" 

现在执行/sbin/sshd应该就可以正常启动了。

如果想自动启动需要增加启动脚本与启动项。

启动脚本位置:/etc/rc.d/init.d/

启动项配置文件:/etc/init.d/rcS

如何修改可以自己参照里面的实例。

至此就已经完成了移植工作了。ssh可以正常链接。对了,这里建议修改sshd_config哦,把允许root登录与空密码选项打开,因为可以方便,这个不是服务器,不需要太高的安全级别。

你可能感兴趣的:(移植openssh至arm9嵌入式开发板)