成功移植busybox-1.10.0并加载mdev
编译器:arm-linux-gcc 3.4.4
busybox:busybox 1.10.0
今天看到busybox.net上已经升级到1.10.0了,想起以前的busybox有-sh: can't access tty; job control turned off问题,这个问题导致在控制台中没法使用Ctrl+c。所以今天就试试最新的版本看看有没有这方面的问题。果然没有问题,同时又把mdev加上去。最后想试一下Ctrl+c可不可以用,但是写了一下死循环程序不能运行,
# cd /usr
# ls -al
drwxr-xr-x 4 0 0 4096 Apr 21 2008 .
drwxr-xr-x 9 0 0 4096 Apr 21 2008 ..
drwxr-xr-x 2 0 0 4096 Apr 21 2008 bin
-rwxrwxrwx 1 0 0 7298 Apr 21 2008 hell
-rw-r--r-- 1 0 0 89 Apr 21 2008 hell.c
drwxr-xr-x 2 0 0 4096 Apr 21 2008 sbin
# ./hell
-/bin/sh: ./hell: not found
# whoami
whoami: unknown uid 0-/bin/sh: ./hell: not found
不知道这问题是什么原因?难道是我没有用登录的原因吗?
# ping 192.168.1.180
PING 192.168.1.180 (192.168.1.180): 56 data bytes
64 bytes from 192.168.1.180: seq=0 ttl=64 time=1.877 ms
64 bytes from 192.168.1.180: seq=1 ttl=64 time=1.222 ms
64 bytes from 192.168.1.180: seq=2 ttl=64 time=1.108 ms
--- 192.168.1.180 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 1.108/1.402/1.877 ms
最后想起来ping不是可以用来测试一下Ctrl+c的吗。做了一下,Ctrl+c是有效。
以下为我主要参考的移植文章:
成功移植busybox-1.7.0并加载mdev(udev的嵌入式版本)
上次成功移植完2.6.22.3后,由于没有启动udev,造成/dev下没有设备文件。也就是说所有的设备都没有挂接进来。
用google在网上搜了一把。发现最新的busybox已经包含了udev的简化版本即mdev,且使用非常简单。
于是下载移植:
第一步:修改Makefile
将Makefile中第175行左右的ARCH和CROSS_COMPILE修改为arm系列:
ARCH ?= arm
CROSS_COMPILE ?= arm-linux-
第二步:meke menuconfig
运行make menuconfig,选择你需要的选项。
在此选择
mdev
第三步:编译、安装
#make
#make install
这时会在你的编译目录下生成一个_install的目录,里面包含了生成的所有文件和目录结构。
第四步:查找所依赖的共享库
#cd _install/bin
#arm-linux-readelf -a ./busybox | grep "Shared library"
用上面的命令可以查到当前的busybox依赖哪些共享库(这些共享库一般可以在你的交叉编译器所在目录的lib下找到)
第五步:将生成的文件和共享库拷贝到你的root filesystem中
将_install中的目录结构和文件完全拷贝到你的root filesystem中。
然后将共享库拷贝到root filesystem的lib目录中,并建立相关的链接文件
第六步:为mdev的运行准备环境
mdev需要改写/dev和/sys两个目录。所以必须保证这两个目录是可写的(一般会用到sysfs,tmpfs。所以要重新编译内核)。
然后在你的启动脚本文件中加入
/bin/mdev -s
最后:将新的内核、新的root filesystem烧到nand flash中就行了。
转载 http://blog.chinaunix.net/u1/59015/showart_571813.html
阅读(492) | 评论(0) | 转发(0) |