ramdisk是一种基于内存的文件系统(注意名字中有个ram),是使用BootLoader对应的工具制作的,会在BootLoader阶段load,加载到内存中(在U-Boot就是使用bootm这个指令来加载到内存中),ramdisk占用内存空间,不占用sd卡或硬盘空间。BootLoader将ramdisk镜像加载到内存中后,内核如果要用它作为根文件系统就在kernel command line 里设置root=/dev/ram。但是ramdisk的缺点很明显,因为是基于内存的根文件系统,所以直接对其进行的修改在掉电后是不会保存的,只能通过重新制作在进行修改,而且其占用内存空间,但内存空间往往很小。
使用基于存储器的根文件系统时,即root=/dev/mmc..,一般都要给 kernel command line 加上 rootwait这个选项,来避免加载根文件系统时,读写sd卡的驱动还没初始化完成。同时注意检查启动log的kernel command line 是否被BootLoader中的bootargs覆盖。
总结:
在移植linux时,多注意看启动时的log,如果是内核启动之前(如log没有打印到starting kernel)的问题,那么就去看Bootloader的配置是否正确,如果是之后,那就去看内核的配置是否有问题,如kernel command line 是否被BootLoader中的bootargs覆盖。
以上为最近在zedboard上弄xilinx linux的一些个人总结,之后再修改和补充。