当前位置: 代码迷 >> 驱动开发 >> 问大家一个题:kernel commond line 的root=/dev/设备名,这个设备名对文件系统是固定好的吗
  详细解决方案

问大家一个题:kernel commond line 的root=/dev/设备名,这个设备名对文件系统是固定好的吗

热度:449   发布时间:2016-04-28 10:55:44.0
问大家一个弱弱的问题:kernel commond line 的root=/dev/设备名,这个设备名对文件系统是固定好的吗?
如题:

kernel commond line 的root=/dev/设备名,这个设备名对文件系统是固定好的吗?

比如jffs2文件系统我用的是root=/dev/mtdblock4

其它 系统呢,比如yaffs ext2等?

这个东西的原理是什么呢?

------解决方案--------------------
不是的,是内核里德分区,如果你的yaffs是在mtdblock4,就写这个,具体要看struct mtd_partition这个结构体的定义
------解决方案--------------------
root是指定存放根文件系统的块设备分区,可以是flash分区、sd卡分区,nfs等等,总之只要该分区存放了根文件系统就可以引导系统,同时要指定该分区类型。
------解决方案--------------------

在kernel的arch/arm/mach-s3c2410目录里查看 mtd_partition

例如arch/arm/mach-s3c2410/mach-qt2410.c里

 
C/C++ code
static struct mtd_partition qt2410_nand_part[] = {         [0] = {                 .name   = "U-Boot",                 .size   = 0x30000,                 .offset = 0,         },         [1] = {                 .name   = "U-Boot environment",                 .offset = 0x30000,                 .size   = 0x4000,         },         [2] = {                 .name   = "kernel",                 .offset = 0x34000,                 .size   = SZ_2M,         },         [3] = {                 .name   = "initrd",                 .offset = 0x234000,                 .size   = SZ_4M,         },         [4] = {                 .name   = "jffs2",                 .offset = 0x634000,                 .size   = 0x39cc000,         }, };
------解决方案--------------------
首先参考#5楼woshi_ziyu的解释
至于你说“我的文件系统/dev下根本就没有mtdblock这样的设备”,那是因为root=/dev/xxx这个启动参数中,/dev只是一个约定前缀,它并不代表实际的文件系统中的/dev目录。关于这点,你可以man boot看下。
  相关解决方案