Помилка VirtualBox після останнього оновлення програмного забезпечення (Ubuntu)


19
  • Версія Ubuntu: 16.04

  • Версія VirtualBox: 5.2.26

  • Оновлення, які щось "зламали": ті, що минули тиждень і сьогодні (2019/03/18)

Я запустив Ubuntu Software Updater сьогодні вранці, після включення комп'ютера. Після цього я спробував запустити машину Virtual Box (версія, встановлена ​​через .deb, а не програмний центр Ubuntu), і отримав цю відому помилку:

Kernel driver not installed (rc=-1908)

The VirtualBox Linux kernel driver (vboxdrv) is either not loaded or there is a permission problem with /dev/vboxdrv. Please reinstall the kernel module by executing

'/sbin/vboxconfig'

as root.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

Прочитавши про подібні проблеми та зрозумівши, навіщо це робити, я виконав її (ті ж результати із налаштуванням «sudo /usr/lib/virtualbox/vboxdrv.sh» та будь-якими іншими рішеннями подібних проблем / публікацій, які я знайшов на цьому сайті ):

$ sudo /sbin/vboxconfig

vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: Look at /var/log/vbox-setup.log to find out what went wrong.

Читаючи .log, я бачу, що проблема, здається, пов’язана з функцією "get_user_pages", і в цей момент я, чесно кажучи, не знаю, як її вирішити.

Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= -C /lib/modules/4.4.0-143-generic/build SUBDIRS=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j8 modules
make[1]: warning: -jN forced in submake: disabling jobserver mode.
mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/*
make -f ./scripts/Makefile.build obj=/tmp/vbox.0
[...]
[...]
[...]
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c: In function ‘rtR0MemObjNativeLockUser’:
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1122:33: warning: passing argument 6 of ‘get_user_pages’ makes pointer from integer without a cast [-Wint-conversion]
                                 fWrite,                 /* force write access. */
                                 ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: expected ‘struct page **’ but argument is of type ‘int’
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1124:33: warning: passing argument 7 of ‘get_user_pages’ from incompatible pointer type [-Wincompatible-pointer-types]
                                 &pMemLnx->apPages[0],   /* Page array. */
                                 ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: expected ‘struct vm_area_struct **’ but argument is of type ‘struct page **’
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:1112:18: error: too many arguments to function ‘get_user_pages’
             rc = get_user_pages(pTask,                  /* Task for fault accounting. */
                  ^
In file included from /tmp/vbox.0/r0drv/linux/the-linux-kernel.h:98:0,
                 from /tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.c:31:
include/linux/mm.h:1222:6: note: declared here
 long get_user_pages(struct task_struct *tsk, struct mm_struct *mm,
      ^
  gcc -Wp,-MD,/tmp/vbox.0/r0drv/linux/.mpnotification-r0drv-linux.o.d  -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/5/include  -I./arch/x86/include -Iarch/x86/include/generated/uapi -Iarch/x86/include/generated  -Iinclude -I./arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I./include/uapi -Iinclude/generated/uapi -include ./include/linux/kconfig.h -Iubuntu/include  -D__KERNEL__ -fno-pie -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -std=gnu89 -fno-PIE -fno-pie -no-pie -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -m64 -falign-jumps=1 -falign-loops=1 -mno-80387 -mno-fp-ret-in-387 -mpreferred-stack-boundary=3 -mskip-rax-setup -mtune=generic -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_X86_X32_ABI -DCONFIG_AS_CFI=1 -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_SSSE3=1 -DCONFIG_AS_CRC32=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -DCONFIG_AS_SHA1_NI=1 -DCONFIG_AS_SHA256_NI=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mindirect-branch=thunk-extern -mindirect-branch-register -DRETPOLINE -fno-delete-null-pointer-checks -Wno-maybe-uninitialized -O2 --param=allow-store-data-races=0 -DCC_HAVE_ASM_GOTO -Wframe-larger-than=1024 -fstack-protector-strong -Wno-unused-but-set-variable -fno-omit-frame-pointer -fno-optimize-sibling-calls -fno-var-tracking-assignments -pg -mfentry -DCC_USING_FENTRY -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fno-merge-all-constants -fmerge-constants -fno-stack-check -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -Werror=date-time -include /tmp/vbox.0/include/VBox/SUPDrvMangling.h -fno-omit-frame-pointer -fno-pie -I/lib/modules/4.4.0-143-generic/build/include -I/tmp/vbox.0/ -I/tmp/vbox.0/include -I/tmp/vbox.0/r0drv/linux -D__KERNEL__ -DMODULE -DRT_OS_LINUX -DIN_RING0 -DIN_RT_R0 -DIN_SUP_R0 -DVBOX -DRT_WITH_VBOX -DVBOX_WITH_HARDENING -DSUPDRV_WITH_RELEASE_LOGGER -Wno-declaration-after-statement -DCONFIG_VBOXDRV_AS_MISC -DRT_ARCH_AMD64 -DVBOX_WITH_64_BITS_GUESTS  -DMODULE  -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(mpnotification_r0drv_linux)"  -D"KBUILD_MODNAME=KBUILD_STR(vboxdrv)" -c -o /tmp/vbox.0/r0drv/linux/.tmp_mpnotification-r0drv-linux.o /tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.c
scripts/Makefile.build:285: recipe for target '/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o' failed
make[2]: *** [/tmp/vbox.0/r0drv/linux/memobj-r0drv-linux.o] Error 1
make[2]: *** Waiting for unfinished jobs....
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/initterm-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/initterm-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/SUPDrv.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/SUPDrv.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/assert-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/alloc-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/memuserkernel-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/mpnotification-r0drv-linux.o"; fi; fi;
  if [ "-pg" = "-pg" ]; then if [ /tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o != "scripts/mod/empty.o" ]; then ./scripts/recordmcount  "/tmp/vbox.0/r0drv/linux/mp-r0drv-linux.o"; fi; fi;
Makefile:1454: recipe for target '_module_/tmp/vbox.0' failed
make[1]: *** [_module_/tmp/vbox.0] Error 2
/tmp/vbox.0/Makefile.include.footer:101: recipe for target 'vboxdrv' failed
make: *** [vboxdrv] Error 2

Я вже пробував кожне рішення подібних проблем із цим повідомленням про помилку, але жодне не працює для мене.

У когось були подібні проблеми після останніх оновлень Ubuntu?

ОНОВЛЕННЯ: Я повністю видалив VirtualBox, перезавантажив систему, знову встановив VirtualBox і все одно та сама помилка.


2
Абсолютно. Що я не розумію, це те, що є люди, які стверджують, що попередня "версія" помилки повинна бути вирішена для Trusty та Xenial саме цього 10 березня, і сьогодні у нас є "нова версія" проблеми.
Альберто Мартін

Ви пробували VB 6.0?
гейннема

1
Я бачив це сьогодні після оновлення пари хост-машин до 4.4.0-143. Один мав досить стару версію VirtualBox (5.0.x), а інший 5.2.x (так що не зовсім така стара). Після оновлення жодна з них не запустила мої візитки, що показують, що в модулі ядра не встановлена ​​проблема. Я оновив / повернув до 5.1.38 на обох, нарешті, змусивши їх запустити VM. Однак, коли я намагаюся встановити додатки для гостей на одного з гостей, я отримую помилку get_user_pages у файлі vboxadd-install.log.
cosimo193

Я отримав таку ж помилку недавно, коли я намагався встановити Virtualbox 5.2.18, а потім v6.0, мій ноутбук, який є системою UEFI із захищеним завантаженням, тому є додаткове ускладнення, це ваша система UEFI, якщо мені дозволено знаю, як я знаю, як виправити цей adn може надати рішення. Ви можете підтвердити вашу систему UEFI чи ні, виконавши команду: cd / sys / firmware / efi

Якщо це може бути корисно для тих , хто: є звіт про помилку в bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1821083
Ganton

Відповіді:


13

Проста відповідь, поки що - використовуйте тестову збірку, надану Vbox, поки ми будемо чекати виправлення ядра.

Ви можете знайти збірку тут . Вам потрібно буде використовувати поточні посилання, надані на цій сторінці, оскільки ті, які використовуються тут у прикладі, змінилися.

Переконайтесь, що ви видалили поточну версію:

sudo apt remove virtualbox*
dkpk -r virtualbox 
# the tab key will autocomplete the version if there's one for dpkg to remove

Встановіть тестову збірку (змініть URL-адресу, щоб він відповідав останній тестовій збірці, наданій virtualbox за допомогою наведеного вище посилання - https://www.virtualbox.org/wiki/Testbuilds ):

wget https://www.virtualbox.org/download/testcase/VirtualBox-6.0.5-129423-Linux_amd64.run
chmod +x VirtualBox-6.0.5-129423-Linux_amd64.run
sudo ./VirtualBox-6.0.5-129423-Linux_amd64.run

Якщо вам потрібен пакет розширень (змініть URL-адресу, щоб він відповідав останній тестовій збірці, яку надає virtualbox за допомогою наведеного вище посилання - https://www.virtualbox.org/wiki/Testbuilds ):

wget https://www.virtualbox.org/download/testcase/Oracle_VM_VirtualBox_Extension_Pack-6.0.5-129380.vbox-extpack
sudo VBoxManage extpack install Oracle_VM_VirtualBox_Extension_Pack-6.0.5-129380.vbox-extpack

1
Дякую Робко. Я не встиг спробувати це; Я деградував VirtualBox і, в принципі, я просто зачекаю, поки воно буде виправлено, або просто до наступного ядра (мені дійсно не потрібна сама остання версія VirtualBox). Однак ваше рішення мені здається найкращим для тих, кому потрібна остання / перед останньою версією, наскільки вона є стабільною. Ви спробували самі? Чи стабільний він?
Альберто Мартін

Привіт Альберто. Так, я вважаю за краще не погіршувати ядро, і я спробував знизити версію vbox (можливо, я не повернувся досить далеко), але драйвер все ще не вдалося побудувати. Я зробив це для 4-х користувачів і не мав жодних проблем.
Робко

1
Дякую за відгук Робко. Звучить досить добре. У цьому випадку я думаю, що це найелегантніше рішення проблеми поки що.
Альберто Мартін

1
На цій сторінці ви можете знайти останні тестові версії: virtualbox.org/wiki/Testbuilds .
Том Салееба

2
Це застереження: "Будь ласка, також використовуйте версію 5.2, якщо вам все ще потрібна підтримка 32-бітних хостів, оскільки це було припинено в 6.0" virtualbox.org/wiki/Downloads . 32-розрядні гості все ще підтримуються.
Пісквор

4

У мене такі самі проблеми.

Я повернувся до попереднього ядра. Дивіться це: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/

після цього перевстановіть віртуальну скриньку і вона знову працює.

З повагою Алекс


Привіт Алекс. Наскільки це, напевно, може зробити хитрість, я вважаю це занадто безладним і часом ризикованим, ніж просто принизити той самий VirtualBox, який буде працювати ідеально.
Альберто Мартін

4

Це дуже схоже на відому помилку 1818049 під назвою "virtualbox dkms модулі не вдається створити з Linux 4.4.0-143.169 [помилка: занадто багато аргументів для функціонування" get_user_pages '] " .

Справжнє робоче рішення буде таким самим, як і для проблеми TTY - видаліть останні ядра та встановіть попереднє хороше ( 4.4.0-138-загальне виглядає найкраще для мене - USB 3.0 безпечно видалити буде працювати, проблема Getty буде відсутня):

sudo apt-get purge linux-image-generic linux-headers-generic
sudo apt-get purge linux-image-4.4.0-139-generic linux-headers-4.4.0-139-generic \
linux-image-4.4.0-140-generic linux-headers-4.4.0-140-generic \
linux-image-4.4.0-141-generic linux-headers-4.4.0-141-generic \
linux-image-4.4.0-142-generic linux-headers-4.4.0-142-generic \
linux-image-4.4.0-143-generic linux-headers-4.4.0-143-generic

sudo apt-get install amd64-microcode intel-microcode thermald
sudo apt-get autoremove

sudo apt-get install linux-image-4.4.0-138-generic linux-image-extra-4.4.0-138-generic
sudo apt-get install linux-headers-4.4.0-138 linux-headers-4.4.0-138-generic

і перезавантажте потім. Тому нам потрібно чекати нормального стабільного добре перевіреного ядра.

Попередження: не оновлюйте ядро до 4.4.0-143-generic, якщо вам потрібен VirtualBox для гостей та хостів. Підпишіться на помилку 1818049 і після підтвердження виправлення - встановіть новітнє ядро ​​назад із sudo apt-get install linux-image-generic linux-headers-generic.


3

Найпростіше виправити Ubuntu 16.04 - оновити ядро ​​до тієї ж версії, яку використовує Ubuntu 18.04, виконавши таку команду:

sudo apt-get install --install-recommends linux-generic-hwe-16.04

Перезавантажте після запуску вищевказаної команди.

Якщо ви запускаєте dkms, вам не доведеться перевстановлювати додатки для гостей після перезавантаження машини. В іншому випадку, перевстановіть гостьові доповнення, і це має справно працювати в Ubuntu 16.04


Дякую, працювали для мене
Джейсон Морган

2

Дуже схожий на Альберто

  1. налаштування sudo /usr/lib/virtualbox/vboxdrv.sh (я отримую помилки, але зупиняє VBox ...)
  2. sudo dpkg -l | grep virtualbox (отримати версію VBox.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (версія XYZ з кроку 2)
  4. Встановлено з програмного забезпечення Ubuntu: оновлено до 5.1.38

Знову і знову!


2

Намагаючись досить важко її вирішити (ні DKMS, ні Synaptics не здаються корисними як вирішення проблеми), я не зміг цього зробити, тому ТЕМПОРІЙНЕ рішення для тих, хто може опинитися в тій же ситуації, і просто для того, щоб щоб мати можливість продовжувати працювати з гостьовими машинами, пропоную повернути VirtualBox до версії, яку пропонує USC.

  • Просто видаліть поточну версію VirtualBox (я це робив за допомогою Synaptics, але GDebi чудово також працював).

  • Встановити запропоновану версію US VirtualBox (або через USC або Synaptics)

  • Поновлення (видалення-встановлення) модуля VBoxGuestAdditions в хост-машині.

  • У гостьових машинах пам’ятайте про пониження версії VBoxGuestAdditions (вставте старий компакт-диск VBoxGuestAdditions і запустіть його).

Проблема / помилка все ще існує, оскільки вона не дозволяє використовувати останню версію VirtualBox, я сподіваюся, що це допоможе, але я би вдячний за остаточне рішення, щоб мати можливість інсталювати та використовувати .deb версію знову.

ОНОВЛЕННЯ: Поки здається, що немає остаточного рішення, тому в моєму випадку * це продовжує бути найпростішим. (* Особисто я вважаю за краще знижувати версію VirtualBox, а не повертатися до попередніх ядер Ubuntu).

Однак якщо з будь-якої причини комусь потрібно використовувати / встановити останню версію VirtualBox, він міг би це зробити, дотримуючись цих інструкцій, також згаданих іншими користувачами: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + помилка / 1818049 / коментарі / 27


1

Я також бачив цю проблему. У мене є Ubuntu 16.04 LTS. Оновлено до ядра 4.4.0-143. Virtualbox (5.2.14) не створить vboxdrv.ko. Перехід на ядро ​​4.4.0-142 (потім видалення -143) вирішив проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.