부트로더가 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
bootargs를 얻었습니다.rd_size
여기원래 제안한 사람이 StackExchange 질문.
mount_block_root()
커널 패닉의 스택 추적에서 initramfs가 호출되어 실패하기 때문에 잘못된 initramfs(ext4)를 사용하고 있는지 의심됩니다 . 그러나 당황하기 전에 인쇄됩니다.
No filesystem could mount root, tried: ext3 ext4 ext2 cramfs vfat msdos btrfs
이에 대한 문서가 부족하여 내가 올바른 방향으로 가고 있는지, 아니면 궤도를 벗어나고 있는지 의문이 듭니다.