qemu仿真无法登录

// 此模板仅供参考,如果不适用可以修改

问题描述

qemu 启动后非常卡,串口,ssh,浏览器都无法登录,浏览器登录页面出不来。

环境信息

  • 操作系统:[Ubuntu 24.04 (swr.cn-north-4.myhuaweicloud.com/openubmc/ubuntu:24.04.2) ]

  • 软件版本:[openUBMC 26.06]

  • 硬件配置:[CPU

    Intel(R) Core(TM) i7-10510U CPU @ 1.80GHz
    
    基准速度:	2.30 GHz
    插槽:	1
    内核:	4
    逻辑处理器:	8
    虚拟化:	已启用
    L1 缓存:	256 KB
    L2 缓存:	1.0 MB
    L3 缓存:	8.0 MB
    
    利用率	32%
    速度	2.50 GHz
    
  • 内存
    
    	16.0 GB
    
    	速度:	2667 MHz
    	已使用的插槽:	1/1
    	外形规格:	SODIMM
    	为硬件保留的内存:	193 MB
    
    	可用	2.2 GB
    	已缓存	1.5 GB
    	已提交	19.8/29.8 GB
    	分页缓冲池	385 MB
    	非分页缓冲池	481 MB
    	使用中(已压缩)	13.6 GB (363 MB)
    ]
    

重现步骤

1.使用下面命令启动qemu后,
python3 build/works/packet/qemu_shells/vemake_1711.py

2.登录串口,telnet 127.0.0.1 10024

3.等出现登录登录提示后登录,

localhost login:
localhost login:
localhost login: Administrator
login: abort requested by PAM

4.登录报错

login: abort requested by PAM

串口一直打印

ocalhost login: framework service…
Authorized uses only. All activity may be monitored and reported.
localhost login: [ 192.073193] hrtimer: interrupt took 1300896 ns
1970-01-01 00:05:38.640771 maca NOTICE: init.lua(70): start watchdog timer
1970-01-01 00:06:01.995842 maca NOTICE: base.lua(432): monitor component host_agent added, service: bmc.kepler.host_agent
1970-01-01 00:06:06.582230 maca NOTICE: base.lua(432): monitor component ssdp added, service: bmc.kepler.ssdp
1970-01-01 00:06:14.423836 maca NOTICE: base.lua(432): monitor component file_transfer added, service: bmc.kepler.file_transfer
1970-01-01 00:06:16.396924 maca NOTICE: base.lua(471): monitor component account added, service: bmc.kepler.account
1970-01-01 00:06:18.202262 maca NOTICE: base.lua(471): monitor component bmc_health added, service: bmc.kepler.bmc_health
1970-01-01 00:06:19.296852 maca NOTICE: base.lua(471): monitor component bmc_time added, service: bmc.kepler.bmc_time
1970-01-01 00:06:20.936102 maca NOTICE: base.lua(471): monitor component bmc_upgrade added, service: bmc.kepler.bmc_upgrade
1970-01-01 00:06:23.693144 maca NOTICE: base.lua(471): monitor component capability_proxy added, service: bmc.kepler.capability_proxyocalhost login:
1970-01-01 00:06:25.114241 maca NOTICE: base.lua(471): monitor component certificate added, service: bmc.kepler.certificate
1970-01-01 00:06:27.054095 maca NOTICE: base.lua(471): monitor component dcmid added, service: bmc.kepler.dcmid
1970-01-01 00:06:28.945634 maca NOTICE: base.lua(471): monitor component ddns added, service: bmc.kepler.ddns
1970-01-01 00:06:30.935516 maca NOTICE: base.lua(471): monitor component devmon added, service: bmc.kepler.devmon
1970-01-01 00:06:33.477573 maca NOTICE: base.lua(471): monitor component firmware_mgmt added, service: bmc.kepler.firmware_mgmt
1970-01-01 00:06:34.763331 maca NOTICE: base.lua(471): monitor component fructrl added, service: bmc.kepler.fructrl
1970-01-01 00:06:37.888875 maca NOTICE: base.lua(471): monitor component hwdiscovery added, service: bmc.kepler.hwdiscovery
1970-01-01 00:06:39.810849 maca NOTICE: base.lua(471): monitor component hwproxy added, service: bmc.kepler.hwproxy
1970-01-01 00:06:41.088963 maca NOTICE: base.lua(471): monitor component ipmi_core added, service: bmc.kepler.ipmi_core
1970-01-01 00:06:43.202653 maca NOTICE: base.lua(471): monitor component key_mgmt added, service: bmc.kepler.key_mgmt
1970-01-01 00:06:45.289249 maca NOTICE: base.lua(471): monitor component lsw added, service: bmc.kepler.lsw
1970-01-01 00:06:47.768322 maca NOTICE: base.lua(471): monitor component manufacture added, service: bmc.kepler.manufacture
1970-01-01 00:07:31.685655 maca ERROR: init.lua(240): [nsm]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: The name bmc.kepler.nsm was not provided by any .service files, check count: 1

期望结果

可以正常使用qemu

实际结果

[实际发生了什么,包含错误信息]

尝试过的解决方案

[列出您已经尝试过的解决方案及结果]

分析结论

[详细总结您对此问题的分析结论]

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

问题分析结论

您遇到的“QEMU启动后非常卡,串口、SSH、浏览器都无法登录”的现象,根据知识库内容,可归因于以下几个关键因素:

1. 主机硬件性能瓶颈

知识库明确指出:QEMU 的性能高度依赖于高性能主机硬件。您的环境信息显示:

  • CPU:Intel Core i7-10510U(4核8线程,基准频率1.80GHz)属于低功耗移动处理器,性能相对有限。
  • 内存:虽然总内存为16.0 GB,但 可用内存仅为2.2 GB,且系统已提交内存高达19.8/29.8 GB,内存压力极大。

在模拟完整的服务器硬件环境(包括BMC、PCIe卡、网络接口等)时,资源不足会直接导致QEMU启动缓慢、运行卡顿,进而引发登录超时。日志中 hrtimer: interrupt took 1300896 ns(超过1秒)也印证了系统响应极慢。

2. 关键组件启动检查失败

QEMU启动过程中,部分BMC核心组件未正确初始化或未适配QEMU环境,导致系统功能不完整:

  • bmc_soc:知识库记载该组件 “未适配到QEMU”,其启动检查失败会引发初始化错误。
  • 您的串口日志中明确出现了错误:
    maca ERROR: init.lua(240): [nsm]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: 
    The name bmc.kepler.nsm was not provided by any .service files, check count: 1
    
    这说明 nsm(网络安全管理器)组件未启动,会直接影响登录认证策略的执行(包括PAM配置中的接口限制),可能导致 login: abort requested by PAM 错误。

3. PAM 认证中止

串口登录时报错 login: abort requested by PAM,结合知识库中PAM相关机制说明,PAM(如pam_authenticate())是用于身份验证的框架。若PAM配置中引用了尚未启动成功或状态异常的服务(如前面提到的nsm),会导致认证流程被异常中止,表现为登录无法继续。

4. Web 和 SSH 登录失败的关联性

知识库提到:

  • Qemu仿真环境 SSH 功能正常,但 Web 登录失败,且 Web 登录页面加载不出来 的情况常与 nginx 服务未启动 有关。
  • SSH 登录失败可能关联到 “Slirp: Failed to send packet” 错误,这通常是网络栈或虚拟网络配置问题,也会受到主机性能影响。
  • 对于 Web 登录,nginx 启动时间比其它服务慢,若系统整体卡顿,nginx 可能长时间未就绪。
点击此处查看详细分析解答

根据您提供的信息,结合知识库中的相关文档和讨论,我对您遇到的 QEMU仿真无法登录 问题进行了分析。

问题分析结论

您遇到的“QEMU启动后非常卡,串口、SSH、浏览器都无法登录”的现象,根据知识库内容,可归因于以下几个关键因素:

1. 主机硬件性能瓶颈

知识库明确指出:QEMU 的性能高度依赖于高性能主机硬件。您的环境信息显示:

  • CPU:Intel Core i7-10510U(4核8线程,基准频率1.80GHz)属于低功耗移动处理器,性能相对有限。
  • 内存:虽然总内存为16.0 GB,但 可用内存仅为2.2 GB,且系统已提交内存高达19.8/29.8 GB,内存压力极大。

在模拟完整的服务器硬件环境(包括BMC、PCIe卡、网络接口等)时,资源不足会直接导致QEMU启动缓慢、运行卡顿,进而引发登录超时。日志中 hrtimer: interrupt took 1300896 ns(超过1秒)也印证了系统响应极慢。

2. 关键组件启动检查失败

QEMU启动过程中,部分BMC核心组件未正确初始化或未适配QEMU环境,导致系统功能不完整:

  • bmc_soc:知识库记载该组件 “未适配到QEMU”,其启动检查失败会引发初始化错误。
  • 您的串口日志中明确出现了错误:
    maca ERROR: init.lua(240): [nsm]StartupCheck failed, error: org.freedesktop.DBus.Error.ServiceUnknown: 
    The name bmc.kepler.nsm was not provided by any .service files, check count: 1
    
    这说明 nsm(网络安全管理器)组件未启动,会直接影响登录认证策略的执行(包括PAM配置中的接口限制),可能导致 login: abort requested by PAM 错误。

3. PAM 认证中止

串口登录时报错 login: abort requested by PAM,结合知识库中PAM相关机制说明,PAM(如pam_authenticate())是用于身份验证的框架。若PAM配置中引用了尚未启动成功或状态异常的服务(如前面提到的nsm),会导致认证流程被异常中止,表现为登录无法继续。

4. Web 和 SSH 登录失败的关联性

知识库提到:

  • Qemu仿真环境 SSH 功能正常,但 Web 登录失败,且 Web 登录页面加载不出来 的情况常与 nginx 服务未启动 有关。
  • SSH 登录失败可能关联到 “Slirp: Failed to send packet” 错误,这通常是网络栈或虚拟网络配置问题,也会受到主机性能影响。
  • 对于 Web 登录,nginx 启动时间比其它服务慢,若系统整体卡顿,nginx 可能长时间未就绪。

建议排查与解决方向

基于上述分析,建议按以下顺序尝试:

  1. 释放主机资源:关闭不必要的程序,确保QEMU有足够的CPU和内存资源。建议预留至少4GB以上可用内存。
  2. 检查组件状态
    • 登录串口,尝试执行 killall interface 或查看 /var/log/app.log 日志,确认具体是哪些组件挂起或报错。
    • 重点确认 bmc.kepler.nsm 等关键服务是否正常注册。
  3. 重试 QEMU 启动:知识库FAQ建议,如果启动异常,可以 保持默认config文件内容,删除manifest temp目录和output目录,然后重新执行 python3 build/works/packet/qemu_shells/vemake_1711.py 拉起QEMU
  4. 确认代码版本:如果之前对QEMU或manifest代码有过自行修改,建议先 还原成官方发布包再测试,排除代码改动引入的问题。知识库中也有案例说明:有些问题已在新版本中修复,但在旧LTS分支仍存在。
  5. Web登录等待:若仅Web无法访问,SSH和串口正常,可稍等几秒,因为 nginx 可能需要更长时间启动。如果仍不行,则重点排查nginx相关配置和日志。

如果上述步骤仍无法解决,您可以进一步提供完整的QEMU日志(如qemu_stdout.txt),以便更精确定位问题。