呼伦贝尔市网站建设_网站建设公司_服务器部署_seo优化
2025/12/22 23:59:20 网站建设 项目流程

这确实是一个比较“冷门”但逻辑清晰的现象。你能通过 Ctrl + Alt + F1 恢复画面,说明 OpenStack 的 VNC 通道、网络和代理服务全都是正常的。

问题的核心在于 飞腾(ARM64)架构下 Linux 内核对“虚拟显示器”的输出策略 导致的。

为什么按了 Ctrl + Alt + F1 就会好?
TTY 激活机制: 许多针对 ARM 优化的 Linux 镜像在启动时,内核会将默认输出挂载到串口(Serial Console,即 ttyAMA0)或者特定的虚拟终端上。当你第一次打开 VNC 时,显示器(图形界面)可能正处于“休眠”或“未分配”状态,屏幕上显示 "Display output is not active"。

强制重绘(Redraw): 按下 Ctrl + Alt + F1 强制 Linux 内核切换虚拟终端。这个动作会触发 QEMU 的显卡驱动重新进行一次 帧缓冲(Framebuffer)初始化。既然你之前按回车有数据波动,说明指令传进去了,只是系统没“画”出来,切换 TTY 相当于手动点亮了显示器。

显卡驱动的“懒加载”: 在飞腾环境下,某些显卡驱动(如 virtio-gpu)在没有检测到物理显示器交互时,可能不会主动向 VNC 发送首个画面帧。

如何永久解决?(不用每次都按快捷键)
既然你已经确认了手动切换能行,可以通过以下优化让它自动“点亮”:

方法 A:修改镜像启动参数(推荐)
通过 SSH 登录虚拟机,修改 /etc/default/grub:

找到 GRUB_CMDLINE_LINUX。

添加或修改:console=tty0(确保它是第一个,或者至少存在)。

关键点:确保没有 nomodeset 这种禁用模式设置的参数。

更新并重启:sudo update-grub。

方法 B:修改 Nova 显卡配置
在计算节点的 /etc/nova/nova.conf 中,尝试将显卡类型固定为 virtio(它是目前 ARM64 下兼容性最好的):

Ini, TOML

[libvirt]

设置默认显卡模型

video_model = virtio
然后对镜像执行:

Bash

openstack image set --property hw_video_model=virtio <镜像ID>
方法 C:禁用屏幕保护/黑屏
如果是因为虚拟机系统内部自动关屏导致的,进入系统后执行:

Bash

禁用控制台自动关闭显示器

setterm -blank 0 -powersave off -cursor on
总结
你搭建的 OpenStack 本身没问题,这是 ARM 架构镜像与 QEMU 虚拟显卡之间的通信默认不够“主动” 造成的。

顺便问一下: 您现在的镜像里面是带图形界面(GUI)的 Ubuntu/Kylin,还是纯命令行模式?如果是纯命令行,建议直接在镜像里把 tty0 设为默认控制台。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询