如题:
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看下。