마지막 (우분투) 소프트웨어 업데이트 후 VirtualBox 오류 mode. mkdir -p /tmp/vbox.0/.tmp_versions ; rm -f /tmp/vbox.0/.tmp_versions/* make

  • 우분투 버전 : 16.04

  • VirtualBox 버전 : 5.2.26

  • “깨진”업데이트 : 지난 주와 오늘 (2019/03/18)

오늘 아침에 컴퓨터를 켜고 우분투 소프트웨어 업데이터를 실행했습니다. 그 후 Virtual Box 컴퓨터 (Ubuntu Software Center가 아닌 .deb를 통해 설치된 버전)를 시작하려고 시도했는데 그 유명한 오류가 발생했습니다.

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 setup’과 동일한 결과 및이 사이트에서 찾은 비슷한 문제 / 게시물에 대한 다른 솔루션 ) :

$ 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

나는이 오류 메시지와 비슷한 문제에 대해 모든 해결책을 이미 시도했지만 아무것도 효과가 없습니다.

마지막 우분투 업데이트 후에 비슷한 문제가 있습니까?

업데이트 : VirtualBox를 완전히 제거하고 시스템을 다시 시작한 후 VirtualBox를 다시 설치했으며 여전히 동일한 오류가 발생했습니다.



답변

쉬운 대답은 지금-커널 패치를 기다리는 동안 Vbox에서 제공하는 테스트 빌드를 사용하는 것입니다.

여기서 빌드를 찾을 수 있습니다 . 예제에서 여기에 사용 된 링크가 변경되었으므로 해당 페이지에 제공된 현재 링크를 사용해야합니다.

현재 버전을 제거했는지 확인하십시오.

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

테스트 빌드를 설치하십시오 (위 링크 ( https://www.virtualbox.org/wiki/Testbuilds )를 사용하여 virtualbox가 제공 한 최신 테스트 빌드와 일치하도록 URL을 변경 하십시오 ).

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

확장팩이 필요한 경우 (위 링크 ( https://www.virtualbox.org/wiki/Testbuilds )를 사용하여 virtualbox에서 제공하는 최신 테스트 빌드와 일치하도록 URL을 변경 하십시오 ) :

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


답변

나는 같은 문제가 있습니다.

이전 커널로 다시 전환했습니다. 이것을보십시오 : http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/

그 후 가상 상자를 다시 설치하면 다시 작동합니다.

알렉스 감사합니다


답변

알려진 매우 유사이 외모 라는 이름의 버그 1818049 “버추얼 DKMS 모듈은 리눅스 4.4.0-143.169로 빌드 실패 [오류 : 함수에 너무 많은 인수 ‘get_user_pages’]” .

실제 작업 솔루션은 TTY 문제 와 동일합니다 -최신 커널을 제거하고 이전의 좋은 커널을 설치하십시오 ( 4.4.0-138-generic 이 가장 적합합니다 -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

나중에 재부팅하십시오. 따라서 정상적이고 안정적인 테스트를 거친 커널 을 기다려야합니다 .

경고 : 게스트 및 호스트에서 VirtualBox가 필요한 경우 커널을 4.4.0-143-generic로 업그레이드하지 마십시오 . 버그 1818049를 구독 하여 수정 프로그램을 확인한 후 최신 커널을 다시 설치하십시오 sudo apt-get install linux-image-generic linux-headers-generic.


답변

Ubuntu 16.04의 가장 쉬운 수정 방법은 다음 명령을 실행하여 커널을 Ubuntu 18.04와 동일한 버전으로 업그레이드하는 것입니다.

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

위 명령을 실행 한 후 재부팅하십시오.

dkms를 실행하면 컴퓨터를 재부팅 한 후 게스트 추가를 다시 설치할 필요가 없습니다. 그렇지 않으면 게스트 추가를 다시 설치하면 우분투 16.04에서 정상적으로 작동합니다.


답변

Alberto와 매우 흡사

  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 (2 단계의 XYZ 버전)
  4. 우분투 소프트웨어에서 설치 : 5.1.38로 다운 그레이드

다시 실행!


답변

그것을 해결하기 위해 열심히 노력한 후에 (DKMS 나 시냅틱 스가 문제의 해결 방법으로 유용하지 않은 것 같습니다), 같은 상황에 처한 사람들을위한 임시 솔루션처럼 해결할 수 없었습니다. 게스트 컴퓨터 작업을 계속하려면 VirtualBox를 USC 제공 버전으로 다운 그레이드하는 것이 좋습니다.

  • 현재 VirtualBox 버전을 제거하십시오 (시냅틱을 통해 수행했지만 GDebi도 완벽하게 작동합니다).

  • VirtualBox USC 제공 버전 설치 (USC 또는 Synaptics를 통해)

  • 호스트 시스템에서 VBoxGuestAdditions 모듈을 다운 그레이드 (설치 제거)합니다.

  • 게스트 컴퓨터에서 VBoxGuestAdditions를 다운 그레이드해야합니다 (이전 VBoxGuestAdditions CD를 넣고 실행).

마지막 VirtualBox 버전을 사용할 수 없으므로 문제 / 오류가 여전히 있습니다.하지만 도움이되기를 바랍니다.하지만 .deb 버전을 다시 설치하고 사용할 수있는 궁극적 인 솔루션에 감사드립니다.

업데이트 :
지금까지 궁극적 인 해결책은없는 것 같습니다 . 그래서 제 경우에는 이것이 가장 간단한 해결책입니다. (* 개인적으로 이전 우분투 커널로 돌아 가지 않고 VirtualBox를 다운 그레이드하는 것을 선호합니다).

그러나 어떤 이유로 든 누군가가 최신 버전의 VirtualBox를 사용 / 설치해야하는 경우 다른 사용자가 언급 한 다음 지침에 따라이를 수행 할 수 있습니다.
https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + 버그 / 1818049 / 댓글 / 27


답변

나는 또한이 문제를 보았다. 우분투 16.04 LTS가 있습니다. 4.4.0-143 커널로 업데이트되었습니다. Virtualbox (5.2.14)는 vboxdrv.ko를 빌드하지 않습니다. 커널 4.4.0-142로 다운 그레이드 (-143 제거)하면 문제가 해결되었습니다.