让linux kernel从指定的内存物理地址加载rootfs initramfs


1.  dtb添加linux,initrd-start 和 linux,initrd-end:

chosen {
  bootargs = "console=ttyAMA0,115200 loglevel=7 panic=3 isolcpus=1";
  linux,initrd-start = <0x10000000>; //uboot代码设置的物理地址
  linux,initrd-end = <0x10800000>;
}

2.  用menucinfig一次打开

  General setup -》 Initial RAM filesystem and RAM disk (initramfs/initrd) support

3.  把rootfs,也就是 rootfs.cpio提前用bootloader搬运到 linux,initrd-start 处

  另请参考:https://blog.csdn.net/yiyeguzhou100/article/details/78419293

在qemu上可以这么做:

qemu_bin/qemu-system-riscv64 \

-smp 1 \ -machine virt \ -nographic \ -m 1G \ -kernel opensbi/build/platform/virt/firmware/fw_payload.elf \ -device loader,file=buildroot/output/images/rootfs.cpio,addr=0x10000000,force-raw=true