|
发表于 2012-12-24 09:16:39
|
显示全部楼层
问题:yaffs: dev is 32505858 name is "mtdblock2"
yaffs: passed flags ""
yaffs: Attempting MTD mount on 31.2, "mtdblock2"
yaffs_read_super: isCheckpointed 0
VFS: Mounted root (yaffs filesystem) readonly on device 31:2.
devtmpfs: error mounting -2
Freeing init memory: 120K
Failed to execute /linuxrc. Attempting defaults...
Kernel panic - not syncing: No init found. Try passing init= option to kernel.
解决:1.启动命令有问题,根据查看分区信息(supervivi:part show)得知root分区在mtdblock3上,不是在2上
修改为:noinitrd root=/dev/mtdblock3 init=/linuxrc console=ttySAC0
2.问题依旧,重新make menuconfig,并对比友善之臂提供的mini2440源代码配置,重新选择,
Device Driver ->Generic Driver Options ->(取消)devtmpfs: error mounting -2被解决了,
但是依然无法启动继续查看。
3.系统在启动过程中出现了很多yaffs: block 456 is marked bad,block 457 is bad这样的错误,越来越多,通过网上搜寻找到解决办法:
我用的是板子自带的supervivi,使用命令bon part 0,就起到格式化整个Nand Flash芯片的作用,假坏块自然就化为乌有了。随后问题就柳暗花明。
4.将mini2440自带的文件系统重新烧如板子,用mini2440自带的内核文件启动,正常,说明文件系统没有问题,将自己编译的内核下载进去,依然无法启动,
5.添加一些内核输出信息,终于发现内核在:search_binary_handler()函数中的fn(bprm, regs)函数后,执行失败了。非常郁闷...
6.文件系统没有问题,显然还是内核编译有问题,然后通过网上查找说是load_elf_binary执行有问题,可能是加载文件系统的文件时不识别文件格式,于是
重新make menuconfig最后发现原来是要将General setup --->Choose SLAB allocator --->选上SLAB,不要选择SLUB。重新make |
|