Chinaunix

标题: 求助大侠们 Warning: unable to open an initial console [打印本页]

作者: joshuazzh    时间: 2008-08-12 21:20
标题: 求助大侠们 Warning: unable to open an initial console
QQ2440开发板,新移植了一个2.6.20.3内核
网络文件系统可用,可以通过哦网络文件系统将板子跑起来,是不是应该说明文件系统应该是没有问题的
但是将yaffs文件系统烧写到nand中后引导不起来,引导出错信息:
VFS: Mounted root (yaffs filesystem).
Freeing init memory: 176K
Warning: unable to open an initial console.
Failed to execute /linuxrc.  Attempting defaults...
Kernel panic - not syncing: No init found.  Try passing init= option to kernel.
而我实验过nand中烧写cramfs文件系统新移植的内核却可以正确的引导起来
why?????????????????

bootloader是板子自带的vivi
看到网上有信息说是因为mkyaffsimage工具不能制作2.6.18以后文件系统
引导时候会出现这个问题
但是更新了这个工具重新制作的yaffs文件系统还是跑不起来
望大侠们不吝赐教!!!
作者: joshuazzh    时间: 2008-08-12 21:32
标题: 等待答复
求助,望大侠指教
已经在这个问题上折磨一个礼拜了!!!!!!
作者: joshuazzh    时间: 2008-08-12 21:34
标题: 补充
实验过/dev下面已经添加了console和null两个设备文件
还是不能解决的
作者: vitoUNIX    时间: 2008-08-13 07:56
我一直是ramfs+yaffs2

帮你顶一下
作者: joshuazzh    时间: 2008-08-13 08:48
原帖由 vitoUNIX 于 2008-8-13 07:56 发表
我一直是ramfs+yaffs2

帮你顶一下

这样就免去了yaffs文件系统一系列麻烦,思路不错!
但是我现在板子上就三个MTD分区
一个vivi
一个kernel
一个yaffs
没有给cramfs提供分区
作者: joshuazzh    时间: 2008-08-13 08:50
我问过好几个高手
对于2.6.18以后的内核移植都会出现这个问题
我估计问题应该是在mkyaffsimage工具上
作者: joshuazzh    时间: 2008-08-13 08:59
引导cramfs的linux_cmd_line
param set linux_cmd_line "noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/mtdblock2 rootfstype=cramfs mem=64M"
引导nfs的linux_cmd_line
param set linux_cmd_line "console=ttySAC0 root=/dev/nfs nfsroot=192.168.1.111:/nfs/FriendlyARM/QQ2440/root_nfs  ip=192.168.1.70:192.168.1.111:192.168.1.111:255.255.255.0Q2440V3.arm9.net:eth0ff"

引导yaffs的linux_cmd_line
param set linux_cmd_line "noinitrd console=ttySAC0,115200 init=/linuxrc root=/dev/mtdblock2 rootfstype=yaffs mem=64M"
当然内核做了相应配置
前面两者都可以正确引导起来
yaffs的文件系统就是不行!!!!!
内核配置修改过无数次,实在想不出问题所在了
在线等待高手!
作者: rodgerluo    时间: 2008-08-13 09:10
标题: 回复 #7 joshuazzh 的帖子
我也做过关于yaffs2的文件系统,最终失败。问题是这个oob不好烧写。要么自己写这个烧写程序。
作者: zhlyp    时间: 2008-08-13 09:12
你那vivi支持yaffs烧写吗?
作者: joshuazzh    时间: 2008-08-13 09:23
标题: 回复 #9 zhlyp 的帖子
支持
开发半自带的vivi
支持yaffs烧写的
2.6.18以下的内核都没有这个问题
我看了一篇文章也说是18以上内核用原来的mkyaffsimage工具制作的文件系统会有问题
我升级了下这个工具重新制作文件系统
还是不行
郁闷
作者: joshuazzh    时间: 2008-08-13 09:26
原帖由 rodgerluo 于 2008-8-13 09:10 发表
我也做过关于yaffs2的文件系统,最终失败。问题是这个oob不好烧写。要么自己写这个烧写程序。


我也一样,在uboot中添加了个yaffs烧写支持
但是烧写的时候还是出错
您看过一下这两篇文章没有
http://www.armchina.cn/article.asp?id=63
http://www.armchina.cn/article.asp?id=64
我也照他的方法修改过
不行的
vivi中烧写yaffs的代码不开源,也没有办法修改阿
作者: sep    时间: 2008-08-13 09:56
你内核支持yaffs文件系统吗
作者: joshuazzh    时间: 2008-08-13 10:03
标题: 回复 #12 sep 的帖子
肯定了,给内核打了支持yaffs的补丁
有!!
作者: sep    时间: 2008-08-13 10:16
会不会和你分区的flag有关?
我记得用vivi分区时,只读和可读可写的flag的不同的
作者: joshuazzh    时间: 2008-08-13 10:36
标题: 回复 #14 sep 的帖子
谢谢回复
分区信息:
static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name = "bootloader",
  .offset = 0x00000000,
  .size = 0x00030000,
        },
[1] = {
         .name = "kernel",
  .offset = 0x00050000,
  .size = 0x00200000,
},
[2] = {
         .name = "root",
  .offset = 0x00250000,
  .size = 0x03dac000,
}
};

bon part 分区也应该是没有问题的
bon part 0 320k 2368k 也是三个分区,和MTD分区对应
没有加标志符之类的
作者: sep    时间: 2008-08-13 10:43
原帖由 joshuazzh 于 2008-8-13 10:36 发表
谢谢回复
分区信息:
static struct mtd_partition smdk_default_nand_part[] = {
        [0] = {
                .name = "bootloader",
  .offset = 0x00000000,
  .size = 0x00030000,
        },
[1] = {
         .name = "k ...

我知道,但可以在vivi命令行下,用part add命令来分区
当时我拿到的开发板,根分区是cramfs、还有一个user分区是yaffs分区,这两个分区的flag是不同的。网上也有提到过的。如果你的devfs、yaffs已经支持了,nfs也可挂载上,那首先要怀疑这里
作者: T-bagwell    时间: 2008-08-13 10:50
打了补丁是不是就是说你在编译kernel的时候,yaffs就会被编译进kernel里了呢?
作者: T-bagwell    时间: 2008-08-13 10:51
挂不上该文件系统,十有八九应该是kernel不支持
作者: rodgerluo    时间: 2008-08-13 10:52
看来有空我也要把u-boot-1.3.3.tar.bz2再移植一下了,加上yaffs2功能试试。
作者: fairchilddb    时间: 2008-08-13 12:08
标题: 回复 #19 rodgerluo 的帖子
re 好东西 学习了
作者: joshuazzh    时间: 2008-08-13 14:05
标题: 回复 #17 T-bagwell 的帖子
打补丁只是在你的内核里添加了yaffs支持的代码
还要在make menuconfig的时候相应的位置再手动添加上去!
作者: joshuazzh    时间: 2008-08-13 14:09
标题: 回复 #16 sep 的帖子
谢谢大家的回复
问题既不是出在内核中也不是处在文件系统中,
devfs在2.6.18以后的内核中压根就不支持了
在2.6.14-2.6.17还可以通过打补丁或者手动的方式在对应kconfig中添加支持
之后版本的内核已经把这部分代码全部给del掉了

此问题已经解决
等下整理一个完整的回答
作者: joshuazzh    时间: 2008-08-13 14:12
原帖由 T-bagwell 于 2008-8-13 10:51 发表
挂不上该文件系统,十有八九应该是kernel不支持

这个问题网上给出过思路
今天我的牛B兄弟
已经帮我解决这个问题
等会整理一个完整的解答过程
希望大家支持这个帖子
作者: sep    时间: 2008-08-13 14:12
原帖由 joshuazzh 于 2008-8-13 14:09 发表
谢谢大家的回复
问题既不是出在内核中也不是处在文件系统中,
devfs在2.6.18以后的内核中压根就不支持了
在2.6.14-2.6.17还可以通过打补丁或者手动的方式在对应kconfig中添加支持
之后版本的内核已经把这部 ...

那为什么我在kconfig中添加devfs支持时,编译并没报错呢
不过也罢了,反正现在我做的驱动都是用udev
作者: joshuazzh    时间: 2008-08-13 14:14
原帖由 rodgerluo 于 2008-8-13 10:52 发表
看来有空我也要把u-boot-1.3.3.tar.bz2再移植一下了,加上yaffs2功能试试。

您最好一步一步来
先添加uboot对nand的支持
然后在在这个基础上添加对yaffs烧写的支持
这样分步骤容易排错
一步一步来
作者: joshuazzh    时间: 2008-08-13 14:16
原帖由 sep 于 2008-8-13 14:12 发表

那为什么我在kconfig中添加devfs支持时,编译并没报错呢
不过也罢了,反正现在我做的驱动都是用udev

那您在make menuconfig的时候进去把相应的那几项选中编译进内核了吗
我估计您只是修改了那个地方
但是配置的时候是没有添加这个的
我实验过
肯定编译不过去会报错的
作者: sep    时间: 2008-08-13 14:17
原帖由 joshuazzh 于 2008-8-13 14:16 发表

那您在make menuconfig的时候进去把相应的那几项选中编译进内核了吗
我估计您只是修改了那个地方
但是配置的时候是没有添加这个的
我实验过
肯定编译不过去会报错的

添加了,何况我已经default y了
就算忘记配置,也会默认是y
作者: joshuazzh    时间: 2008-08-13 14:22
标题: 出问题的地方
出问题的地方就是我判断的那个地方
mkyaffsimage工具的问题

给出的大家解决思路
先通过网络文件系统nfs把系统给启动起来
把/dev/mtdblock2即文件系统对样的分区挂在到/mnt下
然后再将文件系统直接cp到mnt中(这里有技巧,链接文件是不能拷贝的,你直接拷贝容量将大大超过64m NANDFLASH的容量,把busybox给拷贝了,其他的自己做链接,这个可是体力活,做好写个脚本,以后就不要一个一个链接了)
卸载重启成功!!!!!!!!!
这样就直接绕过了yaffs的烧写出错过程
!!!!!!!!!!!!!!
作者: joshuazzh    时间: 2008-08-13 14:26
原帖由 sep 于 2008-8-13 14:17 发表

添加了,何况我已经default y了
就算忘记配置,也会默认是y


呵呵
那我也不知道了
我觉得思路是这样
2.6.18以后的内核的发展思路是把以前版本中内核支持的devfs功能给彻底del掉了
而这部分功能由转移到有文件系统busybox、udev来完成
难道google一下没有看到过我这个说法吗
大部分2.6.18以后的内核都没有添加devfs的说法了
作者: rodgerluo    时间: 2008-08-13 14:27
标题: 回复 #25 joshuazzh 的帖子
我在u-boot-1.1.4.tar.bz2中已经完成了Nand boot的移植和tftp boot,在1.1.6中搞了一下就没有做了。现在最新版本是1.3.4
作者: joshuazzh    时间: 2008-08-13 14:33
原帖由 rodgerluo 于 2008-8-13 14:27 发表
我在u-boot-1.1.4.tar.bz2中已经完成了Nand boot的移植和tftp boot,在1.1.6中搞了一下就没有做了。现在最新版本是1.3.4


官方下载网站
http://www.busybox.net/downloads/
busybox都有1.11.1了
发展真是惊人
不版本差异不是那么重要
高版本的低版本的思路都是一样的
作者: rodgerluo    时间: 2008-08-13 14:35
标题: 回复 #31 joshuazzh 的帖子
但高版本的支持更多的设备和功能。
作者: joshuazzh    时间: 2008-08-13 14:38
原帖由 rodgerluo 于 2008-8-13 14:35 发表
但高版本的支持更多的设备和功能。


对,支持跟多的设备驱动等!
作者: sep    时间: 2008-08-13 14:38
原帖由 joshuazzh 于 2008-8-13 14:22 发表
出问题的地方就是我判断的那个地方
mkyaffsimage工具的问题

给出的大家解决思路
先通过网络文件系统nfs把系统给启动起来
把/dev/mtdblock2即文件系统对样的分区挂在到/mnt下
然后再将文件系统直接cp到mn ...

你这个办法很不错,绕开了vivi的烧写。但这样做,你这个文件系统是什么?
另外,我也知道2.6.24内核已经删除devfs的代码,但是别人都是这样做,编译也没错误(我现在在公司的电脑重新编译了下,依然没问题)。之前觉得添加devfs支持的必要是:要在/dev目录下添加console和null节点,如果没有devfs支持的话,会跑不起来。
我今晚试下把devfs去掉,看系统是否还能跑起来
作者: joshuazzh    时间: 2008-08-13 14:47
原帖由 sep 于 2008-8-13 14:38 发表

你这个办法很不错,绕开了vivi的烧写。但这样做,你这个文件系统是什么?
另外,我也知道2.6.24内核已经删除devfs的代码,但是别人都是这样做,编译也没错误(我现在在公司的电脑重新编译了下,依然没问题) ...

我的内核中就没有添加devfs
相应的措施就是在文件系统的
/dev下面添加console和null两个设备文件,添加udev支持
这样完全可以取代devfs的功能
您可以试试

其实问题的实质应该还是在mkyaffsimage有问题
现在只是通过其他的法子绕过去了而已
并没有彻底解决
要彻底解决还是要从mkyaffsimage源代码入手修改

文件系统类型
应该是yaffs 因为我内核中仅仅配置了yaffs文件系统的
但是还要验证
上午只是进行了初步验证
还有很多详细的工作要做
bin中的连接文件我都没有加
还要一个一个的添加连接
如果能够读写应该就可以确定是yaffs了
应该没有问题的
有个牛人一直是这样做的
好处就是绕开了yaffs烧写这个麻烦点
作者: sep    时间: 2008-08-13 14:53
原帖由 joshuazzh 于 2008-8-13 14:47 发表

我的内核中就没有添加devfs
相应的措施就是在文件系统的
/dev下面添加console和null两个设备文件,添加udev支持
这样完全可以取代devfs的功能
您可以试试

其实问题的实质应该还是在mkyaffsimage有问题 ...

好的。谢谢。
你最好整理一下,贴到一楼去,叫bz加个精,不少兄弟挂在yaffs了
作者: T-bagwell    时间: 2008-08-13 16:37
我用的是2.6.24,引导过我自己的板子,make menuconfig选好yaffs后和crc校验后,启动是正常的
不选的话,也出过楼主说的问题
说白了就是不支持yaffs的问题
我当时的分析思路是,能挂cramfs不能挂yaffs,那应该就是yaffs不支持了,所以就找了找支持yaffs的资料,选好后,启动就挂上了

是啊,整理篇帖子发出来,大伙一起学习一下
斑竹肯定能加精的,毕竟是比较经典的问题处理

[ 本帖最后由 T-bagwell 于 2008-8-13 16:40 编辑 ]
作者: vitoUNIX    时间: 2008-08-13 16:43
强贴 我再留个名
作者: sep    时间: 2008-08-13 16:54
楼主一直用“您”,不是很习惯啊
作者: T-bagwell    时间: 2008-08-13 17:00
是啊,老不习惯了
作者: vitoUNIX    时间: 2008-08-13 17:43
适应适应适应!!!
作者: joshuazzh    时间: 2008-11-03 09:20
补充:不要去费力写脚本cp链接文件了


将做好的文件系统先打包
将之cp到挂在/mnt目录下的的yaffs分区中
cp完了之后再解压
这样链接文件也会同样给cp进去(直接cp文件系统的话会将链接文件当场原文件cp的,导致链接文件没了)
作者: kmf126    时间: 2009-04-24 08:53
我的yaffs 系统也出现了这种情况啊 ,大家有没有解决方法啊
作者: shuiyu123    时间: 2009-05-06 21:23
这个问题和我出现的一样!不过楼主提供不错的建议!
我正在学习使用中!谢谢了!

----------------
-joshuazzh -
----------------
作者: 小超hide    时间: 2009-07-03 19:40
我用uboot,linux2.6.25内核,yaffs2文件系统
也是这个问题,搞了一个星期,问了好多人没人结果
原来真的是mkyaffsimage的问题,我今天用了一个新版本的制作yaffs,居然能挂上了,兴奋死了

如果用mdev,而且/dev建立了console null节点,仍然出现这个问题,不用找别的原因了,就是mkyaffsimage在搞鬼
作者: wanghelou123    时间: 2011-08-10 10:23
我也遇到同样的问题了,不知道楼主是怎么解决的?
作者: chdlx    时间: 2012-06-12 22:01
你好,能不能把你用的那个工具发给我,在网上找了一个说可以用在2.6.24上,但是做了之后还是不行。。。。。。。回复 45# 小超hide


   
作者: 孤行者_cuit    时间: 2012-12-02 01:39
这个问题困扰我一周了,在判定是根文件系统有问题后,就没得思路了。此帖又让我看到曙光了,谢谢大家。
作者: duzhanhui    时间: 2014-08-06 17:00
我也遇到同样的问题了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2