Каковы различия между VBoxVGA, VMSVGA и VBoxSVGA в VirtualBox?

VirtualBox 6.0 предоставляет новый параметр, называемый графический контроллер. Есть четыре варианта на выбор:

  • Никто
  • VBoxVGA
  • VMSVGA
  • VBoxSVGA

В руководстве пользователя я нашел эту информацию:

Графический контроллер: указывает тип графического адаптера, используемого гостевой виртуальной машиной. Обратите внимание, что вы должны установить гостевые дополнения на гостевой виртуальной машине, чтобы указать графический контроллер VBoxSVGA или VMSVGA. Доступны следующие опции:
- VBoxSVGA: графический контроллер по умолчанию для новых виртуальных машин, использующих Linux или Windows 7 или более позднюю версию. Этот графический контроллер улучшает производительность и поддержку 3D по сравнению с устаревшей опцией VBoxVGA.
- VBoxVGA: используйте этот графический контроллер для устаревших гостевых ОС. Это графический контроллер по умолчанию для версий Windows до Windows 7.
- VMSVGA: используйте этот графический контроллер для эмуляции графического устройства VMware SVGA.
- Нет: не эмулирует тип графического адаптера.

Но все же это не описывает, какой из них и почему я должен предпочесть.
Когда я должен выбрать None?
VMSVGA лучше, чем VBoxSVGA?
Что не так с VBoxVGA?

Я протестировал загрузку archlinux-2019.02.01-x86_64.iso с virtualbox 6.0.4 в режимах efi и legacy:

┌──────────┬─────────────────────────────────┬─────────────┐
│ Adapter  │            EFI mode             │ Legacy mode │
├──────────┼─────────────────────────────────┼─────────────┤
│ VBoxVGA  │ ok                              │ ok          │
│ VMSVGA   │ ok in systemd-boot menu,        │ ok          │
│          │ then black screen for some time │             │
│          │ when booting, then becomes ok   │             │
│ VBoxSVGA │ black screen                    │ ok          │
└──────────┴─────────────────────────────────┴─────────────┘

Также я заметил, что при VMSVGA и VBoxSVGA передача видео = параметр XRESxYRES игнорируется:

+----------+----------------+--------------+
| Adapter  |    EFI mode    | Legacy mode  |
+----------+----------------+--------------+
| VBoxVGA  | works          | works        |
| VMSVGA   | doesn't work   | doesn't work |
| VBoxSVGA | could not test | doesn't work |
+----------+----------------+--------------+

Но все еще можно установить некоторые из этих игнорируемых разрешений после загрузки с помощью fbset.

7 ответов

Решение

Основываясь на том, что я нашел в исходном коде:

VBoxVGA

Это эмулирует графический адаптер, специфичный для VirtualBox, так же, как и в предыдущих версиях (<6.0.0).

  • Это значение по умолчанию для изображений, созданных для предыдущих версий VirtualBox (<6.0.0) и для гостей Windows до Windows 7.
  • Он имеет некоторую форму трехмерного сквозного прохождения, но - если я правильно помню - использует небезопасный подход, который просто позволяет гостю сбрасывать любые и все команды на графический процессор хоста.
  • Использование его на гостевой системе Linux требует установки гостевых дополнений, поскольку этот адаптер (пока) не поддерживается основным ядром Linux.
  • Поддерживает только OpenGL 1.1 на 64-битной Windows 10 и всех гостях Linux.

Эта опция, вероятно, существует только для обеспечения непрерывности - после обновления до 6.0 на всех старых виртуальных машинах этот режим выбирается автоматически, поэтому никаких неожиданных изменений в поведении не происходит; Вы не потеряете ускорение, которое у вас было раньше.

VMSVGA

Это эмулирует графический адаптер VMware Workstation с помощью метода ускорения "VMware SVGA 3D".

  • Вопреки тому, что написано в руководстве, это в настоящее время по умолчанию для гостей Linux.
  • Предполагается, что он обеспечивает лучшую производительность и безопасность, чем старый метод.
  • Это поддерживается основным ядром Linux, использующим драйвер SVGA.
  • Поддерживает OpenGL 2.1 на всех гостях Windows и Linux.
  • Он также может иметь преимущество поддержки старых операционных систем, в которых были доступны гостевые дополнения VMware, но не гостевые дополнения VirtualBox. (Я планирую протестировать это с Windows 9x, что в противном случае является огромной болью, даже если графика VESA работает с VirtualBox)

VBoxSVGA

Это обеспечивает гибридное устройство, которое работает как VMSVGA (включая его новые возможности 3D ускорения), но сообщает тот же старый PCI VID:PID, что и VBoxVGA.

  • Это по умолчанию для гостей Windows.
  • Преимущество этого режима заключается в том, что вы можете обновить существующие виртуальные машины (которые ранее использовали VBoxVGA и имели установленный видеодрайвер VirtualBox), и они не теряют свою графику в процессе - они по-прежнему видят одно и то же устройство, пока вы не обновите "guest" дополнения "в любое время, чтобы включить 3D-ускорение.
  • Кроме того, поскольку это все еще VMware SVGA, эмулируемая VirtualBox, выбор этой опции и использование драйвера VirtualBox могут иметь преимущества перед VMware, например, позволяют использовать дополнительные функции, специфичные для VirtualBox.

"Никто"

Это, очевидно, не эмулируемая графика вообще. Используйте его только в том случае, если вы предоставляете реальный графический процессор через PCI, или если вашей системе абсолютно не нужен графический процессор.

источники

Но они точно говорят вам, когда вы должны их предпочесть:

- VBoxSVGA: графический контроллер по умолчанию для новых виртуальных машин, использующих Linux или Windows 7 или более позднюю версию. Этот графический контроллер улучшает производительность и поддержку 3D по сравнению с устаревшей опцией VBoxVGA.

  • Linux или Windows >7
  • улучшает производительность и поддержку 3D

- VBoxVGA: используйте этот графический контроллер для устаревших гостевых ОС. Это графический контроллер по умолчанию для версий Windows до Windows 7.

  • (вывод) немного более низкая производительность, но большая совместимость со старыми ОС
  • Старая ОС или Windows < 7

- VMSVGA: используйте этот графический контроллер для эмуляции графического устройства VMware SVGA.

  • Эмулирует устройство VMWare
  • вероятно, лучше всего, когда ваша виртуальная машина была изначально настроена на VMWare и на ней установлены инструменты
  • может быть не так быстро, как карты VBox, потому что он пытается быть совместимым с чем-то другим.

- Нет: не эмулирует тип графического адаптера.

  • вам не нужен графический адаптер
    то есть вы хотите запускать машину без заголовка или по SSH и вам не нужны накладные расходы на эмуляцию графики.
  • может улучшить производительность, так как удаляет слой или эмуляцию

Одно отличие - производительность. Тестирование с glxgears, Я получил:

  • VBoxVGA: 60 кадров в секунду +/- 2 (очень мало, но перемещение окна не плавное, поэтому кажется правдоподобным)
  • VMSVGA: 1570 кадров в секунду +/- 50 (после перезагрузки я получаю 1300 кадров в секунду +/- 200?!)
  • VBoxSVGA: 970 кадров в секунду +/- 30 (в этом режиме Cinnamon предупреждает меня, что графика среды рабочего стола работает на ЦП)

Гостевые дополнения уже были обновлены из репозиториев Debian до того, как в первый раз появилось предупреждение об устаревании VBoxVGA, поэтому я мог просто переключить его, не выполняя предварительное обновление. Проверьте свою версию с помощью dpkg -l | grep virtualbox.

Гостевые дополнения - это версия 6.0.4, mesa-utils (содержащий glxgears) 8.4.0-1+b1, базовая ОС - Debian 10 (Buster) с Cinnamon.

В виртуальной машине включен PAE/NX, 3D-ускорение, но нет 2D-ускорения, назначено 2 ЦП (у хоста 2 ядра по 2 потока в каждом), PV по умолчанию, включен VT-x/AMD-V и вложенная подкачка.

Я смог автоматически установить разрешение гостя с wayland композитор только с использованием VBoxSVGA, virtualbox-guest-additions не может auto-resize guest display с wayland когда используешь VMSVGA,

VBoxSVGA не распознаетCustomVideoMode1[1] только VMSVGA распознает и применяет их.

Это может быть проблема с wayland и swayvm, кто знает; не смог придумать лучшего решения.

[1] https://www.virtualbox.org/manual/ch09.html#customvesa

VBoxVGA запоминает и восстанавливает настройки размера гостевого окна Windows. VBoxSVGA НЕ запоминает настройки размера.

Я хочу, чтобы мои гости Windows открывались с размером экрана 1240x712. Если я использую VBoxSVGA, гости всегда открываются с разрешением 1024x768, а затем мне нужно изменить их размер.

Если я использую VBoxVGA, отображение сохраняется / восстанавливается, хосты открываются с разрешением 1240x712 без дополнительной настройки.

Фактически, если параметр "Настроить размер окна" используется для изменения отображения, завершение работы гостевой системы Windows и создание снимков сохранят новый параметр. VBoxSVGA игнорирует изменения текущего размера.

У меня была аналогичная проблема с Fedora 31. Возможно, вам придется перейти в "Настройки> Устройства> Дисплей> Разрешение" и выбрать разрешение вручную. После того, как вы правильно установили гостевые дополнения, разрешение вашего хоста будет в списке поддерживаемых разрешений для гостя.

В Ubuntu это было бы

  1. Откройте Обзор действий и начните вводить Дисплеи.

  2. Щелкните "Дисплеи", чтобы открыть панель.

  3. Если у вас несколько дисплеев, и они не являются зеркальными, у вас могут быть разные настройки для каждого дисплея. Выберите дисплей в области предварительного просмотра.

  4. Выберите разрешение или масштаб и выберите ориентацию.

  5. Щелкните Применить. Новые настройки будут применены в течение 20 секунд перед возвратом. Таким образом, если вы ничего не видите с новыми настройками, ваши старые настройки будут автоматически восстановлены. Если вас устраивают новые настройки, нажмите "Сохранить изменения".

Другие вопросы по тегам