No filesystem could mount root, tried: ext3 ext2 ext4 vfat msdos
kernel: 4.0.rc3
rootfs: ramdisk
我正在做kernel对ramdisk的挂载测试,标题只是最后一句打印出错的地方,经过debug后知道了在启动时对rootfs进行挂载的流程。开始是调用populate_rootfs进行ramdisk进行挂载。但是如果要是出了问题呢?没有关系,忽略就好。上面这个流程走完后,接下来就是检测init文件存在不存在,如果不存在那么说明rootfs挂载有问题,就再把支持的所有文件系统都挂载试试。如果都不行,那么就会打印出如标题错误,内核不再启动。
那么重点就出在了第一个阶段,在不成功的时候给catch住了,其实如果不成功的话,会同时打印出Trying to unpack rootfs image as initramfs…后一句rootfs image is not initramfs (no cpio magic); looks like an initrd。当然括弧中的错误还会有以下几中:
- no cpio magic
- incorrect cpio method used: use -H newc option
- junk in compressed archive
- …
ramdisk是bootloader帮助内核弄到ram中的,如果确认没有制作上的错误,那么就是bootloader这点上没有支持好。