Son (Ubuntu) Yazılım Güncellemesinden Sonra VirtualBox Hatası


19
  • Ubuntu sürümü: 16.04

  • VirtualBox sürümü: 5.2.26

  • Bir şeyi "bozan" güncellemeler: geçen hafta ile bugün (2019/03/18) arasındaki güncellemeler

Bilgisayarı açtıktan sonra bu sabah Ubuntu Yazılım Güncelleyicisini çalıştırdım. Daha sonra bir Sanal Kutu makinesi (Ubuntu Yazılım Merkezi değil, .deb üzerinden yüklenmiş sürüm) başlatmaya çalıştım ve şu ünlü hatayı aldım:

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.

Benzer sorunları okuduktan ve neden yapmam gerektiğini anladıktan sonra, uyguladım ('sudo /usr/lib/virtualbox/vboxdrv.sh kurulum' ve bu sitede bulduğum benzer sorunlara / yayınlara yönelik diğer sonuçlarla aynı sonuçları aldım. ):

$ 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'u okuduğumda, sorunun "get_user_pages" fonksiyonu ile ilişkili olduğunu görüyorum ve bu noktada dürüstçe nasıl çözeceğimi bilmiyorum.

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

Zaten bu hata mesajı ile benzer sorunlar için her çözümü denedim ama hiçbiri benim için çalışmıyor.

Son Ubuntu güncellemelerinden sonra benzer sorunlar yaşayan var mı?

GÜNCELLEME: VirtualBox'ı tamamen kaldırdım, sistemi yeniden başlattım, VirtualBox'ı tekrar kurdum ve yine aynı hata.


2
Kesinlikle. Anlamadığım şey, 10 Mart'ta Trusty ve Xenial için hatanın önceki "versiyonunun" çözüleceğini iddia eden insanlar var ve bugün sorunun "yeni bir versiyonuna" sahibiz.
Alberto Martín

VB 6.0'ı denediniz mi?
heynnema

1
Bugün birkaç ana makineyi 4.4.0-143'e güncelledikten sonra gördüm. Biri üzerinde VirtualBox'ın oldukça eski bir sürümü vardı (5.0.x) ve diğeri 5.2.x (çok eski değil) vardı. Güncellemeden sonra ikisi de çekirdek modülünün kurulu olmadığını gösteren VM'lerimi başlatamaz. Her ikisinde de 5.1.38'e yükselttim / geri döndüm, sonunda VM'leri çalıştırmalarını sağladım. Ancak, konuklardan birine konuk eklemeleri yüklemeye çalıştığımda vboxadd-install.log dosyasında get_user_pages hatası alıyorum.
cosimo193

Yakın zamanda Virtualbox 5.2.18 ve daha sonra v6.0'ı yüklemeye çalıştığımda aynı hatayı aldım, Güvenli Önyükleme ile bir UEFI sistemi olan latopum, bu yüzden ek bir komplikasyon var, eğer bana izin verirseniz bir UEFI sistemi Bu adn nasıl düzeltileceğini biliyorum bir çözüm sağlayabilir biliyorum. Aşağıdaki komutu çalıştırarak sisteminizin UEFI olup olmadığını onaylayabilirsiniz: cd / sys / firmware / efi

Yanıtlar:


13

Şimdilik kolay cevap - bir çekirdek yaması beklerken Vbox tarafından sağlanan test yapısını kullanın.

Yapıyı burada bulabilirsiniz . Örnekte burada kullanılanlar değiştiği için o sayfada verilen mevcut bağlantıları kullanmanız gerekecektir.

Mevcut sürümünüzü kaldırdığınızdan emin olun:

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

Test derlemesini yükleyin (URL'yi yukarıdaki bağlantıyı kullanarak virtualbox tarafından sağlanan en son test derlemesine uyacak şekilde değiştirin - 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

Uzantı paketine ihtiyacınız varsa (yukarıdaki bağlantıyı kullanarak sanal kutu tarafından sağlanan en son test yapısına uyacak şekilde URL'yi değiştirin - 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
Teşekkürler Robco. Denemek için zamanım olmadı; VirtualBox'ı düşürdüm ve prensip olarak sadece düzeltilene kadar veya bir sonraki çekirdeğe kadar bekleyeceğim (gerçekten VirtualBox'un son sürümüne ihtiyacım yok). Ancak, çözümünüz, kararlı olduğu sürece, son sürüme / son sürüme ihtiyaç duyanlar için bana en iyi çözümdür. Kendiniz denediniz mi? Kararlı mı?
Alberto Martín

Merhaba Alberto. Evet, çekirdeği eski sürüme geçirmemeyi tercih ediyorum ve vbox'ı düşürmeyi denedim (belki de yeterince geriye gitmedim) ama sürücü hala kurulamadı. Bunu 4 kullanıcı için yaptım ve hiçbir sorun yaşamadım.
Robco

1
Geri bildiriminiz için teşekkür ederiz Robco. Kulağa hoş geliyor. Bu durumda, bu sorunun şimdiye kadarki en zarif çözümü olduğunu düşünüyorum.
Alberto Martín

1
En son test yapılarını şu sayfada bulabilirsiniz: virtualbox.org/wiki/Testbuilds .
Tom Saleeba

2
Bunun bir uyarısı var: "6.0'da kullanımdan kaldırıldığından 32 bit ana bilgisayarlar için hala desteğe ihtiyacınız varsa lütfen 5.2 sürümünü de kullanın" virtualbox.org/wiki/Downloads . 32 bit konuklar hala desteklenmektedir.
Piskvor


4

Bu , "virtualbox dkms modülleri linux 4.4.0-143.169 [hata: 'get_user_pages'] işlevini yerine getirmek için çok fazla bağımsız değişken oluşturulamadı .

Gerçek çalışma çözümü TTY problemiyle aynı olurdu - en son çekirdekleri kaldırın ve önceki iyi olanı yükleyin ( 4.4.0-138-jenerik benim için en iyi görünüyor - USB 3.0 güvenli bir şekilde kaldırılacak , getty sorunu olmayacak):

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

ve daha sonra yeniden başlatın. Bu yüzden normal kararlı iyi test edilmiş çekirdeği beklememiz gerekiyor .

Uyarı: Konuklar ve ana bilgisayarlarda VirtualBox'a ihtiyacınız varsa çekirdeği 4.4.0-143-jenerik sürümüne yükseltmeyin . Hata 1818049'a abone olun ve düzeltmenin onaylanmasından sonra en yeni çekirdeği geri yükleyin sudo apt-get install linux-image-generic linux-headers-generic.


3

Ubuntu 16.04 için en kolay düzeltme, aşağıdaki komutu çalıştırarak çekirdeği Ubuntu 18.04'ün kullandığı aynı sürüme yükseltmektir:

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

Yukarıdaki komutu çalıştırdıktan sonra yeniden başlatın.

Dkms çalıştırırsanız, makine yeniden başlatıldıktan sonra konuk eklentilerini yeniden kurmanız gerekmez. Aksi takdirde, konuk eklemelerini yeniden yükleyin ve şimdi Ubuntu 16.04'te iyi çalışmalıdır.


Teşekkürler, benim için çalıştı
Jason Morgan

2

Alberto'nunki gibi

  1. sudo /usr/lib/virtualbox/vboxdrv.sh kurulum (Hata alıyorum, ancak VBox'ı durduruyor ...)
  2. sudo dpkg -l | grep virtualbox (VBox sürümünü edinin.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (2. adımdan XYZ sürümü)
  4. Ubuntu Yazılımından Yüklendi: 5.1.38'e düşürüldü

Tekrar çalışıyor!


2

Bunu çözmek için çok uğraştıktan sonra (ne DKMS ne de Synaptics sorun için geçici olarak yararlı görünmüyor), bunu yapamadım, bu yüzden aynı durumda ve sırayla olanlar için GEÇİCİ bir çözüm olarak konuk makinelerle çalışmaya devam edebilmek için VirtualBox'ı USC'nin sunduğu sürüme indirmenizi öneririm.

  • Sadece mevcut VirtualBox sürümünü kaldırın (Synaptics ile yaptım, ancak GDebi de mükemmel çalışır).

  • VirtualBox USC tarafından sunulan sürümü yükleyin (USC veya Synaptics üzerinden)

  • Ana makinede VBoxGuestAdditions modülünü eski sürüme geçirin (kaldırın-yükleyin).

  • Konuk makinelerde, VBoxGuestAdditions'ı eski sürüme geçirmeyi unutmayın (eski VBoxGuestAdditions CD'sini takın ve çalıştırın).

Son VirtualBox sürümünü kullanmaya izin vermediği için sorun / hata hala orada, umarım olsa da yardımcı olur, ancak .deb sürümünü tekrar yükleyip kullanabilmek için nihai bir çözümü takdir ediyorum.

GÜNCELLEME: Şimdiye kadar nihai bir çözüm yok gibi görünüyor, bu yüzden benim durumumda * bu en basit çözüm olmaya devam ediyor. (* Şahsen ben önceki Ubuntu çekirdeklerine geri dönmek yerine VirtualBox'ı düşürmeyi tercih ediyorum).

Ancak, herhangi bir nedenle birinin VirtualBox'ın en son sürümünü kullanması / yüklemesi gerekiyorsa, bunu diğer kullanıcılar tarafından da belirtilen şu talimatları izleyerek yapabilir: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + böcek / 1818049 / yorum / 27


1

Ben de bu sorunu gördüm. Ubuntu 16.04 LTS var. 4.4.0-143 çekirdeğine güncellendi. Virtualbox (5.2.14) vboxdrv.ko oluşturmaz. Çekirdek 4.4.0-142'ye (daha sonra -143 kaldırılırsa) düşürülmesi sorunu çözdü.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.