我正在尝试使用由引导加载程序复制到 RAM 中的 initramfs 来引导在 Xen 之上运行的 Linux 内核。
在设备树中,我取出了一块内存,这样内核就不会覆盖我将 initramfs 复制到的区域。
memory {
device_type = "memory";
- reg = <0x0 0x0 0x0 0x80000000 0x8 0x0 0x0 0x80000000>;
+ reg = <0x0 0x0 0x0 0x60000000 0x8 0x0 0x0 0x80000000>;
};
在 uboot 中时,我将 initramfs 复制到0x60000000
一个带有 dom0 内核、设备树和 xen 映像的 fitimage,然后0x8000000
启动。
我的 dom0 引导参数是
xen,dom0-bootargs = "console=hvc0 earlycon=xen earlyprintk=xen rootdelay=1 root=/dev/ram0 rw rd_start=0x60000000 rd_size=0x114a3000 clk_ignore_unused";
我从得到了rd_start
和bootargsrd_size
这里最初是从建议的这个 StackExchange 问题。
我怀疑我是否使用了不正确的 initramfs (ext4),因为在内核恐慌的堆栈跟踪中,mount_block_root()
被调用并失败。然而,在恐慌之前它打印
No filesystem could mount root, tried: ext3 ext4 ext2 cramfs vfat msdos btrfs
由于缺乏这方面的文档,我怀疑我是否朝着正确的方向前进,或者是否偏离了方向。