问题背景:
最近在做飞思卡尔公司的imx6ul平台的BSP开发的时候遇到这样一个问题:我要移植公司POS之前的文件系统到新的开发板imx6ul平台,文件系统的类型为ext4。在内核引导加载文件系统的时候出现如下错误:
我的开发板是从SD卡启动,分区如下图:
在Linux-2.6.32之前版本的Linux内核没有这个错误,而我这次开发使用的内核版本为3.14.38,出现了这样的错误。后来百度之后发现导致错误的原因是:内核启动参数中如果没有指定系统根分区的文件系统类型时,内核会自动启猜测根分区的文件系统类型,而不同版本的内核猜测的顺序是不同的。一般2.6.32版本的内核猜测文件系统的顺序为:ext4->ext3/ext2->ext2/ext3,而我使用的3.14.38版本的内核根据错误打印信息可以知道,猜测内核版本的顺序为:ext3->ext2->ext4。
解决方法:
修改u-boot中传给内核的启动参数,添加rootfstype = ext4参数,指定根分区的文件系统类型。