Chinaunix首页 | 论坛 | 博客
  • 博客访问: 198743
  • 博文数量: 103
  • 博客积分: 5051
  • 博客等级: 大校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-08 11:07
文章分类

全部博文(103)

文章存档

2011年(1)

2010年(2)

2009年(100)

我的朋友

分类: LINUX

2009-05-03 16:05:00

成功移植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
阅读(494) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~