Chinaunix首页 | 论坛 | 博客
  • 博客访问: 73701
  • 博文数量: 17
  • 博客积分: 1410
  • 博客等级: 上尉
  • 技术积分: 280
  • 用 户 组: 普通用户
  • 注册时间: 2007-09-04 09:30
文章分类

全部博文(17)

文章存档

2011年(1)

2009年(1)

2008年(15)

我的朋友

分类: LINUX

2009-03-11 12:15:20

    作嵌入式开发老需要交叉编译,有时候依赖关系挺麻烦的,为了不再进行交叉编译,我们需要使用sbrsh的方式。这种方式,对于比较生僻的cpu来说,优势是很明显的。比如对于我们自己的龙芯,mips构架的cpu等。

编过几次,总忘记,这里记下来,往后用。

创建scratchbox,添加marvell的工具链。
第1步 :  要先编译zlib-1.2.3,因为编ssh的时候需要的
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > ./configure  --prefix=/usr
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make install

第2步:编译openssl,我选择了下面的版本
[sbox-marvell-20090311: /scratch/marvell/openssl-0.9.8c] > ./config --prefix=/usr shared
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make install

第3步:编译openssh,我选择了下面的版本
[sbox-marvell-20090311: /scratch/marvell/openssh-4.3p2] > ./configure  --prefix=/usr --host=arm-linux
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make
[sbox-marvell-20090311: /scratch/source4/zlib-1.2.3] > make install

第4步:安装busybox,准备制作nfs-rootfs
我的此前已经配置好了。所以直接安装。
[sbox-marvell-20090311: /scratch/source2/busybox/busybox-1.1.2] > make
[sbox-marvell-20090311: /scratch/source2/busybox/busybox-1.1.2] > make PREFIX=/ install

第5步:设置好etc下面的fstab
把下面的内容贴进去
proc    /proc   proc    defaults    0   0
none    /tmp    ramfs   defaults        0       0
#mdev   /dev    ramfs   defaults        0       0
sysfs   /sys    sysfs   defaults        0       0

第6步:设置好/etc/init.d/rcS
因为刚刚安装了busybox,这个时候/etc下面还没有init.c/rcS的,自己动手创建
mkdir -p /etc/init.d
cd /etc/init.d
touch rcS
chmod 777 rcS
再把下面的内容贴到文件中
#! /bin/sh
#这里写你想启动的东西
#echo "marvell rootfs OK!"

第7步:设置好inittab
把下面的内容贴进去
::sysinit:/etc/init.d/rcS
::respawn:-/bin/sh
::restart:/sbin/init
::ctrlaltdel:/sbin/reboot
::shutdown:/bin/umount -a -r
::shutdown:/sbin/swapoff -a

第8步:在pc上sudo vi /etc/export
把自己做的rootfs共享出去。我的小机ip是192.168.10.1
/nfsroot/rootfs 192.168.10.1(rw,no_root_squash)

第 9步:给marvell板子上电
终端显示了marvell rootfs OK!
成功了。

第10步:在开发板上启动sshd,出错如下
先添加产生随即数的设备
mknod /dev/random c 1 8
mknod /dev/urandom c 1 9
现在开始启动sshd
/usr/sbin $ sshd                                                             
sshd re-exec requires execution with an absolute path                        
/usr/sbin $ /usr/sbin/sshd                                                   
Could not load host key: /usr/etc/ssh_host_key                               
Could not load host key: /usr/etc/ssh_host_rsa_key                           
Could not load host key: /usr/etc/ssh_host_dsa_key                           
Disabling protocol version 1. Could not load host key                        
Disabling protocol version 2. Could not load host key                        
sshd: no hostkeys available -- exiting. 
请作如下处理:
             ssh-keygen -t rsa1 -f /usr/etc/ssh_host_key
          ssh-keygen -t dsa -N "" -f /usr/etc/ssh_host_dsa_key
         
ssh-keygen -q -t rsa -f /usr/etc/ssh_host_rsa_key -N
vi /etc/passwd
添加如下内容
sshd:x:109:65534::/var/run/sshd:/usr/sbin/nologin

第11步:启动sbrshd
        从工具链中cp sbrshd到小板上的/etc/init.d中去,然后在小板上启动
/etc/init.d/sbrshd start

第12步:看一下是否真的启动成功
ps,可能没有东西
mount proc一下。应该可以看到东西了。
  796 root        556 S   -sh                                                
  810 root       1048 S   /usr//sbin/sshd                                    
  812 root         96 S   sbrshd start                                       
  819 root        376 R   ps

第13步 编译其他的包
    进入scratchbox. 所有的包都可以不再交叉编译了。

PS:android现在提供了自己的编译系统,可以不再为编译费心了。如果要作非主流的cpu嵌入式开发。使用scratchbox中的sbrsh方式,是目前最值得推荐的方式。

阅读(1184) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~