根文件系统内核移植出错误笔记.pdf
文本预览下载声明
错误共享文档
首先谢谢群里帮助过我的同学,谢谢你们的支持,谢谢东哥的大力支持…是你们让我走
度了一个又一个难关……………
此文档我把它共享在群里,希望对刚入门内核移植的同学有所帮助,它不是
什么秘籍,也不是什么经典的思维,更是不是什么神秘的技术,它只是记录我们
在学习中遇到的问题,帮助您减少在学习内核移植时的压力,少走弯路;
同时也希望您在内核移植时,把所遇到的问题也共享在此文档上,如果在文
档记录中发现有笔误或者出错的地方,请您修改一下,共同学习,共同进步!!
如果有愿意分享在内核移植时出现的错误而后得到解决的同学,希望您用图
文并茂的形式追加在后面,以方便后来者纠错。我在此代表以后在此文档中得帮
助的同学们先给您(们)说声谢谢………
问题一:
通过nfs 挂载根文件系统,出现如下类似
Kernel panic - not syncing: VFS: Unable to mount root fs
on unknown-block(2,0),如图:
这种情况,表示用 nfs 挂载成功,并且网卡驱动也是正常的。但是为什么还有后面这句话
呢(Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(2,0))?
原因是这样的:
由 于 我 在 uboot 下 写 入 ( setenv bootargs root=/dev/nfs rw
nfsroot=:/home/jh/File/first_fsip=:::255.255.255.
0::eth0:off init=/linuxrc console=ttySAC0,115200 )参数;这表示直接挂载的,出现错误的原因是
因为指定的目录(/home/jh/File/first_fs)没有找到;
解决方法:
1. 查看指定的目录是否存在,没有就用 mkdir 建立这个系统目录;
2. 查看是否具有执行权限,没有,就用 (chmod 777 first_fs)命令改变权限;
3. 查看文件系统目录下dev/inittab , 用ls – l 命令查看是否有mtdblock2,若有再看一
下它是否是(mtdblock2 b 2 0)要与上图中最后的提示一致才行,不然无法挂
接;若没,有用 (mknod b 2 0)建立。以上问题就可以解决了
(这三种情况我都遇到过,所以……)
问题二:
挂接文件目录后的出现,如图:
程序在这里停止不前,说明我构建的文件系统有问题,那么问题在哪里,我看了 N 遍后依
然没有发现问题,最后我在一个网站上看到有一个人和我遇到的问题一样,
于是细看得到解决。
解决方法:
“问题得到解决,重新制作了文件系统
1.构建dev 目录时,把静态创建设备文件改为使用mdev 创建设备文件
2.注意etc/inittab 文件中 s3c2440_serial0::askfirst:-/bin/sh 串口名要和内核中的名称一致”
而我的是console::askfirst:-/bin/sh (恍然大悟,这里原来我没有注意到)
很高兴,内核移植我弄了4 天,功夫不负有心人,nfs 挂载成功,终于得到解决。哈哈,现在
凌晨一点了,可以睡了…………………
问题三:
为什么我的系统文件用nfs 能挂载成功,
可通过mkyaffs2image 编译之后,下载到内
核后却不能正常运行,并且出现连续坏块
如图:
我用了三天几乎看光了所有网上类似错误的解决办法,也请教了群里不少的同学,失望的是
没有一个方法能行得通,于是在别人的指导下逐一地排除。
1. 在uboot 下用printenv 来查看参数,如图:
参数正常
2. 于是再查看内核启动信息中的分区是否与uboot 中的分区一样,并且分区的内存容量也
要相等;如图:
与uboot 中的分区一致,正常:这些都正常为什么运行不起来呢?根文件系
统也是正常的呀;我开始有点丈二和尚摸不着头脑了,告诉自己会有办法 的,
耐心点。
3.
想想编译内核的工具和编译busybox 的工具是不是同一个,如果不是同一个也不
能正常运行,并且还要保证系统目录下lib 库的文件也
显示全部