arm平台运行qemu

问题描述

使用自己编译的qemu cpio包时发现web界面登录异常,一直显示登录失败。想更换arm平台(当前手头只有飞腾D2000/8)运行qemu,在D2000上编译qemu-system-arch64-release,使用x86环境下在output/packet/inner,起来后感觉效果还不如x86平台。请问是否有其他需要修改的地方?

在搭建环境时遇到以下问题:sdk中 lau-format、hpm_tools等提供的都是amd平台的bin文件,网上没有找到源码,这些是不是只能等官方提供?

环境信息

  • 操作系统:ubuntu 24.04

  • 软件版本:openUBMC 25.12 LTS SP2

  • 硬件配置:CPU:飞腾D2000/8、内存:16G

答案内容由AI生成,仅供参考:

总结

问题 核心建议
Web登录失败 检查SSL证书配置、确认关键服务(redfish、web_backend)已启动、清除残留配置
ARM平台性能 务必使用KVM硬件加速(-accel kvm),并确保CPU核数与设备树匹配(-smp 8)
SDK组件缺失 目前无源码信息,建议先在x86环境完成相关操作,或在社区论坛反馈请求支持
点击此处查看详细分析解答

根据您提供的问题描述和环境信息,结合知识库中的相关内容,我将从 Web登录异常、ARM平台性能、SDK组件缺失 三个方面进行分析和解答。

1. Web界面登录异常(一直显示登录失败)

可能原因

根据知识库中的问题分析案例,出现Web登录失败通常与 SSL证书 或 关键服务启动 有关:

  • SSL证书解密失败:在“自签名openubmc版本不保留配置升级后web页面拒绝登录问题分析”中提到,升级后Web不通的原因往往是SSL证书解密存在问题。日志中显示的报错与证书解密失败相关(app.log 中出现证书解密失败信息)。

  • 关键服务未及时启动:在分析“固件升级失败并回滚”的案例中指出,如果关键服务(如 bmc.kepler.redfish 和 bmc.kepler.web_backend)初始不可达,系统会判定启动异常并触发自动回滚,导致登录失败。

排查建议

  1. 检查认证信息:根据文档,Web登录的默认地址为 https://<ip>:100443(或 10443),默认用户名为Administrator,密码可能因版本不同而有所差异:

    • Admin@90000(文档中的默认密码)
    • openUBMC@2025(文档中提到的制造模式密码)
  2. 确认服务状态:进入Guest系统后,可以使用以下命令检查关键服务是否正常运行:

    systemctl --state=running --type=service --no-legend --no-pager | wc -l
    
  3. 清除残留配置:如果您使用的是自定义编译的cpio包,建议在首次刷入前执行清根操作:

    ipmcset -t maintenance -d clearcfg
    
  4. 检查端口映射:确保QEMU启动时正确配置了端口转发(Web端口通常为443转出)。

2. ARM平台(飞腾D2000/8)运行QEMU性能问题

您遇到的问题

您在飞腾D2000/8上编译并运行QEMU后,感觉性能不及x86平台。

关键优化建议

根据知识库中的实测数据,在ARM平台上使用KVM模式可以大幅提升性能:

  • 知识库中提到:“kvm模式qemu仿真能力分享(性能提升5倍,CPU占用降低10倍)”。
  • 用户 arch 的实测验证:“KVM 模式下确实非常快,性能提升比较明显。我们的验证方式是:在 x86 环境完成编译构建后,将生成的二进制包同步到 ARM 服务器上执行。ARM 侧系统为 openEuler 24.03 LTS SP3,通过 Cockpit 管理 Podman 容器,并将 /dev/kvm 映射到容器内运行 QEMU 进行测试。”

具体操作建议

  1. 确保启用KVM硬件加速:在运行QEMU时,检查是否使用了KVM加速。飞腾D2000/8支持ARM虚拟化扩展(如/dev/kvm设备存在)。

  2. 参考ARM上的QEMU编译方法(来自文档):

    git clone https://gitcode.com/openUBMC/qemu.git
    mkdir build && cd build
    ../configure \
      --target-list=aarch64-softmmu \
      --enable-kvm \
      --disable-docs \
      --disable-werror
    ninja -j"$(nproc)" qemu-system-aarch64
    
  3. 验证KVM支持:

    ./qemu-system-aarch64 -accel help   # 应输出包含kvm的加速选项
    
  4. 启动命令中使用 -accel kvm:参考知识库中的完整启动命令示例,使用KVM加速模式(而不是TCG模式)。

  5. 关于CPU核数配置:知识库中提到,对于Hi1711设备树(8个CPU),建议使用 -smp 8 配置,4核启动可能会对CPU4到CPU7报PSCI启动失败,这可能影响性能和功能。

3. SDK组件缺失问题(lau-format、hpm_tools等仅提供amd平台的bin文件)

现状说明

知识库提到,QEMU在ARM环境下运行某些x86编译的二进制文件时会遇到问题:

  • QEMU User Static 用于在ARM上模拟x86指令,但会导致“segmentation faults”(段错误)。
  • 部分工具(如 devmon)可能尚未适配在QEMU环境中运行。

建议方向

  1. 关于源码获取:根据知识库用户 zybwh 的经验,他作为社区核心维护者,曾提到过相关工具的适配问题。目前没有明确信息表明这些组件的源码已在社区公开。您的问题“是不是只能等官方提供”在知识库中没有直接答案,但可以推测,如果这些工具目前仅以二进制形式随SDK发布,那么确实可能只能等待官方适配或提供源码。

  2. 可能的替代方案:

    • 检查SDK中是否有ARM或ARM64版本的二进制文件。
    • 尝试使用QEMU用户模式(user-mode)来模拟执行这些工具,但请注意知识库中提到的段错误风险。
    • 在x86环境完成涉及这些工具的操作后,再将生成的结果同步到ARM平台使用(这与知识库中 arch 分享的编译验证方式一致)。

总结

问题 核心建议
Web登录失败 检查SSL证书配置、确认关键服务(redfish、web_backend)已启动、清除残留配置
ARM平台性能 务必使用KVM硬件加速(-accel kvm),并确保CPU核数与设备树匹配(-smp 8)
SDK组件缺失 目前无源码信息,建议先在x86环境完成相关操作,或在社区论坛反馈请求支持

如果这些建议无法解决您的问题,建议您在 OpenUBMC社区论坛 发帖,附上具体的错误日志和截图,以便社区开发者(如 zybwh、arch 等核心维护者)协助排查。另外,制作自定义cpio包时,文档建议使用 bingo build -sc qemu 命令生成,确保包的完整性。

  1. 检查工具是否支持kvm模式。
  2. 检查是否更新到最新代码,解决qemu镜像拉起失败问题-manifest-AtomGit 此提交解决了qemu基础功能问题。
  3. 参考 使用bingo qemu命令拉起qemu虚拟机 ,更新bingo工具到最新版本,使用bingo qemu拉起镜像,此命令会自动使能kvm模式。