7

我正在尝试设置一个 Arch 图像并使用 qemu 来交叉编译一些东西,然后再将图像加载到 Pi 上。我认为最简单的方法是 qemu 最新的启动映像,用我需要的任何东西准备它,然后在我完成后将它 dd 到 Pi 上。

我从http://downloads.raspberrypi.org/arch_latest下载了 Arch 图像,并希望在类似于http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/的 Qemu 下运行它。

我在他们提供的 qemu 命令行上尝试了许多变体

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-25-wheezy-raspbian.img

替换archlinux-hf-2013-07-22.img。但这最终导致“内核恐慌 - 不同步:未找到 init。尝试将 init= 选项传递给内核”

我确定这意味着我下载的 kernel-qemu 不能与 Arch 映像一起使用,但我不确定解决问题的正确方法。

编辑:

当我使用上面的命令行时,即使是最新的 Raspbian 映像内核也会崩溃。我想这不应该让我感到惊讶,因为它很可能是一个旧内核。

所以我想我真正的问题是,如何使用映像中包含的任何内核,而不必构建自己的内核?

4

2 回答 2

7

如果 archlinux-hf-2013-07-22.img 这里有 3 个分区。你可以通过使用检查

fdisk -l archlinux-hf-2013-07-22.img

rootfs is in sd5 i.e 5th partion.

所以通过这个参数"root=/dev/sda5 panic=1",它会完美启动。

于 2013-09-13T06:51:10.603 回答
3

2013-05-25-wheezy-raspbian.img 您可以对两个图像使用相同的内核。

在这里你必须评论ld.so.preload哪些将加载一些共享库,这将无法登录。所以内核恐慌。

Note:-"root=/dev/sda2 panic=1" pass this parameter only.

您可以通过以下方式对其进行评论。

sudo kpartx -av 2013-05-25-wheezy-raspbian.img

mkdir tmp

sudo mount /dev/mapper/loop0p2 tmp/

cd tmp/etc

sudo vi ld.so.preload /usr/lib/arm-linux-gnueabihf/libcofi_rpi.so 注释

#/usr/lib/arm-linux-gnueabihf/libcofi_rpi.so

umount /dev/mapper/loop0p2 kpartx -d 2013-05-25-wheezy-raspbian.img

然后运行 ​​qemu

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-25-wheezy-raspbian.img

这将完美启动而没有任何麻烦

于 2013-09-13T07:08:19.543 回答