
Було трохи вільного часу і я вирішив погратись з 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.