如何告诉 Linux initramfs 在 RAM 中的位置

如何告诉 Linux initramfs 在 RAM 中的位置

我正在尝试使用由引导加载程序复制到 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

由于缺乏这方面的文档,我怀疑我是否朝着正确的方向前进,或者是否偏离了方向。

相关内容