日期:2014-05-16  浏览次数:20642 次

arm上启动内核问题
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) readonly on device 31:2.
Freeing init memory: 144K
Warning: unable to open an initial console.
Failed to execute /linuxrc,115200. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
[<c00329f8>] (unwind_backtrace+0x0/0xdc) from [<c02d7e6c>] (panic+0x40/0x118)
[<c02d7e6c>] (panic+0x40/0x118) from [<c002c58c>] (init_post+0xcc/0xf4)
[<c002c58c>] (init_post+0xcc/0xf4) from [<c00085c0>] (kernel_init+0xdc/0x10c)
[<c00085c0>] (kernel_init+0xdc/0x10c) from [<c002de14>] (kernel_thread_exit+0x0/0x8)

linux_cmd_line="root=/dev/mtdblock2 init=/linuxrc,115200 console=ttySAC0"

各位请帮忙看一下,问题何在?如何解决?

------解决方案--------------------
linux_cmd_line="root=/dev/mtdblock2 init=/linuxrc,115200 console=ttySAC0"

改为
linux_cmd_line="root=/dev/mtdblock2 init=/linuxrc console=ttySAC0,115200"
------解决方案--------------------
原来是mini2440啊
根据Copy linux kernel from 0x00060000 to 0x30008000, size = 0x00500000 看得出内核镜像分区大小是5m
而老版本的内核镜像只有2m大

如果你是1G NAND的那种mini2440,直接烧最新的光盘里的就好了(vivi、linux、yaffs全部更新)
如果是老的64M NAND的mini2440,最新光盘里的内核镜像是不能用的,需要手动更改源码里分区的大小

现在Failed to execute /linuxrc. Attempting defaults... 的问题,明确是内核认为的yaffs镜像开始的地址跟vivi把yaffs实际烧写到的地址不一致。
该内核源码或者vivi,让这个地址一致就好了
------解决方案--------------------
在启动信息里,通篇没有找到mtd被检测到的消息
你的内核里是否把mtd驱动选中
------解决方案--------------------
不介意的话,看看我整理的移植文章,没有可以宣传。呵呵,很认证的记录了我移植过程中的问题。
(ps:这个问题是内核移植中的经典问题,文章中有提到,本人比较笨,走了不少弯路,但是把走的弯路都记录下来了……)
http://blog.csdn.net/dreambegin/article/details/6904822