因项目的需要,文件系统需要变换为UBIFS。UBIFS从设计以及性能都优越于YAFFS2,特别是工作在大页MLC NAND FLASH上面。
由于手上有一份君正的2.6.24的BSP,里面有ubifs相关,就移植了相关代码,但是最后从ubifs 卷启动发现错误:
UBIFS error (pid 1): ubifs_get_sb: cannot open "/dev/root", error -22
经过分析应该是Kernel CMD LINE传的参数,Kernel不认。
解决方法:
进入Kernel/init/do_mounts.c
进入prepare_namespace函数:
将 if (saved_root_name[0]) {
root_device_name = saved_root_name;
if (!strncmp(root_device_name, "mtd", 3)) {
mount_block_root(root_device_name, root_mountflags);
goto out;
}
改为:
if (saved_root_name[0]) {
root_device_name = saved_root_name;
if (!strncmp(root_device_name, "mtd", 3) ||
!strncmp(root_device_name, "ubi", 3) ||
!strncmp(root_device_name, "mmc", 3)) {
mount_block_root(root_device_name, root_mountflags);
goto out;
}
解决问题。