最後の(Ubuntu)ソフトウェアアップデート後のVirtualBoxエラー


19
  • Ubuntuバージョン:16.04

  • VirtualBoxバージョン:5.2.26

  • 何か「壊れた」アップデート:先週から今日までのアップデート(2019/03/18)

コンピューターの電源を入れた後、今朝Ubuntu Software Updaterを実行しました。その後、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 /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を再度インストールしましたが、それでもまったく同じエラーです。


2
絶対に。私が理解していないのは、この3月10日にTrustyとXenialでエラーの以前の「バージョン」が解決されると主張する人々がいて、今日、問題の「新しいバージョン」があるということです。
アルベルトマルティン

VB 6.0を試しましたか?
ヘイネマ

1
いくつかのホストマシンを4.4.0-143に更新した後、今日これを見ました。1つにはかなり古いバージョンのVirtualBox(5.0.x)があり、もう1つには5.2.xがありました(それほど古くありません)。更新後、どちらもVMを起動せず、カーネルモジュールがインストールされていないという問題が表示されます。両方で5.1.38にアップグレード/リバートし、最終的にVMを実行できるようにしました。ただし、ゲストの1つにゲスト追加をインストールしようとすると、vboxadd-install.logファイルでget_user_pagesエラーが発生します。
cosimo193

Virtualbox 5.2.18、次にv6.0をインストールしようとしたときに同じエラーが表示されました。Latopはセキュアブートを備えたUEFIシステムであるため、さらに複雑になりますが、UEFIシステムです。私が知っているように、このADNを解決する方法を知っているので、解決策を提供できます。次のコマンドを実行して、システムがUEFIであるかどうかを確認できます。cd/ sys / firmware / efi

回答:


13

簡単な答えは、今のところ-カーネルパッチを待つ間、Vboxが提供するtestbuildを使用します。

ここでビルドを見つけることができます。この例で使用されているリンクは変更されているため、そのページで提供されている現在のリンクを使用する必要があります。

必ず現在のバージョンをアンインストールしてください。

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
おかげでロブコ。試してみる時間がありませんでした。VirtualBoxをダウングレードし、原則として、修正されるまで、または次のカーネルまで待つだけです(VirtualBoxの最後のバージョンは必要ありません)。しかし、あなたのソリューションは、安定している限り、最後の/前の最後のバージョンを必要とする人に最適です。自分で試してみましたか?安定していますか?
アルベルトマルティン

こんにちはアルベルト。はい、カーネルをダウングレードしないことを好み、vboxをダウングレードしようとしました(十分に戻っていない可能性があります)が、ドライバーをビルドできませんでした。私は4人のユーザーに対してこれを行いましたが、問題はありませんでした。
Robco

1
フィードバックをありがとうRobco。かなりいいですね。その場合、これはこれまでの問題に対する最もエレガントな解決策だと思います。
アルベルトマルティン

1
このページで最新のテストビルドを見つけることができます:virtualbox.org/wiki/Testbuilds
トムサレバ

2
これには警告があります:「32ビットホストのサポートがまだ必要な場合は、バージョン5.2も使用してください。これは6.0で廃止されたためです」virtualbox.org/wiki/Downloads 32ビットゲストは引き続きサポートされます。
Piskvor

4

私も同じ問題を抱えています。

以前のカーネルに切り替えました。これを参照してください:http : //karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/

その後、仮想ボックスを再インストールすると、再び機能します。

よろしくアレックス


やあアレックス。おそらくそれでうまくいくかもしれないが、完璧に機能するVirtualBoxを単にダウングレードするよりも、面倒で危険な場合があると思う。
アルベルトマルティン

4

これは、「virtualbox dkmsモジュールがlinux 4.4.0-143.169 [エラー:関数 'get_user_pages'への引数が多すぎます]」でビルドできないという既知のバグ1818049と非常によく似ています

実際の作業ソリューションは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を実行する場合、マシンの再起動後にゲスト追加を再インストールする必要はありません。それ以外の場合、ゲストの追加を再インストールすると、Ubuntu 16.04で正常に動作するはずです。


ありがとう、私のために働いた
ジェイソンモーガン

2

アルベルトのように

  1. sudo /usr/lib/virtualbox/vboxdrv.sh setup(エラーが表示されますが、VBoxが停止します...)
  2. sudo dpkg -l | grep virtualbox(VBoxバージョンを取得します。)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt(ステップ2のXYZバージョン)
  4. Ubuntuソフトウェアからインストール:5.1.38にダウングレード

再び稼働しています!


2

かなり一生懸命に解決しようとしましたが(DKMSもSynapticsも問題の回避策としては役に立たないようです)、同じ状況に陥る可能性のある人のための一時的な解決策として、私はそれを行うことができませんでしたゲストマシンでの作業を続けるには、VirtualBoxをUSCが提供するバージョンにダウングレードすることをお勧めします。

  • 現在のVirtualBoxバージョンをアンインストールするだけです(Synapticsを使用して実行しましたが、GDebiも完全に機能します)。

  • VirtualBox USC提供バージョンのインストール(USCまたはSynaptics経由)

  • ホストマシンのVBoxGuestAdditionsモジュールをダウングレード(アンインストールおよびインストール)します。

  • ゲストマシンで、VBoxGuestAdditionsを必ずダウングレードします(古いVBoxGuestAdditions CDを挿入して実行します)。

The problem/error is still there since it doesn't allow to use last VirtualBox version, I hope it helps though, but I would appreciate an ultimate solution in order to be able to install and use .deb version again.

UPDATE: So far it seems that there is not ultimate solution, so in my case* this one keeps on being the simplest one. (* Personally I prefer to downgrade VirtualBox instead of going back to previous Ubuntu kernels).

However, if for any reason someone needs to use/install the very last version of VirtualBox, he could do it following these instructions, also mentioned by other users: https://bugs.launchpad.net/ubuntu/+source/virtualbox/+bug/1818049/comments/27


1

I also saw this problem. I have Ubuntu 16.04 LTS. It updated to 4.4.0-143 kernel. Virtualbox (5.2.14) would not build vboxdrv.ko. Downgrading to kernel 4.4.0-142 (then removing -143) resolved the problem.

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.