帮酷LOGO
0 0 评论
文章标签:Virtual  software-update  Virtualbox  Ubuntu  


问题:
  • 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中正常工作了




文章标签:Ubuntu  Virtual  Virtualbox  software-update  

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