initramfs가 RAM의 어디에 있는지 Linux에 알리는 방법

initramfs가 RAM의 어디에 있는지 Linux에 알리는 방법

부트로더가 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를 0x60000000dom0 커널, 장치 트리 및 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_startbootargs를 얻었습니다.rd_size여기원래 제안한 사람이 StackExchange 질문.

mount_block_root()커널 패닉의 스택 추적에서 initramfs가 호출되어 실패하기 때문에 잘못된 initramfs(ext4)를 사용하고 있는지 의심됩니다 . 그러나 당황하기 전에 인쇄됩니다.

No filesystem could mount root, tried: ext3 ext4 ext2 cramfs vfat msdos btrfs

이에 대한 문서가 부족하여 내가 올바른 방향으로 가고 있는지, 아니면 궤도를 벗어나고 있는지 의문이 듭니다.

관련 정보