Bug 40774

Summary: vboxvideo вешает Workstation-9.2 в virtualbox
Product: Альт Рабочая станция Reporter: Anton Protopopov <antoniopost>
Component: Ошибки работыAssignee: Mikhail Efremov <sem>
Status: NEW --- QA Contact: qa-p8 <qa-p8>
Severity: normal    
Priority: P5 CC: boyarsh, greh, mike, nir, sin
Version: 9.2   
Hardware: x86_64   
OS: Linux   

Description Anton Protopopov 2021-08-18 00:21:39 MSK
Установленная по умолчанию виртуальная машина падает (ядро сегфолтится) при загрузке драйвера vboxvideo в режимах VBoxVGA и VBoxSVGA. При этом в режиме VMSVGA машина грузится, но графика не стартует.

Проблема возникает в связи с тем, что в initrd кешируются апстримные (стоковые) драйвера vboxguest и vboxsf:
- kernel/drivers/virt/vboxguest/vboxguest.ko
- kernel/fs/vboxsf/vboxsf.ko

При этом в правилах загрузки по умолчанию задана явная загрузка внешних (родных) драйверов, в частности vboxvideo:
# cat /etc/modprobe.d/virtualbox-vboxvideo.conf
install vboxvideo /sbin/modprobe vboxvideovbox
blacklist vboxvideo

Коллизия возникает из-за конфликта драйверов разной "природы" загруженных не целостно. А для драйвера vboxsf проблема конфликта с новыми ядрами в релизе virtualbox-6.1.18-alt1 не решена системно - модуль не переимнован в vboxsfvbox и для него не созданы правила загрузки. Эта проблема исправлена в virtualbox-6.1.24-alt1 и старше.

Список всех vbox-драйверов:

c245 ~ # cd /lib/modules/5.10.52-un-def-alt1/
c245 5.10.52-un-def-alt1 # find . |grep vbox
./misc/vboxvideovbox.ko
./misc/vboxnetflt.ko
./misc/vboxguestvbox.ko
./misc/vboxdrv.ko
./misc/vboxsf.ko
./misc/vboxnetadp.ko
./kernel/drivers/virt/vboxguest
./kernel/drivers/virt/vboxguest/vboxguest.ko
./kernel/drivers/gpu/drm/vboxvideo
./kernel/drivers/gpu/drm/vboxvideo/vboxvideo.ko
./kernel/fs/vboxsf
./kernel/fs/vboxsf/vboxsf.ko

Решение.

Отключить загрузку родных гостевых драйверов путём удаления правил их загрузки вместе с родными драйверами (остаются стоковые):

# apt-get remove virtualbox-guest-common-vboxvideo virtualbox-guest-common-vboxguest
# make-initrd

При этом виртуальный драйвер VMSVGA не работает, если не отключить автозагрузку vbox-драйверов:

В случае, если автозагрузку vbox-драйверов отключена, для виртуальный драйвер VMSVGA автоматически подргужается драйвер vmwgfx и графика работает.

Также, если автозагрузку vbox-драйверов отключена, для виртуальных драйверов VBoxVGA и VBoxSVGA автоматически подргужается драйвер vboxvideo и графика тоже работает.

Однако, при отключенной автозагрузке vbox-драйверов, автоматически не подгружается драйвер vboxsf.


Другой вариант решения (требует уточнений, поясняет суть проблемы). 

# cd /lib/modules/5.10.52-un-def-alt1
# mv ./misc/vboxsf.ko ./misc/vboxsfvbox.ko
# cat >/etc/modprobe.d/virtualbox-vboxsf.conf 
install vboxsf /sbin/modprobe vboxsfvbox
blacklist vboxsf
^D
# depmod
# cat >>/etc/initrd.mk
BLACKLIST_MODULES += vboxguest vboxvideo vboxsf vmwgfx
^D
# make-initrd