内核裁剪后找不到磁盘的问题。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

我裁剪了一个linux小系统,用到到了busybox,进入系统后fdisk -l 获取不到任何数据,再查看/dev目录下只有一个null节点跟console节点,这两个节点是我在创建根文件系统时手动创建的,除此之外什么都没有,为什么会出现这种情况呢,是busybox的问题吗,还是内核裁剪时出问题了,我听说要加什么udev支持什么的,具体也不是很清楚,我用的是2.6.32的内核,哪位达人能告知下。。。感激不尽。。 实在没多少分了不好意思,等另外帖子结贴了我再加分。

作者: liuyang1943   发布时间: 2011-04-25

成功移植busybox-1.7.0并加载mdev(udev的嵌入式版本)



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中就行了。 

呵呵,下面要开始调试usb host了。进度一步一步的推进,好开心啊...... 
记得以前这里的哪位大侠提到2.6.21上已经解决了cramfs做rootfs必须禁用ECC的问题,不过我暂时还不用cramfs,所以没去研究。 
另外,我在2.6.14和2.6.18上使用yaffs/ramfs+yaffs可是保留着这个NAND_ECC_SOFT的,也没发现有什么问题。


上次成功移植完2.6.22.3后,由于没有启动udev,造成/dev下没有设备文件。也就是说所有的设备都没有挂接进来。 
用google在网上搜了一把。发现最新的busybox已经包含了udev的简化版本即mdev,且使用非常简单。

作者: liuyang1943   发布时间: 2011-04-25