Lỗi VirtualBox sau lần cập nhật phần mềm (Ubuntu) mới nhất


19
  • Phiên bản Ubuntu: 16.04

  • Phiên bản VirtualBox: 5.2.26

  • Các bản cập nhật đã "hỏng" một cái gì đó: những bản cập nhật từ tuần trước đến hôm nay (2019/03/18)

Tôi đã chạy Ubuntu Software Updater sáng nay, sau khi bật máy tính. Sau đó, tôi đã thử khởi chạy một máy Virtual Box (phiên bản được cài đặt qua .deb, không phải là Trung tâm phần mềm Ubuntu) và đã gặp phải lỗi nổi tiếng đó:

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.

Sau khi đọc về các vấn đề tương tự và hiểu tại sao tôi nên làm điều đó, tôi đã thực hiện nó (kết quả tương tự với 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' và bất kỳ giải pháp nào khác cho các vấn đề / bài đăng tương tự tôi đã tìm thấy trên trang web này ):

$ 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.

Đọc .log, tôi thấy rằng vấn đề dường như có liên quan đến chức năng "get_user_pages" và tại thời điểm này tôi thực sự không biết làm thế nào để giải quyết nó.

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

Tôi đã thử mọi giải pháp cho các vấn đề tương tự với thông báo lỗi này nhưng không có giải pháp nào phù hợp với tôi.

Bất cứ ai cũng có vấn đề tương tự sau khi cập nhật Ubuntu lần cuối?

CẬP NHẬT: Tôi đã gỡ cài đặt hoàn toàn VirtualBox, khởi động lại hệ thống, cài đặt lại VirtualBox và vẫn gặp lỗi tương tự.


2
Chắc chắn rồi. Điều tôi không hiểu là có những người cho rằng "phiên bản" lỗi trước đó sẽ được khắc phục cho Trusty và Xenial vào ngày 10 tháng 3 này và hôm nay chúng tôi có "phiên bản mới" của vấn đề.
Alberto Martín

Bạn đã thử VB 6.0 chưa?
heynnema

1
Tôi đã thấy điều này ngày hôm nay sau khi cập nhật một vài máy chủ lên 4.4.0-143. Một cái có phiên bản VirtualBox khá cũ trên đó (5.0.x) và cái kia có 5.2.x (vì vậy không quá cũ). Sau khi cập nhật, cả hai sẽ không khởi chạy máy ảo của tôi cho thấy mô-đun hạt nhân không được cài đặt. Tôi nâng cấp / hoàn nguyên lên 5.1,38 trên cả hai, cuối cùng để chúng chạy VM. Tuy nhiên, khi tôi cố gắng cài đặt bổ sung khách trên một trong số các khách, tôi gặp lỗi get_user_pages trong tệp vboxadd-install.log.
cosimo193

Gần đây tôi đã gặp lỗi tương tự khi tôi cố cài đặt Virtualbox 5.2.18 và v6.0, latop của tôi là hệ thống UEFI có Secure Boot, do đó, có một sự phức tạp thêm, đó là hệ thống UEFI của bạn, nếu đó là cho tôi biết như tôi biết làm thế nào để sửa adn này có thể cung cấp một giải pháp. Bạn có thể xác nhận hệ thống của mình có phải là UEFI hay không bằng cách chạy lệnh: cd / sys / firmware / efi

Nếu nó có thể hữu ích cho bất kỳ ai: có một báo cáo lỗi tại bug.launchpad.net/ubfox/+source/virtualbox/+orms/1821083
Ganton

Câu trả lời:


13

Câu trả lời dễ dàng, bây giờ - sử dụng testbuild do Vbox cung cấp trong khi chúng tôi chờ bản vá kernel.

Bạn có thể tìm thấy bản dựng ở đây . Bạn sẽ cần sử dụng các liên kết hiện tại được cung cấp trên trang đó vì các liên kết được sử dụng ở đây trong ví dụ đã thay đổi.

Hãy chắc chắn rằng bạn gỡ cài đặt phiên bản hiện tại của bạn:

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

Cài đặt bản dựng thử nghiệm (thay đổi url để khớp với bản dựng thử nghiệm mới nhất do hộp ảo cung cấp bằng liên kết trên - https://www.virtualbox.org/wiki/Testbuilds ):

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

Nếu bạn cần gói tiện ích mở rộng (thay đổi url để khớp với bản dựng thử nghiệm mới nhất do hộp ảo cung cấp bằng liên kết trên - https://www.virtualbox.org/wiki/Testbuilds ):

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
Cảm ơn Robco. Tôi đã không có thời gian để thử nó; Tôi đã hạ cấp VirtualBox và về nguyên tắc tôi sẽ đợi cho đến khi nó được sửa hoặc chỉ cho đến kernel tiếp theo (tôi thực sự không cần phiên bản VirtualBox cuối cùng). Tuy nhiên, giải pháp của bạn dường như là giải pháp tốt nhất cho những ai cần phiên bản cuối cùng / trước khi có thể ổn định. Bạn đã thử nó chưa? Có ổn định không?
Alberto Martín

Chào Alberto. Có, tôi không muốn hạ cấp kernel và tôi đã thử hạ cấp vbox (có thể tôi đã không quay lại đủ xa) nhưng trình điều khiển vẫn không thể được xây dựng. Tôi đã làm điều này cho 4 người dùng và không có vấn đề gì.
Robco

1
Cảm ơn bạn đã phản hồi Robco. Âm thanh khá tốt. Trong trường hợp đó tôi đoán đây là giải pháp tao nhã nhất cho vấn đề cho đến nay.
Alberto Martín

1
Bạn có thể tìm thấy các bản dựng thử nghiệm mới nhất trên trang này: virtualbox.org/wiki/Testbuilds .
Tom Saleeba

2
Điều này có một cảnh báo: "Vui lòng sử dụng phiên bản 5.2 nếu bạn vẫn cần hỗ trợ cho máy chủ 32 bit, vì điều này đã bị ngừng trong 6.0" virtualbox.org/wiki/Doads . 32-bit khách vẫn được hỗ trợ.
Piskvor

4

Tôi có những vấn đề tương tự.

Tôi đã chuyển trở lại kernel trước đó. Xem điều này: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-preingly-kernel/

sau đó cài đặt lại hộp ảo và nó hoạt động trở lại.

Trân trọng Alex


Chào Alex. Nhiều như vậy có thể tạo ra mánh khóe, tôi thấy nó quá lộn xộn và đôi khi có rủi ro hơn là chỉ hạ cấp VirtualBox, thứ sẽ hoạt động hoàn hảo.
Alberto Martín

4

Điều này trông rất giống với lỗi đã biết 1818049 có tên là "các mô-đun dboxs ảo không thể xây dựng với linux 4.4.0-143.169 [lỗi: quá nhiều đối số để hoạt động 'get_user_pages']" .

Giải pháp làm việc thực tế sẽ giống như đối với sự cố TTY - loại bỏ các hạt nhân mới nhất và cài đặt một cái tốt trước đó ( 4.4.0-138-generic có vẻ tốt nhất đối với tôi - USB 3.0 loại bỏ an toàn sẽ hoạt động, vấn đề nhỏ sẽ không có):

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

và khởi động lại sau đó. Vì vậy, chúng ta cần chờ hạt nhân được kiểm tra tốt ổn định bình thường .

Cảnh báo: không nâng cấp kernel lên 4.4.0-143-generic nếu bạn cần VirtualBox trên máy khách và máy chủ. Theo dõi lỗi 1818049 và sau khi xác nhận sửa lỗi - cài đặt lại kernel mới nhất sudo apt-get install linux-image-generic linux-headers-generic.


3

Cách khắc phục dễ dàng nhất cho Ubuntu 16.04 là nâng cấp kernel lên cùng phiên bản mà Ubuntu 18.04 sử dụng bằng cách chạy lệnh sau:

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

Khởi động lại sau khi chạy lệnh trên.

Nếu bạn chạy dkm, bạn sẽ không phải cài đặt lại các bổ sung của khách sau khi máy khởi động lại. Khác, cài đặt lại các bổ sung của khách và hiện tại nó sẽ hoạt động tốt trong Ubuntu 16.04


Cảm ơn, đã làm việc cho tôi
Jason Morgan

2

Rất giống của Alberto

  1. sudo /usr/lib/virtualbox/vboxdrv.sh thiết lập (Tôi gặp lỗi, nhưng dừng VBox ...)
  2. sudo dpkg -l | hộp ảo grep (lấy phiên bản VBox.)
  3. sudo apt-get purge virtualbox-5.XYZ virtualbox-qt (phiên bản XYZ từ bước 2)
  4. Được cài đặt từ Phần mềm Ubuntu: đã hạ cấp xuống 5.1,38

Lên và chạy lại!


2

Sau khi cố gắng hết sức để giải quyết nó (cả DKMS và Synaptics dường như không hữu ích khi giải quyết vấn đề), tôi đã không thể làm điều đó, vì vậy, giải pháp TẠM THỜI cho những người có thể gặp tình huống tương tự, và chỉ theo thứ tự để có thể tiếp tục làm việc với các máy khách, tôi đề nghị hạ cấp VirtualBox xuống phiên bản USC cung cấp.

  • Chỉ cần gỡ cài đặt phiên bản VirtualBox hiện tại (tôi đã thực hiện qua Synaptics, nhưng GDebi cũng sẽ hoạt động hoàn hảo).

  • Cài đặt VirtualBox USC phiên bản được cung cấp (thông qua USC hoặc Synaptics)

  • Hạ cấp (gỡ cài đặt-cài đặt) mô-đun VBoxGuestAdditions trong máy chủ.

  • Trong các máy khách, hãy nhớ hạ cấp VBoxGuestAdditions (chèn CD VBoxGuestAdditions cũ và chạy nó).

Vấn đề / lỗi vẫn còn đó vì nó không cho phép sử dụng phiên bản VirtualBox cuối cùng, tôi hy vọng nó sẽ có ích, nhưng tôi sẽ đánh giá cao một giải pháp tối ưu để có thể cài đặt và sử dụng lại phiên bản .deb.

CẬP NHẬT: Cho đến nay dường như không có giải pháp cuối cùng, vì vậy trong trường hợp của tôi * cái này tiếp tục là giải pháp đơn giản nhất. (* Cá nhân tôi thích hạ cấp VirtualBox thay vì quay lại các hạt nhân Ubuntu trước đó).

Tuy nhiên, nếu vì bất kỳ lý do nào mà ai đó cần sử dụng / cài đặt phiên bản VirtualBox cuối cùng, anh ta có thể thực hiện theo các hướng dẫn sau, cũng được đề cập bởi những người dùng khác: https://bugs.launchpad.net/ubfox/+source/virtualbox/ + lỗi / 1818049 / bình luận / 27


1

Tôi cũng thấy vấn đề này. Tôi có Ubuntu 16.04 LTS. Nó được cập nhật lên kernel 4.4.0-143. Virtualbox (5.2.14) sẽ không xây dựng vboxdrv.ko. Việc hạ cấp xuống kernel 4.4.0-142 (sau đó loại bỏ -143) đã giải quyết vấn đề.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.