Було трохи вільного часу і я вирішив погратись з Windows XP в останньому Virtualbox 6.1.26 і виявив що з нього прибрали реалізацію Direct3D! По форумам знайшов багато порад про 256MB ОЗУ для відео і маркнутий чекбокс "3d accelerated" і тд. Все спробував але нічого не працювало.
На одному з старих бордів була знайдена корисна інформація, що у версії 5.1.38 ця фіча працює. Тож я не вагаючись зніс нову версію і встановив стару з deb пакетів.

$ sudo apt purge virtualbox
$ wget https://download.virtualbox.org/virtualbox/5.1.38/virtualbox-5.1_5.1.38-122592~Ubuntu~bionic_amd64.deb
$ wget http://security.ubuntu.com/ubuntu/pool/main/libv/libvpx/libvpx5_1.7.0-3ubuntu0.18.04.1_amd64.deb
$ sudo dpkg -i virtualbox-5.1_5.1.38-122592~Ubuntu~bionic_amd64.deb 
$ sudo dpkg -i libvpx5_1.7.0-3ubuntu0.18.04.1_amd64.deb 
$ sudo dpkg -i virtualbox-5.1_5.1.38-122592~Ubuntu~bionic_amd64.deb

Воно встановилось, але з помилками. Декількох пакетів не вистачало.

 /bin/sh: 1: flex: not found
 /bin/sh: 1: bison: not found

Добре, не проблема. Ставлю з реп.

$ sudo apt install flex bison

Наступка проблема з похибкою в архітектурі процессора:

make[2]: *** No rule to make target 'arch/x86/entry/syscalls/syscall_32.tbl', needed by 'arch/x86/include/generated/uapi/asm/unistd_32.h'.  Stop.

Це була остання зупинка експериментів. Я вирішив повернути все як було. І з цього моменту починається пригода!

$ sudo apt install virtualbox

systemd[1]: Starting LSB: VirtualBox Linux kernel module...
virtualbox[6676]:  * Loading VirtualBox kernel modules...
virtualbox[6676]:  * modprobe vboxdrv failed. Please use 'dmesg' to find out why

When trying to start the VM it displays the info window:
Kernel driver not installed (rc=-1908)
The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

Перевіряю чи підвантажився модуль virtualbox в ядро:

$ lsmod | grep vbox

Модулів нема. Роблю реконфіг, що видаляє і компілює модуль під мій проц. Всі операції успішні, запевняє мене dkms.

$ sudo dpkg-reconfigure virtualbox-dkms

Але модуль не завантажується в ядро програмою modprobe:

$ sudo modprobe vboxdrv
modprobe: ERROR: could not insert 'vboxdrv': Exec format error

Якщо я вірно зрозумів корінь проблему, то він заключається якраз таки в базі на процессі компіляції.
Можливо різниця в версіях gcc, diff kernel і інших. Для перевірик версій використав наступні команди:

$ cat /proc/version
Linux version 5.13.0-22-generic (buildd@lgw01-amd64-012) (gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0, GNU ld (GNU Binutils for Ubuntu) 2.37) #22-Ubuntu SMP Fri Nov 5 13:21:36 UTC 2021
$ gcc --version
gcc (Ubuntu 11.2.0-7ubuntu2) 11.2.0
Copyright (C) 2021 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Всі вставлені версії збігаються з тими, якими компілювалось ядро. Я спробував компілювати за допомогою gcc-10 через команду update-alternatives, але все марно.
Доречі, перевірити інфо по модулю можно командою modinfo:

$ sudo modinfo vboxdrv
filename:       /lib/modules/5.13.0-22-generic/updates/dkms/vboxdrv.ko
version:        6.1.26_Ubuntu r145957 (0x00300000)
license:        GPL
description:    Oracle VM VirtualBox Support Driver
author:         Oracle Corporation
srcversion:     384D5079D63E907132614A5
depends:        
retpoline:      Y
name:           vboxdrv
vermagic:       5.13.0-22-generic SMP mod_unload modversions 
sig_id:         PKCS#7
signer:         XXX
sig_key:        61:25:97:55:99:82:F9:F4:77:EB:FF:51:E0:22:4C:F8:9F:57:A0:E1
sig_hashalgo:   sha512
signature:      XXXX
parm:           force_async_tsc:force the asynchronous TSC mode (int)

Настрій був зіпсований згаяними декількома годинами на ці пошуки і експериментию. Я почав втрачати здоровий глузд.
Наостанок я вирішив перевстановити заголовки поточного ядра. І ЦЕ СПРАЦЮВАЛО.

$ sudo apt install --reinstall linux-headers-$(uname -r) 
$ sudo dpkg-reconfigure virtualbox-dkms 
$ sudo modprobe vboxdrv

Після цього модулі були успішно завантажені в ядро і віртуалки запрацювали знову. АЛЕ, без підтримки Direct3D у WinXP.

Коментувати

Вміст цього поля є приватним і не буде доступний широкому загалу.
  • Не дозволено жодних HTML теґів.
 ooooo     ooo   .o88o.   .ooooo.                   .oooo.                     
`888' `8' 888 `" d88' `8. .dP""Y88b
888 8 o888oo Y88.. .8' oooo ooo ]8P' oooo oooo ooo
888 8 888 `88888b. `88b..8P' <88b. `88. `88. .8'
888 8 888 .8' ``88b Y888' `88b. `88..]88..8'
`88. .8' 888 `8. .88P .o8"'88b o. .88P `888'`888'
`YbodP' o888o `boood8' o88' 888o `8bd88P' `8' `8'


Уведіть код, зображений у стилі Ascii-Арт.