帮酷LOGO
  • 显示原文与译文双语对照的内容


問題:
  • Ubuntu版本:16.04

  • 朋克版本:5.2.26

  • 更新了「破壞」的東西: 上一周和今天之間的那些( 2019/03/18 )

今天早上我打開電腦後,運行了Ubuntu軟體更新軟體。 之後我試圖啟動一個Virtual Box機器(版本通過.dend安裝,而不是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,而且仍然是同樣的錯誤。


回答 1:

現在很容易回答 - 在我們等待內核補丁時使用Vbox提供的testbuild。

你可以在這裡找到構建

確保卸載你的當前版本:

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

安裝測試構建:

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

如果你需要擴展包:

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

回答 2:

我也有同樣的問題。

我切換到以前的內核。 請參閱:http://karlcode.owtelse.com/blog//reverting-to-a-previous-kernel/

之後,重新安裝Virtual Box,它再次工作。

Alex


回答 3:

This known dkms模塊無法構建,這看起來很類似於 linux: [ 函數'get_user_pages']"的參數太多。

真正的工作解決方案將與 TTY問題相同- 刪除最新內核並安裝以前好的( 如果你覺得我最好的話,你可以放心地刪除你的4.4.0-138-generic 3.0,這將會使你的問題消失。):

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

然後重啟,所以我們需要等待正常穩定的內核測試。

警告:如果您在guest虛擬機和主機上需要VirtualBox,請不要將內核升級到4.4.0-143-generic。 在確認修復后,訂閱 Bug 1818049,並在安裝新內核后重新安裝sudo apt-get install linux-image-generic linux-headers-generic


回答 4:

非常像 alberto

  • sudo /usr/lib/virtualbox/vboxdrv.sh setup(我收到錯誤,但停止VBox ...)
  • sudo dpkg -l | grep virtualbox ( 獲取VBox版本)
  • sudo 可以清除 virtualbox-5.XYZ virtualbox ( 來自步驟 2的XYZ版本)
  • 從Ubuntu軟體安裝:它降級到 5.1.38
  • 重新啟動並運行 !


回答 5:

我也看到了這個問題。 我有 Ubuntu 16.04版。 它更新到 4.4.0 -143內核。 Virtualbox ( 5.2.14 ) 不會將 vboxdrv.ko. 降級到內核 4.4.0 -142 ( 然後刪除 -143 ) 解決了問題。


回答 6:

Ubuntu 16.04最容易修復的是通過運行以下命令將內核升級到同一版本的Ubuntu 18.04:

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

運行上述命令后重新引導。

如果你運行 dkms,則在重新啟動機器后不必重新安裝客戶機添加。 另外,重新安裝來賓添加程序,它現在應該可以在 Ubuntu 16.04中正常工作了





Copyright © 2011 HelpLib All rights reserved.    知识分享协议 京ICP备05059198号-3  |  如果智培  |  酷兔英语