让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
 
posted @ 2021-09-24 15:08  园友1683564  阅读(1041)  评论(0编辑  收藏  举报