使用Yocto Kirkstone运行runqemu报X Error:BadValue错误求助
Yocto Kirkstone下runqemu图形模式启动失败问题
刚接触Yocto,已成功执行bitbake core-image-minimal构建镜像,runqemu nographic可正常运行,但直接执行runqemu(图形模式)时出现报错,错误信息如下:
runqemu - INFO - Continuing with the following parameters: KERNEL: [/home/Michel/projets/yocto/builds/build-qemu/tmp/deploy/images/qemux86-64/bzImage] MACHINE: [qemux86-64] FSTYPE: [ext4] ROOTFS: [/home/Michel/projets/yocto/builds/build-qemu/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64-20241210173219.rootfs.ext4] CONFFILE: [/home/Michel/projets/yocto/builds/build-qemu/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64-20241210173219.qemuboot.conf] runqemu - INFO - Using preconfigured tap device tap0 runqemu - INFO - If this is not intended, touch /tmp/qemu-tap-locks/tap0.skip to make runqemu skip tap0. runqemu - INFO - Network configuration: ip=192.168.7.2::192.168.7.1:255.255.255.0 runqemu - INFO - Running /home/Michel/projets/yocto/builds/build-qemu/tmp/work/x86_64-linux/qemu-helper-native/1.0-r1/recipe-sysroot-native/usr/bin/qemu-system-x86_64 -device virtio-net-pci,netdev=net0,mac=52:54:00:12:34:02 -netdev tap,id=net0,ifname=tap0,script=no,downscript=no -drive file=/home/Michel/projets/yocto/builds/build-qemu/tmp/deploy/images/qemux86-64/core-image-minimal-qemux86-64-20241210173219.rootfs.ext4,if=virtio,format=raw -show-cursor -usb -device usb-tablet -object rng-random,filename=/dev/urandom,id=rng0 -device virtio-rng-pci,rng=rng0 -cpu core2duo -m 256 -serial mon:vc -serial null -kernel /home/Michel/projets/yocto/builds/build-qemu/tmp/deploy/images/qemux86-64/bzImage -append 'root=/dev/vda rw mem=256M ip=192.168.7.2::192.168.7.1:255.255.255.0 oprofile.timer=1 ' runqemu - ERROR - Failed to run qemu: X Error: BadValue Request Major code 130 (MIT-SHM) Request Minor code 3 () Value 0x400 Error Serial #2016 Current Serial #2017
使用的Yocto版本为Kirkstone,主机系统信息:
$ uname -a Linux Michel 6.1.0-28-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.119-1 (2024-11-22) x86_64 GNU/Linux
解决方法
1. 禁用MIT-SHM共享内存扩展
报错核心是X11的MIT-SHM共享内存扩展与Qemu冲突,直接在启动时禁用该特性:
runqemu display="gtk,gl=off,shmem=off"
2. 检查X11访问权限
- 临时开放当前用户对X服务器的访问权限:
xhost +local:
(使用完成后建议执行xhost -local:收回权限,避免安全风险)
- 确认
DISPLAY环境变量正确设置,若为空则手动指定:
export DISPLAY=:0
3. 切换Qemu显示后端
如果GTK后端存在兼容性问题,尝试切换到SDL后端:
runqemu display=sdl
4. 修复主机X11组件
Debian系统下可重新安装X11核心组件,修复可能的损坏:
sudo apt reinstall xserver-xorg-core libx11-dev libxext-dev
内容的提问来源于stack exchange,提问作者InfiniteLooper
相关产品推荐
相关产品推荐

