q109789 发表于 2010-1-24 13:46:34

uboot加载liinux内核后启动提示kernel panic

uboot加载编译后的linux内核到内存中,然后用bootm 0x1000000启动后提示:
VFS: Mounted root (ext2 filesystem).
Freeing init memory: 100K
Warning: unable to open an initial console.
Kernel panic - not syncing: No init found. Try passing init= option to kernel.

然后如果不从内存中启动,直接从nor flash启动内核则可以正常启动,证明busybox文件系统没有问题。查看了uboot传给内核的参数,也是一样的。
在网上搜索都没有找到最后的解决办法。

有没有高手可以帮忙啊?

517456 发表于 2010-1-24 14:20:52

你应该用的RAMDISK。你虽然把内核加进内存了,但是文件系统没加进内存。UBOOT工作的时候是把内核和文件系统一起加进内存然后才执行内核程序的。

q109789 发表于 2010-1-24 20:38:04

可是用另一个编译好的内核用同样的方法加到内存里,却可以正常运行.
两个内核编译的时候.config文件都是一样的。源码也都是2.6.27的。
好奇怪

517456 发表于 2010-1-24 21:01:00

先不谈管不管用,能从NORFLASH启动说明你的内核是可以使用的,一般来说采用RAMDISK的时候uboot会把其文件系统复制到内存中(cp.b 0x???????? 0x????????)执行完之后才会进行bootm,这样你想在uboot中使用bootm之前需要先执行cp.b。当然这一步除了可以在uboot中执行外也完成可以加到linux内核中由内核来完成。

q109789 发表于 2010-1-25 23:38:04

哦,不好意思,我意思没表述清楚,从NORFLASH启动的时候是因为FLASH里存的是另一个好的内核。把自己编译这个内核下进去以后也是出现kernel panic的现象。

jordonwu 发表于 2010-1-26 09:29:51

这是你kernel里的tty设备和busybox的tty设备没匹配导致的

q109789 发表于 2010-1-26 23:35:22

听一个同事说是内核用不同的编译器编的话,文件系统要重编一下.还没来得及验证.不过总算有思路了.
谢谢两位的热心帮助!

watercat 发表于 2010-1-26 23:57:11

那个错误提示已经那么明显了,还要怎样说明?

Kernel panic - not syncing: No init found. Try passing init= option to kernel.

把你的 init 程序绝对路径用 init=<路径> 的方式加入到 uboot 的 bootcmd 变量里

xblandy 发表于 2010-1-27 01:16:59

呵呵,不要着急,慢慢弄,引起内核恐慌的原因或许很多呢。

q109789 发表于 2010-2-7 00:43:55

试过了重新编译文件系统仍然不行,还真不知道问题出在哪里了?
已经约了供应商FAE过来支持,不晓得能不能搞定.

这个问题应该算是好多人都会遇到的疑难问题之一,而大部分都没有找到解决办法.

quzegang 发表于 2010-2-7 01:09:58

以前遇到过类似的问题,不是编译器版本的问题,命令行参数是否正确的传递到内核了?VFS: Mounted root (ext2 filesystem)
你是否是用的ext2作为根文件系统?

q109789 发表于 2010-2-7 20:49:31

经过反复验证,确认应该是内核编译问题,只是什么情况下会把内核编出这种问题?uboot没有变化,传递参数应该没有问题.
页: [1]
查看完整版本: uboot加载liinux内核后启动提示kernel panic