You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python调用QEMU仿真树莓派无输出问题求助

问题分析与解决:Python脚本执行QEMU仿真树莓派3B无启动输出

你的核心问题是命令行引号嵌套冲突,导致bash接收到的QEMU命令被错误截断,参数不完整,最终只显示警告而无启动输出。

问题根源

看你的代码:bash -c后面用双引号包裹整个QEMU命令,但其中-append参数的值也用了双引号——这会让bash错误识别引号的闭合位置,-append之后的-dtb等参数会被当成bash的独立命令,而非QEMU的启动参数,直接导致QEMU无法正常加载必要文件。

修复方案

方案1:修正引号嵌套(转义或替换引号)

将-append的双引号换成单引号并转义,确保bash能完整识别整个QEMU命令:

terminal_command = f'gnome-terminal -- bash -c "/home/jose/Escritorio/qemu/build/qemu-system-aarch64  -M raspi3b  -kernel /home/jose/Escritorio/Imagen/kernel8.img -sd /home/jose/Escritorio/Imagen_SO/2022-04-04-raspios-bullseye-armhf-resized.img -nographic -append \'rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1\' -dtb /home/jose/Escritorio/Imagen/bcm2710-rpi-3-b-plus.dtb"'

subprocess.Popen(terminal_command, shell=True)

注意:把dtb的相对路径改成绝对路径,避免脚本工作目录不同导致文件找不到

方案2:更安全的列表式传参(推荐)

放弃shell=True,将命令拆分成列表元素,彻底避免引号冲突问题:

import subprocess

cmd = [
    'gnome-terminal', '--', 'bash', '-c',
    '/home/jose/Escritorio/qemu/build/qemu-system-aarch64 -M raspi3b -kernel /home/jose/Escritorio/Imagen/kernel8.img -sd /home/jose/Escritorio/Imagen_SO/2022-04-04-raspios-bullseye-armhf-resized.img -nographic -append "rw earlyprintk loglevel=8 console=ttyAMA0,115200 dwc_otg.lpm_enable=0 root=/dev/mmcblk0p2 rootdelay=1" -dtb /home/jose/Escritorio/Imagen/bcm2710-rpi-3-b-plus.dtb'
]

subprocess.Popen(cmd)

内容的提问来源于stack exchange,提问作者Angel Ruiz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:43:10