Я загружаю один и тот же раздел Linux как напрямую («голое железо»), так и в качестве гостя в VirtualBox в Windows.
Когда я загружаю этот раздел напрямую, он загружается и отображает рабочий стол нормально. Однако, когда я загружаюсь в виртуальной машине, я могу загрузиться в TTY нормально, используя systemd.unit=multi-user.target
параметры загрузки grub.
На моем ПК установлен графический процессор nVidia, поэтому для загрузки bare metal на нем установлены драйверы nvidia. Однако, когда я загружаю виртуальную машину, в ней нет графического процессора nVidia — VMWare предоставляет собственное виртуальное оборудование VGA. Насколько я понимаю, в Linux для этого есть встроенные драйверы, и они распознаются правильно:
$ lspci -k
...
00:02.0 VGA compatible controller: VMware SVGA II Adapter
Subsystem: VMware SVGA II Adapter
Kernel driver in use: vmwgfx
Kernel modules: vmwgfx
...
Если я запускаю VM с вышеуказанной опцией ядра, чтобы она загружалась в TTY, а затем вхожу в VM через ssh и запускаю sudo systemctl start graphical.target
, графический вывод VM снова показывает, что она падает прямо перед приглашением на вход. Это выглядит так:крушение. Журнал systemd содержит следующий лог:вывод журналаctl.
Я хотел бы иметь возможность загружаться без драйверов nvidia в виртуальной машине, но с драйверами nvidia при загрузке bare metal. Как это сделать? Я действительно хочу, чтобы это заработало. К сожалению, все обсуждения в сети об отключении драйверов nvidia без их удаления касаются переключения optimus / prime / gpu, когда у вас одновременно два gpu на ноутбуке, а в данном случае это не так. По сути, то, что я делаю, это как будто я вытаскиваю жесткий диск из ПК с gpu nvidia и вставляю его в тот, где есть обычный gpu (под маркой «VMware»), а затем вынимаю его оттуда и вставляю обратно в ПК с nvidia. Я мог бы видеть, что изменение конфигурации указывается, например, двумя отдельными вариантами выбора в grub, один для «linux с gpu nvidia» и один для «linux с gpu vmware», и мне нужно было бы выбрать правильный.
Я не уверен на 100%, но я понимаю, что драйвер nvidia патчит ядро, так что, может быть, есть способ сделать выбор между пропатченным ядром nvidia и не-nvidia ядром? Будет ли это хорошим подходом?
Я работаю на Ubuntu 18.04 x64 и использую nvidia-390, но я мог бы изменить версию на другую.
Буду признателен за любые подсказки.
решение1
Оказывается, нет необходимости отключать драйверы nVidia. Здесь происходит следующее: зависание вызвано ошибкой в VirtualBox. Переключение реализации графического контроллера с VMSVGA на VBoxVGA (а не VBoxSVGA) решило для меня проблему, и теперь я могу загрузить систему и получить рабочий стол.
Спасибо klaus-vb с канала vbox irc на Freenode за предложение этого решения. Он знал об ошибке в Ubuntu 18.04. Видимо, 18.10 в этом отношении лучше.