让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