마지막 (우분투) 소프트웨어 업데이트 후 VirtualBox 오류


19
  • 우분투 버전 : 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를 다시 설치했으며 여전히 동일한 오류가 발생했습니다.


2
물론. 내가 이해하지 못하는 것은 바로 3 월 10 일에 Trusty and Xenial에서 오류의 이전 "버전"이 해결되었다고 주장하는 사람들이 있다는 것입니다.
Alberto Martín

VB 6.0을 사용해 보셨습니까?
heynnema

1
오늘 두 개의 호스트 시스템을 4.4.0-143으로 업데이트 한 후 이것을 보았습니다. 하나는 꽤 오래된 버추얼 박스 버전 (5.0.x)을 가지고 있었고 다른 하나는 5.2.x (그래서 그리 오래된 버전은 아님)였습니다. 업데이트 후 어느 것도 커널 모듈이 설치되지 않음 문제를 나타내는 내 VM을 시작하지 않습니다. 둘 다 5.1.38로 업그레이드 / 복귀하여 마침내 VM을 실행했습니다. 그러나 게스트 중 하나에 게스트 추가를 설치하려고하면 vboxadd-install.log 파일에 get_user_pages 오류가 발생합니다.
cosimo193

Virtualbox 5.2.18을 설치하려고 시도한 후 보안 부팅이 포함 된 UEFI 시스템 인 v6.0을 설치하려고했을 때 최근에 동일한 오류가 발생했습니다. 따라서 합병증이 생겨서 UEFI 시스템입니다. 이 adn을 수정하는 방법을 알고 있으면 솔루션을 제공 할 수 있습니다. 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

테스트 빌드를 설치하십시오 (위 링크 ( 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

1
감사합니다 Robco. 시도해 볼 시간이 없었습니다. 나는 VirtualBox를 다운 그레이드하고 원칙적으로 수정 될 때까지 또는 다음 커널까지 기다릴 것입니다 (VirtualBox의 마지막 버전은 실제로 필요하지 않습니다). 그러나 귀하의 솔루션은 안정성이있는 한 마지막 / 이전 버전이 필요한 사람들에게 가장 적합한 솔루션입니다. 직접 해보셨습니까? 안정적입니까?
Alberto Martín

안녕하세요 알베르토. 예, 커널을 다운 그레이드하지 않고 vbox 다운 그레이드를 시도했지만 (아마도 충분히 돌아 가지 않았 음) 드라이버를 여전히 빌드 할 수 없었습니다. 나는 4 명의 사용자를 위해이 작업을 수행했으며 아무런 문제가 없었습니다.
Robco

1
피드백 Robco에 감사드립니다. 꽤 잘 들립니다. 이 경우 지금 까지이 문제에 대한 가장 우아한 해결책이라고 생각합니다.
Alberto Martín

1
당신은 최신 시험이 페이지에서 빌드 찾을 수 있습니다 virtualbox.org/wiki/Testbuilds를 .
Tom Saleeba

2
"6.0 버전에서 중단되었으므로 32 비트 호스트에 대한 지원이 여전히 필요한 경우 버전 5.2도 사용하십시오" virtualbox.org/wiki/Downloads에주의해야 합니다. 32 비트 게스트 는 계속 지원됩니다.
Piskvor


4

알려진 매우 유사이 외모 라는 이름의 버그 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.


3

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

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

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

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


감사합니다, 저를 위해 일했습니다
Jason Morgan

2

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로 다운 그레이드

다시 실행!


2

그것을 해결하기 위해 열심히 노력한 후에 (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


1

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

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.