20

No init found:嵌入式Linux文件系统加载失败

问题描述

文件系统加载不成功,报错:No init found,如图(其中包含调试打印)
图片说明

制作材料及过程

硬件:s3c2440芯片,256M Nand Flash

软件:用了现成的boot,内核是2.6.32,busybox是1.13.3,编译器是arm-linux-gcc 4.4.3,文件映像制作工具为mkyaffs2image-128M(由于FLASH使用的是256M)
制作过程:编译内核、busybox,制作/dev/console和/dev/null的node,制作/lib库,编写/etc/inittab

初步分析

编译均成功,从打印来看,boot成功引导内核,内核也已经起来了,且进入了kernel_init的init_post

图片说明

也就是说,几个run_init_process函数都没跑成功,但文件系统中/sbin/init是存在的

图片说明

跟踪run_init_process函数:run_init_process-->kernel_execve-->do_execve-->count,是在count处出错了,我把argc打出来是-14

图片说明

进入count函数,发现时get_user出错了,EFAULT就是14

图片说明

get_user是内核态用来从用户态读数据的函数,但里面已经是嵌入汇编代码了,实在分析不了了……

哪位高手可以帮忙分析一下,或者以前碰到类似情况,知道如何解决的,谢谢!

查看全部
u011670962
肯德德
2018/05/11 15:12
  • linux
  • 文件系统
  • 嵌入式
  • 点赞
  • 收藏
  • 回答
    私信
满意答案
查看全部

3个回复