我正在尝试设置Arch图像并使用qemu以便在将图像加载到Pi之前交叉编译一些内容。我认为最简单的方法是使用最新的初始图像,用我需要的任何东西做好准备,然后在我完成时将它放到Pi上。
我从http://downloads.raspberrypi.org/arch_latest下载了Arch图像,并希望在Qemu下运行它,类似于http://xecdesign.com/qemu-emulating-raspberry-pi-the-easy-way/。
我在他们给出的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图像内核也会发生混乱。我想这不应该让我感到惊讶,因为它很可能是一个旧内核。
所以我想我的真正问题是,如何使用图像中包含的内核,而不是必须构建自己的内核?
答案 0 :(得分: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"
,它将完美启动。
答案 1 :(得分: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
这将毫无困难地完美启动