|
|
请教2.6内核中initramfs_data.cpio.gz,和内核启动参数中的"initrd=0x00400000,0x20000"指定的initrd,以及"root=/dev/ram"指定的根设备的作用和区别
问题起因:
用的是arm linux 2.6.12,编译选项打开了CONFIG_BLK_DEV_INITRD以支持initrd,
把ramdisk.img放在开发板的0x00400000地址处,并在启动参数中通过"initrd=0x00400000,0x20000"告诉内核initrd的地址,同时有"root=/dev/ram"参数,内核成功启动,并以ramdisk.img为最后登陆看到的根文件系统"/", 这里initrd和/dev/ram是什么关系了?
修改参数调试:
1,把"root=/dev/ram"改成"root=/dev/mtdblock0"(/dev/mtdblock0是我nandflash的一个分区)后,会出现“RAMDISK: Couldn't find valid RAM disk image starting at 0”的提示,这个提示是检查initrd映像文件的类型时输出的,不能获得ramdisk的块的数目,然而内核仍然能够把mtdblock0 mount成用户空间根文件系统,只是再接着执行init时出错,这是因为我的mtdblock0中没有init程序,属正常
2,去掉"root=/dev/ram",只留下"initrd=0x00400000,0x20000"参数,仍然有“RAMDISK: Couldn't find valid RAM disk image starting at 0”的提示,但内核mount不到根文件系统,出错
这个"initrd="指定的ramdisk映像和"root="指定的根设备关系怎样的了?
谢谢! |
|