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

如何配置aarch64架构KVM虚拟机的显示输出?

解决aarch64架构下Oracle Linux 9 U3 KVM虚拟机VNC黑屏与串口控制台无输出问题

一、修复VNC黑屏问题

  • 修正OS变体参数:原命令用了--os-variant=rhel7.0,Oracle Linux 9对应RHEL9分支,改成--os-variant=ol9或rhel9.0,错误的OS变体可能导致aarch64平台硬件模拟不匹配,尤其是UEFI相关配置。
  • 指定UEFI固件与NVRAM文件:Ubuntu 22.04的aarch64 UEFI固件默认路径为/usr/share/AAVMF/AAVMF_CODE.fd,需配合--nvram指定独立的变量存储文件(避免默认配置冲突),命令中添加:
    --boot uefi,loader=/usr/share/AAVMF/AAVMF_CODE.fd --nvram /ssd/oracle_nvram.fd
    
    注意/ssd/oracle_nvram.fd要放在有读写权限的目录,建议和虚拟机磁盘同路径。
  • 强制指定VirtIO显卡:添加--video virtio参数,部分aarch64虚拟机对默认显卡模拟支持不佳,VirtIO显卡兼容性更好。

二、配置串口控制台支持

  • 在virt-install中添加串口设备:直接给命令加参数,让虚拟机把控制台输出定向到串口:
    --console pty,target_type=serial --serial pty
    
    之后可以用virsh console oracle连接串口控制台。
  • 制作带串口参数的自定义镜像:如果原ISO没有串口支持,修改镜像的GRUB配置:
    1. 挂载原ISO:
      mkdir /mnt/iso && mount -o loop /ssd/OracleLinux-R9-U3-aarch64-dvd.iso /mnt/iso
      
    2. 复制镜像内容到临时目录:
      cp -r /mnt/iso /tmp/ol9_custom
      
    3. 修改GRUB配置文件(比如/tmp/ol9_custom/EFI/BOOT/grub.cfg),在linux内核启动行末尾添加console=ttyAMA0,115200n8(aarch64平台串口设备通常为ttyAMA0)。
    4. 重新生成自定义ISO:
      apt install genisoimage -y
      genisoimage -o /ssd/OracleLinux-R9-U3-aarch64-custom.iso -V "OL9U3" -J -R -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /tmp/ol9_custom
      

三、完整修正后的virt-install命令示例

virt-install --virt-type kvm --name oracle --ram 4096 \
--location=/ssd/OracleLinux-R9-U3-aarch64-custom.iso \
--disk path=/ssd/OracleLinux-R9-U3-aarch64-cloud.qcow2,size=20 \
--network=default \
--graphics=vnc,listen=0.0.0.0 \
--os-type=linux --os-variant=ol9 \
--arch=aarch64 \
--boot uefi,loader=/usr/share/AAVMF/AAVMF_CODE.fd \
--nvram /ssd/oracle_nvram.fd \
--video virtio \
--console pty,target_type=serial --serial pty \
--noautoconsole

四、验证排查步骤

  • 用virsh dominfo oracle查看Firmware字段,确认UEFI已启用。
  • 启动虚拟机后执行virsh console oracle,若仍无输出,可在虚拟机启动时手动进入GRUB编辑模式,临时添加console=ttyAMA0,115200n8参数测试。
  • 检查VNC端口监听:用virsh domdisplay oracle获取端口,再用netstat -tulpn | grep <端口>确认是否在0.0.0.0监听,临时关闭ufw(ufw disable)排除防火墙干扰。

内容的提问来源于stack exchange,提问作者rory toma

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:13:22