如何为powerpc构建Linux内核并在qemu上启动它?

时间:2017-12-29 10:27:51

标签: linux linux-kernel qemu powerpc buildroot

我编译了一个linux内核并使用buildroot为64位powerpc生成根文件系统。目标CPU POWER7。

buildroot的输出:

1] rootfs.cpio 2] rootfs.ext2 3] rootfs.tar.gz 4] vmlinux

使用

启动qemu模拟
qemu-system-ppc64 -m 1024 -kernel output/images/vmlinux -initrd output/images/rootfs.cpio -serial stdio

- >输出: Output Of 1st command

qemu-system-ppc64 -M pseries -cpu POWER7 -m 1024 -kernel output/images/vmlinux -append 'console=hvc0 root=/dev/sda' -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio

- >输出: Output of 2nd command

我做错了什么,我该怎么做才能解决它?

2 个答案:

答案 0 :(得分:0)

你等了多久?我假设一段时间。在这种情况下,看起来内核在启动时很早就崩溃了,然后才能检测到控制台。如果你的内存太少,就会发生这种情况,但1G就足够了。如果你为错误的机器/ CPU类型构建内核,也可能发生这种情况,但你似乎已经做对了。

您可以尝试并且已知可以使用的一些说明here

答案 1 :(得分:0)

<强> Buildroot里面

https://buildroot.org/

我还没有专门针对powerpc测试它,但我敢打赌它只是开箱即用,就像我迄今为止尝试过的每个拱门一样(x86,ARM和MIPS): - )

只需按照How to download the Torvalds Linux Kernel master, (re)compile it, and boot it with QEMU?中说明的步骤操作,然后用ppc替换arm。

然后使用您自己的Linux内核源代码,基本上只需使用LINUX_OVERRIDE_SRCDIR,如下所述:How to modify the source of Buildroot packages for package development?

编辑:我知道这只是一种形式,但我在写完这个问题之后实际测试了下面的命令,开机按预期方式开箱即用:

unset LD_LIBRARY_PATH
make qemu_ppc64_pseries_defconfig
printf '
BR2_CCACHE=y
BR2_PACKAGE_HOST_QEMU=y
BR2_PACKAGE_HOST_QEMU_LINUX_USER_MODE=n
BR2_PACKAGE_HOST_QEMU_SYSTEM_MODE=y
BR2_PACKAGE_HOST_QEMU_VDE2=y
' >>.config
make olddefconfig
time make BR2_JLEVEL="$(nproc)" HOST_QEMU_OPTS='--enable-sdl --with-sdlabi=2.0'
./output/host/usr/bin/qemu-system-ppc64 -M pseries -cpu POWER7 -m 256 -kernel output/images/vmlinux -append 'console=hvc0 root=/dev/sda' -drive file=output/images/rootfs.ext2,if=scsi,index=0,format=raw -serial stdio -display curses