原创 移植sshd到博创2410开发板

2008-5-8 10:04 4198 7 7 分类: MCU/ 嵌入式


移植sshd到博创2410开发板



一、环境



硬件环境:



HostX86PC       



Target:博创2410开发板



软件环境:



Hostredhat linux 9.0



Targetarm-linux                kernel:linux-2.4.18



二、移植步骤



源码包:



openssh-4.6p1.tar.gz   http://www.openssh.com/portable.html



openssl-0.9.8e.tar.gz      http://www.openssl.org/source



zlib-1.2.3.tar.tar             http://www.zlib.net/



编译工具:



Armv4l-unkonwn-linux-gccArmv4l-unkonwn-linux-g++系列。



21、交叉编译



       我在/arm(我在pc上作为nfs目录挂载到开发板上的)新建work/ssh目录



Mkdir /arm/work/ssh                   工作目录



Cd /arm/work/ssh



Mkdir compressed install source          compressed用于存放源码包



                                                        Install软件安装目录



                                                        Source源码包解压目录



       我的源码包是在windows下下载的,由于我在linux建立了samba服务器目录为(/home/sambauser),所以所有源码包都放在在目录下,把它们拷贝到/arm/work/ssh/compressed



Mv /home/sambauser/openssh-4.6p1.tar.gz        /arm/work/ssh/compressed



Mv /home/sambauser/openssl-0.9.8e.tar.gz
/arm/work/ssh/compressed



Mv /home/sambauser/zlib-1.2.3.tar.gz   /arm/work/ssh/compressed



交叉编译zlib



cd /arm/work/ssh/compressed/



tar xzvf zlib-1.2.3.tar.gz  -C 
../source



cd ../source/zlib-1.2.3



 ./configure --prefix=/arm/work/ssh/install/zlib-1.2.3



 vim
Makefile



CC= Armv4l-unkonwn-linux-gcc



AR= Armv4l-unkonwn-linux-ar rc



CPP = Armv4l-unkonwn-linux-gcc -E



LDSHARED= Armv4l-unkonwn-linux-gcc



 make



 make
install



交叉编译openssl



cd /arm/work/ssh/compressed/



tar zxvf openssl-0.9.8e.tar.gz  -C 
../source



cd ../source/openssl-0.9.8e



./Configure --prefix=/arm/work/ssh/install/openssl-0.9.8e  os/compiler Armv4l-unkonwn-linux-gcc



make



make install



交叉编译openssh



cd /arm/work/ssh/compressed



 tar
zxvf openssh-4.6p1.tar.gz  –C ../source



 cd
../source/ openssh-4.6p1



./configure --host= Armv4l-unkonwn-linux --with-libs --with-zlib=/arm/work/ssh/install/zlib-1.2.3
--with-ssl-dir=/arm/work/ssh/install/openssl-0.9.8e --disable-etc-default-login
CC= Armv4l-unkonwn-linux-gcc
AR= Armv4l-unkonwn-linux-ar



Make



如果make的时候出现如下错误的话



strtonum.c: In function `strtonum':



strtonum.c:59: `LLONG_MIN' undeclared
(first use in this function)



strtonum.c:59: (Each undeclared identifier
is reported only once



strtonum.c:59: for each function it appears
in.)



strtonum.c:61: `LLONG_MAX' undeclared
(first use in this function)



我的处理方法是修改openssh-4.6p1目录下的config.h文件,添加如下两行:



#define
LLONG_MIN    -9223372036854775808



#define
LLONG_MAX   9223372036854775807



把生成的sshdArmv4l-unkonwn-linux-strip处理一下,



Armv4l-unkonwn-linux-strip sshd



22、安装sshd



在安装的时候我就遇到很多问题,不过在参考网上的资料还是搞定了。因为博创2410开发板上的根文件系统是cramfs的,/usr/etc目录下的文件无法修改也不能增加新的目录和文件,然而/mnt/yaffs/这个文件系统就可以添加新的文件和目录。我的工作分为两大块:重建根文件系统和yaffs文件系统(这个部分依个人情况而定,我是因为之前在把开发板上的东西做实验做的混乱了干脆重来的。)



221  重建根文件系统



在开发板用vivi分区时分给根文件系统的大小为3M左右,所以sshd运行时需要的一些文件就不能编进根文件系统了。我也借鉴博创自己的做法做个链接然后链接到yaffs目录下面相对应的目录和文件。我所有和根文件系统有关的东西放在/arm/root/目录下,所以下面的操作都是对这个目录下的文件操作。



/usr/目录下新建一个链接文件local链接到/mnt/yaffs/local/目录



Cd /arm/root/



Ln –s
./usr/loca/ ./mnt/yaffs/local/



还有要修改/etc目录下的passwdgroup文件,添加上sshd用户和组



Cd /arm/root/etc



Vi passwd



修改后如下所示:



root::0:0:root:/:/bin/sh



bin:*:1:1:bin:/bin:



daemon:*:2:2:daemon:/sbin:



nobody:*:99:99:Nobody:/:



sshd:*:74:74:Privilege-separated
SSH:/var/empty/sshd:/sbin/nologin
―――添加sshd用户



vi group



root:*:0:



daemon:*:1:



bin:*:2:



sys:*:3:



adm:*:4:



tty:*:5:



disk:*:6:



lp:*:7:lp



mail:*:8:



news:*:9:



uucp:*:10:



proxy:*:13:



kmem:*:15:



dialout:*:20:



fax:*:21:



voice:*:22:



cdrom:*:24:



floppy:*:25:



tape:*:26:



sshd:*:74:-------------添加sshd



sudo:*:27:



audio:*:29:



ppp:x:99:



然后在/var目录下新建两个目录



Cd /arm/root/var



Mkdir empty



Mkdir run



Cd empty



Mkdir shhd



到此为止,根文件系统修改完毕,把/arm/root/制作成下载到开发板上的映像文件root.cramfs



Cd /arm



Mkcramfs root
root.cramfs



做好映像文件root.cramfs后下载到开发板上,这个参考博创的实验手册就可以了我就不罗嗦。



222  制作yaffs文件系统



       因为之前在根文件系统中/usr/local/时链接到yaffs下的local目录的,所有要在yaffs下添加local目录。我的yaffs是在/arm目录下。



Cd /arm/yaffs



Mkdir local



Cd local



Mkdir bin etc libexec sbin share



       以上命令是把一些用来存放文件的目录建好,然后把相应的文件拷贝进去。



切换到ssh编译的目录。



Cd /arm/work/ssh/source/openssh-4.6p1



Cp scp sftp ssh ssh-add ssh-agent
ssh-keygen ssh-keyscan /arm/yaffs/local/bin



cp moduli 
ssh_config  sshd_config  ssh_host_dsa_key  ssh_host_dsa_key.pub  ssh_host_key 
ssh_host_key.pub 
ssh_host_rsa_key 
ssh_host_rsa_key.pub  /arm/yaffs/local/etc



如果没有那些key文件的话,用如下命令产生:



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
""



还有一个问题是要注意这些文件的属性,



-rw-------    1 root    
root        88039 Feb 15  2003 moduli



-rw-r--r--    1 root    
root         1167 Feb 15  2003 ssh_config



-rw-------    1 root    
root          668 Nov 17 17:23
ssh_host_dsa_key



-rw-r--r--    1 root    
root          590 Nov 17 17:23 ssh_host_dsa_key.pub



-rw-------    1 root    
root          515 Nov 17 17:23
ssh_host_key



-rw-r--r--    1 root    
root          319 Nov 17 17:23
ssh_host_key.pub



-rw-------    1 root    
root          883 Nov 17 17:23
ssh_host_rsa_key



-rw-r--r--    1 root    
root          210 Nov 17 17:23
ssh_host_rsa_key.pub



-rw-------    1 root    
root         2474 Feb 15  2003 sshd_config



如果你的这些文件的属性设置和上面的不一样的话,需要改过来不然启动sshd服务的时候会报错。



cp sftp-server  ssh-keysign  
/arm/yaffs/local/libexec



cp sshd  
/arm/yaffs/local/sbin



这些弄好之后,把yaffs目录下所有的文件和目录压缩为一个压缩包



Cd /arm/yaffs



Tar cjvf * /arm/yaffs.tar.bz2



接下来就按照博创的手册把yaffs.tar.bz2下载到开发板然后解压。



此时的你只要等开发板启动好之后启动sshd服务了,使用绝对路径来启动。



/usr/local/sbin/sshd



用客户端测试,linuxwindows下都可以通过ssh访问开发板了。



三、我所遇到的问题及其解决方法



[root@linuxserver ssh]# ssh -l root
192.168.1.166
(这是我开发板的ip地址)



root@192.168.167.132's password:



Permission denied, please try again.



分析:



       这是使用根用户来登陆开发板,因为博创开发板的根用户没有密码,所以要修改sshd_config文件如下选项:



PermitRootLogin    yes―――――允许根用户登陆



PermitEmptyPasswords yes――――允许使用空密码



UsePrivilegeSeparation   no――――把安全级别降低,因为不会连接互联网



我在移植过程中遇到的问题都参照网上的文章解决了,非常感谢众多网友们的贡献,真的非常感谢。写在我前面的移植步骤里面了。



参考资料:



移植sshdJK2410开发板 小结http://blog.chinaunix.net/u1/43047/showart_371372.html



SSH系列1 OpenSSH移植http://linux.chinaunix.net/bbs/viewthread.php?tid=988433



解决ssh不能连接的问题http://daning.javaeye.com/blog/166186




文章评论0条评论)

登录后参与讨论
我要评论
0
7
关闭 站长推荐上一条 /2 下一条