作嵌入式开发老需要交叉编译,有时候依赖关系挺麻烦的,为了不再进行交叉编译,我们需要使用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方式,是目前最值得推荐的方式。
阅读(1210) | 评论(0) | 转发(0) |