【发布时间】:2016-12-14 17:23:18
【问题描述】:
我正在尝试使用 QEMU 在 Raspian OS 中模拟 Raspberry Pi。我尝试了互联网上描述的几种方法,但没有任何成功。
我发现我需要修补适合所需操作系统的 Linux 内核。就我而言,我选择了带有 Kernel 4.4 的 Rasbian Lite:
wget https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2016-05-31/2016-05-27-raspbian-jessie-lite.zip
unzip 2016-05-27-raspbian-jessie-lite.zip
rm 2016-05-27-raspbian-jessie-lite.zip
接下来我从https://www.kernel.org/加载一个内核:
wget https://www.kernel.org/pub/linux/kernel/v4.x/linux-4.4.16.tar.gz
tar -xzf linux-4.4.16.tar.gz
rm linux-4.4.16.tar.gz
现在交叉编译内核:
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabi-
cd linux-4.4.16
make vexpress_defconfig
make all
cd ..
现在我可以将启动映像(即在 RAM 中自动提取的压缩内核映像)复制到我的工作区:
cp linux-4.4.16/arch/arm/boot/zImage zImage
并运行 QEMU
qemu-system-arm -kernel zImage -M vexpress-a9 -m 1024 -cpu cortex-a9 -no-reboot -serial stdio -hda 016-05-27-raspbian-jessie-lite.img -append "root=/dev/sda2 rootfstype=ext4"
但我看到的只是一个黑色填充的 QEMU 窗口。 :(
我认为问题在于获得正确的内核。从 Internet 复制一些内核从未成功,因为它们不适合操作系统。
如何构建/修补适合操作系统的内核(无需下载现有内核)以及如何正确运行 QEMU?
提前致谢
亚历克斯
第二种方法
我从这里https://www.dropbox.com/s/g8u93xblz1v1ly0/kernel-qemu?dl=0 加载一个kernel-qemu 并用它运行QEMU:
qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2" -hda 2016-05-27-raspbian-jessie-lite.img
这给我带来了以下输出: 这对我来说很有意义,因为内核是 3.10.25 并且比内核 4.4.16 的 Raspbian Jessie 更早。
使用来自https://github.com/dhruvvyas90/qemu-rpi-kernel/blob/master/kernel-qemu-4.4.12-jessie的qemu-kernel
qemu-system-arm -kernel kernel-qemu-4.4.12-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img
使用新 kernel-qemu 4.4.16 的新尝试:
-
从 https://github.com/dhruvvyas90/qemu-rpi-kernel/tree/master/tools 复制 build-kernel-qemu 并添加以下行以检查 Kernel 4.4.16 的版本:
git checkout b05965f284db3e086022f4e318e46cb5bffb1376 -
运行
build-kernel-qemu构建内核sh build-kernel-qemu -
运行QEMU
qemu-system-arm -kernel kernel-qemu -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda 2016-05-27-raspbian-jessie-lite.img
【问题讨论】:
-
在您的第一种方法中,您在 qemu 命令中包含了
-m 1024,该命令由于 qemu 错误而无法工作。您是否也尝试过使用-m 256的这种方法,正如您在其他方法中看到的那样? -
还没有 - 但感谢这个提示
标签: linux linux-kernel raspberry-pi raspbian qemu