新手求助,Linux内核无法挂载根文件系统

podjman 2014-05-22 07:02:52
一块开发板,厂商已经提供好了uboot,kernel,ramdisk文件系统跟安卓镜像
有:uboot.bin, zImage, ramdisk-uboot.img, system.img, userdata.img, ramdisk-recovery-uboot.img

现在我想换一个内核,就自己编译了一个zImage出来,然后烧写进去(其他都不变)。

启动的时候出现了:EXT4-fs (mmcblk0p2): VFS: Can't find ext4 filesystem,然后就死在这里了。

部分启动信息:
[    3.360720] S5P TVOUT Driver v3.0 (c) 2010 Samsung Electronics
[ 3.388403] Freeing init memory: 200K
[ 3.401915] init (1): /proc/1/oom_adj is deprecated, please use /proc/1/oom_s
core_adj instead.
[ 3.470702] init: # ro.utmodel=s901
[ 3.472741] init: # ro.lcd=ut9gm
[ 3.475985] init: # ro.came=
[ 3.478814] init: # ro.codec=wm8978
[ 3.482304] init: # ro.bt=
[ 3.484977] init: # ro.wifi=
[ 3.487854] init: # ro.gps=
[ 3.490632] init: # ro.eth=
[ 3.493396] init: # ro.fm=
[ 3.496102] init: # ro.gsmd=
[ 3.498951] init: # ro.nfc=
[ 3.501742] init: # ro.ls=
[ 3.504420] init: # ro.motor=
[ 3.507389] init: # ro.lcdRGB=
[ 3.510430] init: # ro.oem=
[ 3.513188] init: # ro.serialno=ExynosMID
[ 3.517196] init: # ro.macw=
[ 3.520059] init: # ro.macb=
[ 3.671825] EXT4-fs (mmcblk0p2): VFS: Can't find ext4 filesystem
[ 10.605266] mmc_sd_detect(mmc0): Unable to re-detect card (-123)
[ 10.609819] mmc0: card 1234 removed
[ 12.345394] mmc0: new high speed SDHC card at address 1234
[ 12.349739] mmcblk0: mmc0:1234 SA04G 3.63 GiB
[ 12.355471] mmcblk0: p1 p2 p3 p4
[ 12.357310] mmcblk0: p1 size 5985144 extends beyond EOD, truncated
[ 63.520189] failed to copy MFC F/W during init


内核以配置成支持EXT4文件系统

我插拔内存卡也有信息输出,证明内核已经启动,但是根文件系统挂在失败,然后再过一会就会出现:
init: cannot find '/system/bin/vold', disabling 'vold'
.......

我看了这里的帖子http://bbs.csdn.net/topics/360241422,按照里面的一个方法修改了efi.c,但是无效。

我编译出来的内核只有3.17M,而厂商提供的内核有3.96M,会不会是内核大小的原因呢?

求各路大神帮我分析一下,谢谢
...全文
1253 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
曹大夯 2014-06-05
  • 打赏
  • 举报
回复
厂商提供的zimg启动的时候启动日志是怎么样的?试着对比一下。
podjman 2014-05-22
  • 打赏
  • 举报
回复
同样的uboot跟文件系统,可是厂商提供的内核就跑得起来,我移植的内核就跑步起来。我想问题可能出在内核里。会不会是内核大小的问题呢?
podjman 2014-05-22
  • 打赏
  • 举报
回复
厂商提供的uboot里的各个参数都设定好了,有些内容很奇怪:
SMDK4412 # p
baudrate=115200
bltype=no
bootargs=ddr=77 tmu=no macID= dock=n tp= umsvor= umspct= battery= plug= bltype=n
o amp= motor_value= utmodel=s901 lcd=ut9gm came= codec=wm8978 bt= wifi= gps= eth
= fm= gsmd= nfc= ls= motor= lcdRGB= oem= E
bootcmd=setddrV 5;movi r k 0 40008000;movi r rootfs 0 41000000 100000;bootm 4000
8000 41000000
bootdelay=1
ddr=77
lcd=ut9gm
serialno=ExynosMID
test10=dnw 40008000;emmc open 0;mmc write 0 0x40008000 0x0 0x800;emmc close 0
test11=dnw 40008000;emmc open 1;mmc write 1 0x40008000 0x0 0x800;emmc close 1
test2=dnw 40008000;movi read rootfs 0 41000000 100000;bootm 40008000 41000000
test3=dnw 40008000;dnw 40d00000;bootm 40008000 40d00000
update=mmc rescan 1;fatload mmc 1 40000000 utscript_1st;source 40000000;
utmodel=s901
启动参数我加入到内核里了
podjman 2014-05-22
  • 打赏
  • 举报
回复
引用 1 楼 cumtgao 的回复:
你直接拿个内核就烧肯定不行了,文件系统存在于什么位置至少设置一下吧
嗯,这点我也有考虑过,这是文件系统的信息:
Boot with zImage
## Loading init Ramdisk from Legacy Image at 41000000 ...
   Image Name:   ramdisk
   Image Type:   ARM Linux RAMDisk Image (uncompressed)
   Data Size:    170000 Bytes = 170000    Load Address: 40800000
   Entry Point:  40800000
这是我的bootargs:
console=ttySAC2,115200 init=/init root=/dev/block/mmcblk0p2
之前也修改过bootargs,结果也无法启动。
wesley 2014-05-22
  • 打赏
  • 举报
回复
你直接拿个内核就烧肯定不行了,文件系统存在于什么位置至少设置一下吧
在嵌入式Linux下,设备树(device tree)用来描述硬件平台的各种资源,Linux内核在启动过程中,会解析设备树,获取各种硬件资源来初始化硬件。设备树的overlay功能是指可以在系统运行期间动态修改设备树。一般情况下,如上图所示,设备树经过DTC编译器编译为二进制的hello.dtb文件,加载到内存,随Linux内核一起启动后,一般就无法更改了。如果我们想修改设备树,需要修改hello.dts文件文件,重新编译成二进制文件:hello.dtb,然后重新启动内核,重新解析。有了设备树的overlay功能,省去了设备树的重新编译和内核重启,我们可以直接编写一个设备树插件:overlay.dts,编译成overlay.dtbo后,直接给设备树“打补丁”,在运行期间就可以动态添加节点、修改节点...设备树的overlay功能,在很多场合都会用得到,会让我们的开发更加方便:外界插拔设备,无法在设备树中预先描述:耳机树莓派 + FPGA开发板基于I2C的温度传感器管脚的重新配置:PIN multiplexing修改bootcmd、分区...设备树的overlay功能,目前还没有加入到内核mainline(linux-5.10.x),但目前有些开发板和配套的BSP已经支持了,支持在系统运行期间动态修改设备树文件。如果你手头的开发板或内核平台还没有支持device tree overlay,可以学习本期课程,学习内核中设备树overlay的实现原理,如何给内核打补丁,使内核支持设备树的overlay功能。有了本期课程的学习基础,明白了设备树overlay的实现原理和运行机制,你就可以尝试在自己的开发板平台上实现这个功能了。本期课程的主要内容如下:在开发板上如何实现设备树的overlay功能Configfs文件系统的配置与挂载Configfs编程接口如何编写设备树 overlay插件设备树 overlay的编译和运行设备树overlay运行机制分析本期课程适合哪些人学习:嵌入式驱动工程师嵌入式BSP工程师嵌入式软件工程师想从事嵌入式开发的同学全网首家讲解设备树overlay的视频教程。   

21,597

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧