![开始运行 ppc64el 虚拟机时出现“Guest 尚未初始化显示器”。](https://linux22.com/image/1052244/%E5%BC%80%E5%A7%8B%E8%BF%90%E8%A1%8C%20ppc64el%20%E8%99%9A%E6%8B%9F%E6%9C%BA%E6%97%B6%E5%87%BA%E7%8E%B0%E2%80%9CGuest%20%E5%B0%9A%E6%9C%AA%E5%88%9D%E5%A7%8B%E5%8C%96%E6%98%BE%E7%A4%BA%E5%99%A8%E2%80%9D%E3%80%82.png)
解释: 我在 IBM 工作,正在尝试为 ubuntu 制作网络启动 (pxe) 原型。目标是将 maas 部署服务器部署到 ubuntu 14.0.4 下管理的 4 台虚拟机,以测试 juju 捆绑包 #39 (openstack 基础)。由于我的团队没有 4 台物理服务器,因此我们尝试使用虚拟机。请注意,这是 ppc64el 环境。
问题 在虚拟机中安装了用于网络启动 (pxe) 的 mini.iso 后,我们遇到“Guest 尚未初始化显示”。虚拟机无法启动,进入暂停状态,并且 maas 无法用于此虚拟机。
问题
来自 wiki.ubuntu.com/ppc64el 的 netboot mini.iso。
能用来建立从pxe启动的VM吗?
这些仅适用于裸机吗?
我发现https://lists.gnu.org/archive/html/qemu-discuss/2015-03/msg00027.html提示“内核不支持此主板型号”或“内核不支持图形”。这让我相信使用 netboot/pxe mini.iso无法在虚拟机中完成并且需要是裸机。
可以将 netboot iso 放入 VM 吗?
是不是因为 VM 仿真显卡不支持 mini.iso?
QEMU 窗口打开了,但我收到此错误“Guest 尚未初始化显示”我在配置 qemu 时启用了 -sdl 选项,但仍然收到该错误。
这不是一个错误。这只是 QEMU 告诉您客户操作系统尚未完成打开模拟显卡和显示输出所需的操作。
在这种情况下,可能的原因是您尝试运行一个在此主板型号上无法运行的内核,因此它在运行之前就崩溃了。如果内核没有内置图形支持,而只是向串行控制台输出,您也会看到此消息。
- 如果我们可以将 netboot mini.iso 用于 VM,那么我们在图形的 xml 文档定义中做错了什么?
vm6.xml或相关部分
/usr/bin/qemu-系统-ppc64le
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='virtio-serial' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/>
</controller>
<interface type='bridge'>
<mac address='00:1a:64:30:12:11'/>
<source bridge='br3'/>
<model type='rtl8139'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
<address type='spapr-vio' reg='0x30000000'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
<address type='spapr-vio' reg='0x30000000'/>
</console>
<input type='tablet' bus='usb'/>
<input type='keyboard' bus='usb'/>
<input type='mouse' bus='usb'/>
<graphics type='vnc' port='-1' autoport='yes' keymap='en-us'/>
环境信息
服务器:ubuntu 14.04 trusty-ppc64el
/wiki.ubuntu.com/ppc64el 正在使用 netboot mini.iso
juju://jujucharms.com/u/james-page/openstack-base/bundle/39/
Openstack 搭配 ceph 存储,需要 4 台机器
使用 maas 启动虚拟机:askubuntu.com/questions/292061/how-to-configure-maas-to-be-able-to-boot-virtual-machines
结果添加于 2015 年 9 月 22 日
==========================
解释为使事情正常运转所采取的措施以及 xml 示例(XML 代码部分)。xml 有助于开始使 ppc64le 工作以进入运行状态(而不是暂停状态)。一旦我们将虚拟机置于运行状态,我们仍然必须在 virt-manager 中进行修改以设置已部署虚拟机的 scsi 磁盘。下面的 XML 代码是最终在 virt-manager 中修改的版本,具有 8G scsi 磁盘。
笔记
需要运行ppc64_cpu --smt=off
xml: 需要指定 arch ppc64
xml:使用 qemu-system-ppc64 qemu
添加于 2014 年 10 月 7 日。我忘了提到必须更改 xml 才能使用 VNC 控制台。请参阅提供的 XML。需要使用 VNC。必须有控制台标签,我相信应该有。此外,如果您设置 XML,您可能会遇到总线插槽定义问题,其中显示已使用的插槽。如果是这种情况,您可能需要调整总线/插槽编号,如下例所示。
<console type='pty'> <target type='serial' port='0'/> <address type='spapr-vio' reg='0x30000000'/> </console> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'> <listen type='address' address='0.0.0.0'/> </graphics>
请注意,这会使虚拟机进入运行状态。
现在原始 xml 包含 mini.iso 。但是一旦在 maas 中运行,vm 就会进入就绪状态。然后在部署(启动按钮)时出现问题,VM 启动但部署失败。从 virt-manager 中删除 mini-iso 并创建 8G 的 scsi 磁盘。我的 maas 需要 scsi 磁盘来放置部署的操作系统(在我们的例子中是 ubuntu 14.04 trusty)。
关于 virt-manager 的说明:使用 virt-manager 可以让事情变得非常简单。我们的设置使用了私有网络,我们通常使用 vnc 连接到服务器。我们通过 vnc 连接到包含所有 VM 的服务器(VM 服务器)。现在,我们尝试通过 vnc 连接到 maas 部署服务器(在 ubuntu 15.04 级别)。我们无法让 vnc 在 15.04 服务器上工作。因此,我们使用了 ssh -X xll 转发。这不是产品级别的解决方案,但如果您正在测试此环境,那么这种方法在紧急情况下会很有效。
请注意,要正确访问 ubuntu,您需要按照 ubuntu 文档指定的方式设置 ssh 密钥。
请参阅:/maas.ubuntu.com/docs/nodes.html
请注意,我们在测试中使用 root,因此如果您这样做进行测试,则无需设置 maas 用户 ID,只需设置 ssh-keygen(这在 maas 部署服务器上完成)。
具有虚拟机的目标服务器(文档中的虚拟机服务器)需要公钥,因此 ssh-copy-id -i ~/.ssh/id_rsa[电子邮件保护]必须完成,并且必须使用 ubuntu 用户 ID。ubuntu 用户 ID 是已部署虚拟机的默认用户 ID。
完成上述操作后,你就可以使用类似 ssh 的方式从虚拟机服务器访问已部署的虚拟机[电子邮件保护] (xxxx是创建的ubuntu虚拟机的ip地址)
一旦修复了这个问题,就会大规模部署到服务器 ubuntu 14.04。
如果您运行 virt-manager,您可以看到部署期间的处理顺序。现在,在我们运行的测试案例中,我们在 virt-manager 中观察到启动顺序仍然在网络之外,因此将其更改为磁盘。停止 VM,重新启动 VM,然后出现 ubuntu 14.04。
使用 ssh 连接到新创建的虚拟机[电子邮件保护] (xxxx 是创建的 ubuntu VM 的 ipaddress)。请注意,您可以从编辑节点页面获取新创建的 ipaddress,转到底部并选择发现的信息。ipaddress 列在该区域的下方,最好复制到记事本、编辑器,然后搜索地址开头。我们使用了私有网络,因此只搜索了 192。
使用 uname -a 和 lscpu 检查操作系统是否正确。应显示架构为 ppc64le:
root@ubuntur2n2:~# uname -a Linux ubuntur2n2 3.19.0-25-generic #26-Ubuntu SMP Fri Jul 24 21:18:29 UTC 2015 ppc64le ppc64le ppc64le GNU/Linux root@ubuntur2n2:~# lscpu Architecture: ppc64le Byte Order: Little Endian CPU(s): 192 On-line CPU(s) list: 0,8,16,24,32,40,48,56,64,72,80,88,96,104,112,120,128,136,144,152,160,168,176,184 Off-line CPU(s) list: 1-7,9-15,17-23,25-31,33-39,41-47,49-55,57-63,65-71,73-79,81-87,89-95,97-103,105-111,113-119,121 -127,129-135,137-143,145-151,153-159,161-167,169-175,177-183,185-191 Thread(s) per core: 1 Core(s) per socket: 6 Socket(s): 4 NUMA node(s): 4
XML 代码
<domain type='kvm'>
<name>vm5</name>
<uuid>1e964a47-4a69-4b59-a5b4-637a1234f47d</uuid>
<description>vm5 for PoC</description>
<memory unit='KiB'>4194304</memory>
<currentMemory unit='KiB'>4194304</currentMemory>
<vcpu placement='static'>2</vcpu>
<os>
<type arch='ppc64' machine='pseries-2.2'>hvm</type>
<bootmenu enable='yes'/>
</os>
<features>
<acpi/>
<apic/>
<pae/>
</features>
<clock offset='utc'/>
<on_poweroff>destroy</on_poweroff>
<on_reboot>restart</on_reboot>
<on_crash>restart</on_crash>
<devices>
<emulator>/usr/bin/qemu-system-ppc64</emulator>
<disk type='file' device='disk'>
<driver name='qemu' type='qcow2'/>
<source file='/var/lib/libvirt/images/vm5-1.qcow2'/>
<target dev='sda' bus='scsi'/>
<boot order='1'/>
<address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>
<controller type='usb' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/>
</controller>
<controller type='pci' index='0' model='pci-root'/>
<controller type='ide' index='0'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/>
</controller>
<controller type='scsi' index='0'>
<address type='spapr-vio' reg='0x2000'/>
</controller>
<interface type='bridge'>
<mac address='00:1a:64:14:53:14'/>
<source bridge='br3'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
<serial type='pty'>
<target port='0'/>
<address type='spapr-vio' reg='0x30000000'/>
</serial>
<console type='pty'>
<target type='serial' port='0'/>
<address type='spapr-vio' reg='0x30000000'/>
</console>
<input type='tablet' bus='usb'/>
<input type='keyboard' bus='usb'/>
<input type='mouse' bus='usb'/>
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
<video>
<model type='vga' vram='16384' heads='1'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/>
</video>
<memballoon model='virtio'>
<address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/>
</memballoon>
</devices>
</domain>
答案1
您iso
所使用的应该可以正常工作,即使在 VM 环境中。
但是,正如您所注意到的,它不支持qemu
所提供的模拟图形适配器。对于这些虚拟机,您最好使用与主机的串行连接。
由于您似乎正在使用libvirt
,并且您的.xml
文件似乎定义了主机串行端口,因此您可以使用标准 virsh 命令来获取主机控制台:
virsh console <name>
您可能还想从虚拟机中删除图形配置。