Вопрос или проблема
Объяснение:
Я работаю в IBM и пытаюсь создать прототип netboot (pxe) для Ubuntu.
Цель состоит в том, чтобы сервер развертывания maas развернул 4 виртуальные машины, управляемые под управлением Ubuntu 14.04, чтобы протестировать juju bundle #39 (базовый openstack). Поскольку в нашей команде нет 4 физических серверов, мы пытаемся сделать это с помощью виртуальных машин. Обратите внимание, что это окружение ppc64el.
Проблема
С установленным mini.iso для netboot (pxe) в виртуальной машине мы сталкиваемся с сообщением “Гость еще не инициализировал дисплей”. Виртуальная машина не загружается, останавливается, и maas не может быть использован для этой виртуальной машины.
Вопросы
-
Можно ли использовать netboot mini.iso с wiki.ubuntu.com/ppc64el для создания виртуальной машины, которая будет загружаться по pxe?
Можно ли использовать это только для установки на “голую” железо?
-
Я нашел это на https://lists.gnu.org/archive/html/qemu-discuss/2015-03/msg00027.html, где говорится “ядро, которое не будет работать на этой модели платы” или “ядро не поддерживает графику”. Это заставляет меня подумать, что использовать
netboot/pxe mini.iso невозможно в виртуальной машине и необходимо “голое” железо.Можно ли вставить netboot iso в виртуальную машину?
Разве это невозможно, потому что эмулируемая видеокарта виртуальной машины не
поддерживается для mini.iso?
Окно QEMU открывается, но я получаю эту ошибку “Гость еще не инициализировал
дисплей”. Я включил опцию -sdl при конфигурировании qemu, но я все еще получаю
эту ошибку.
Это не ошибка. Это просто QEMU сообщает вам, что гостевая ОС
еще не сделала того, что ей нужно, чтобы включить эмулируемую видеокарту
и вывод на дисплей.
В данном случае наиболее вероятная причина заключается в том, что вы пытались
запустить ядро, которое не будет работать на этой модели платы, и поэтому оно
сработает до того, как начнется что-либо. Вы также можете увидеть это сообщение,
если у ядра нет встроенной поддержки графики и оно просто выводит
на консоль.
- Если мы можем использовать netboot mini.iso для виртуальной машины, что мы делаем неправильно в XML
документе для графики?
vm6.xml или части его, которые важны
/usr/bin/qemu-system-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
-
Используем mini.iso для netboot с wiki.ubuntu.com/ppc64el
-
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
Результат добавлен 22 сентября 2015 года
==========================
Объяснение того, что было сделано для того, чтобы все заработало, и пример XML (раздел кода XML). XML помогает запустить ppc64le в рабочее состояние (не приостановлено). Как только мы получили виртуальную машину в рабочем состоянии, нам также пришлось изменить
в virt-manager, чтобы настроить диск scsi для развернутой виртуальной машины. Ниже приведенный XML-код является версией, которая была окончательно изменена в virt-manager с диском scsi на 8 ГБ.
Заметки
-
Необходимо выполнить ppc64_cpu –smt=off
-
xml: Необходимо указать архитектуру ppc64
-
xml: Использовать qemu-system-ppc64 qemu
Добавлено 07.10.2014. Я забыл упомянуть, что 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, она достигла состояния готовности. Затем, когда она была развернута (кнопка запуска), возникла проблема, когда ВМ запустилась, но развертывание не прошло. Из virt-manager удалил mini-iso и создал диск scsi на 8 ГБ. Диск scsi необходим maas
для установки развернутой ОС (в нашем случае ubuntu 14.04 trusty).Заметка о virt-manager: Использование virt-manager значительно упрощает задачу. Наша настройка
использовала частную сеть, и мы обычно используем vnc для подключения к серверам. Сервер, на котором находятся все ВМ (сервер ВМ), мы подключаем через vnc.
Оттуда мы пытались подключиться через vnc к серверу развертывания maas
(на уровне ubuntu 15.04). Мы не смогли заставить vnc работать на сервере 15.04. Поэтому мы использовали ssh -X для перенаправления. Это не решение для уровня продукта, но если вы тестируете эту среду, это работает в критических ситуациях. -
Обратите внимание, что для правильного доступа к ubuntu необходимо настроить ssh ключи, как указано в документации ubuntu.
См. /maas.ubuntu.com/docs/nodes.html
Обратите внимание, что мы использовали root для нашего тестирования, поэтому, если вы делаете это для тестирования,
то userid maas не нужно настраивать, достаточно просто выполнить ssh-keygen (это
выполняется на сервере развертывания maas).Сервер, на котором находятся ВМ (сервер ВМ в документе), должен иметь публичный
ключ, поэтому необходимо выполнить ssh-copy-id -i ~/.ssh/id_rsa [email protected], и вам
необходимо использовать userid ubuntu. userid ubuntu – это userid по умолчанию для
развернутых ВМ.После выполнения вышеописанного вы можете получить доступ к развернутой ВМ с сервера ВМ
используя что-то вроде этого: ssh [email protected] (x.x.x.x – это IP-адрес
созданной ВМ Ubuntu) -
После того как это было исправлено, maas развернул на сервер ubuntu 14.04.
Если вы запустите virt-manager, вы сможете увидеть последовательность обработки во время развертывания. -
Теперь в тестовом случае, который мы проводили, наблюдая в virt-manager, мы заметили, что последовательность загрузки
по-прежнему была настроена на загрузку с сети, поэтому мы изменили ее на загрузку с диска. Остановили ВМ, перезапустили ВМ
и она загрузилась с ubuntu 14.04. -
Подключитесь к вновь созданной ВМ с помощью ssh [email protected] (x.x.x.x – это
IP-адрес созданной ВМ ubuntu). Обратите внимание, что вы можете получить новый IP-адрес
с страницы редактирования узла, перейдите вниз и выберите обнаруженную
информацию. IP-адрес будет указан в этой области ниже, вероятно, лучше
скопировать в блокнот, текстовый редактор и затем поискать начало адреса. Мы использовали
частную сеть, поэтому просто искали 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 для 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>
Ответ или решение
Ответ на вопрос: "Гость еще не инициализировал дисплей" при запуске VM на ppc64el
Объяснение:
Вы сталкиваетесь с проблемой "Guest has not initialized the display yet" при работе с виртуальными машинами в окружении ppc64el, запуская mini.iso для сетевой загрузки (PXE). Данная ошибка указывает на то, что операционная система гостевой машины еще не инициализировала графический интерфейс.
1. Можете ли вы использовать netboot mini.iso для VM?
Да, вы можете использовать netboot mini.iso для VM в вашем случае. Однако, базовая проблема может быть связана с несовместимостью графического адаптера, эмулируемого QEMU, с графическими драйверами в ядре, используемом вашей виртуальной машиной. Это может привести к тому, что ядро не сможет выполнить инициализацию графического устройства, что, в свою очередь, вызывает сообщение об ошибке.
2. Использование мини-ISO в VM может быть не совсем корректным
Из вашего описания вы указали, что используете графический интерфейс для взаимодействия с вашей виртуальной машиной, однако в случае проблем, описанных ранее, возможно будет лучше подключаться к VM через последовательный порт. Ваш файл XML уже включает создание последовательного порта, что позволяет использовать его для доступа к консоли.
Попробуйте удалить секцию <graphics>
из вашего XML-файла, чтобы избежать проблем с инициализацией графического интерфейса. Вы можете использовать команду virsh console <имя_вашей_машины>
, чтобы получить доступ к консоли вашей гостевой системы.
Пример изменения XML-конфигурации
Вот пример того, как вы могли бы изменить ваш XML-файл, убрав конфигурацию графического адаптера:
<domain type="kvm">
<name>vm5</name>
<uuid>1e964a47-4a69-4b59-a5b4-637a1234f47d</uuid>
<description>vm5 для 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>
<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! -->
</devices>
</domain>
Дополнительные шаги
- Проверьте конфигурацию вашего QEMU: Убедитесь, что версия QEMU поддерживает ppc64el и правильно настроена.
- Запуск виртуальной машины в режиме консоли: Используйте команду
virsh console <имя_вашей_машины>
для доступа к серийному порту, чтобы следить за выводом загрузки. - Настройка сети и дисков: Убедитесь, что в вашей конфигурации правильно настроены параметры сети и дисков для успешной загрузки.
После внесения вышеуказанных изменений, попробуйте снова запустить вашу виртуальную машину. Это должно помочь избежать проблем с графическим интерфейсом и наладить загрузку через мини-ISO.