概要:使用命令qemu-system-arm
-M vexpress-a9
-m 512M
-dtb ../../../linux-4.9.268/arch/arm/boot/dts/vexpress-v2p-ca9.dtb
-kernel ../../../linux-4.9.268/arch/arm/boot/zImage
-append "root=/dev/mmcblk0 rw console=tty0"
-sd disk.img
时显示guest has not initialized the display (yet),而不使用图形界面-nographic时则直接卡死。
有两个原因。
1是kernel的版本太低(尝试过的版本有4.9.268、4.4.232)了。直接下新的长期维护的版本(4.19.321,记得在Makefile里指定CROSS_COMPILE为arm-linux-gnueabi-)。我一开始用的低版本导致汇编器一直报错。
2是之前失败的时候创建了一个控制台,在qemu菜单里“视图”选项那换一个控制台就可以。
推测之前失败的原因是汇编器报错遇到了未知符号“#”,必须把#alloc 和#execute 删掉才能过编译。由于不懂arm汇编,我一开始以为这个是注释,直接删掉了。现在想想可能是因为这个导致没有给某个指令分配内存导致死锁了。