Versi Ubuntu: 16.04
Versi VirtualBox: 5.2.26
Pembaruan yang telah "merusak" sesuatu: antara minggu lalu dan hari ini (2019/03/18)
Saya menjalankan Ubuntu Software Updater pagi ini, setelah menyalakan komputer. Setelah itu saya mencoba meluncurkan mesin Virtual Box (versi diinstal melalui .deb, bukan Ubuntu Software Center) dan mendapatkan kesalahan yang terkenal itu:
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.
Setelah membaca tentang masalah yang sama dan memahami mengapa saya harus melakukannya, saya menjalankannya (hasil yang sama dengan 'sudo /usr/lib/virtualbox/vboxdrv.sh setup' dan solusi lain untuk masalah / posting serupa yang saya temukan di situs ini ):
$ 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.
Membaca .log, saya melihat bahwa masalahnya tampaknya terkait dengan fungsi "get_user_pages", dan pada titik ini saya jujur tidak tahu bagaimana menyelesaikannya.
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
Saya sudah mencoba setiap solusi untuk masalah serupa dengan pesan kesalahan ini tetapi tidak ada yang berhasil untuk saya.
Adakah yang mengalami masalah serupa setelah pembaruan Ubuntu terakhir?
PEMBARUAN: Saya telah sepenuhnya menghapus instalan VirtualBox, menghidupkan ulang sistem, menginstal VirtualBox lagi, dan masih kesalahan yang sama.
sumber
Jawaban:
Jawaban mudahnya, untuk saat ini - gunakan testbuild yang disediakan oleh Vbox sambil menunggu patch kernel.
Anda dapat menemukan bangunan di sini . Anda perlu menggunakan tautan saat ini yang disediakan pada halaman itu karena yang digunakan di sini dalam contoh telah berubah.
Pastikan Anda mencopot pemasangan versi Anda saat ini:
Instal test build (ubah url agar sesuai dengan test build terbaru yang disediakan oleh virtualbox menggunakan tautan di atas - https://www.virtualbox.org/wiki/Testbuilds ):
Jika Anda memerlukan paket ekstensi (ubah url agar sesuai dengan test build terbaru yang disediakan oleh virtualbox menggunakan tautan di atas - https://www.virtualbox.org/wiki/Testbuilds ):
sumber
Saya memiliki masalah yang sama.
Saya beralih kembali ke kernel sebelumnya. Lihat ini: http://karlcode.owtelse.com/blog/2017/03/13/reverting-to-a-previous-kernel/
setelah itu instal ulang kotak virtual dan itu berfungsi lagi.
Salam Alex
sumber
Ini terlihat sangat mirip dengan bug yang dikenal 1818049 bernama "modul virtualbox dkms gagal dibangun dengan linux 4.4.0-143.169 [kesalahan: terlalu banyak argumen yang berfungsi 'get_user_pages']" .
Solusi kerja yang sebenarnya akan sama seperti untuk masalah TTY - hapus kernel terbaru dan instal kernel yang bagus sebelumnya ( 4.4.0-138-generic terlihat terbaik untuk saya - USB 3.0 dengan aman akan bekerja, masalah getty tidak ada):
dan reboot setelah itu. Jadi kita perlu menunggu kernel normal yang teruji dengan baik .
Peringatan: jangan tingkatkan kernel ke 4.4.0-143-generik jika Anda memerlukan VirtualBox pada tamu dan host. Berlangganan bug 1818049 dan setelah konfirmasi perbaikan, instal kembali kernel terbaru dengan
sudo apt-get install linux-image-generic linux-headers-generic
.sumber
Perbaikan termudah untuk Ubuntu 16.04 adalah dengan memutakhirkan kernel ke versi yang sama yang digunakan Ubuntu 18.04 dengan menjalankan perintah berikut:
sudo apt-get install --install-recommends linux-generic-hwe-16.04
Reboot setelah menjalankan perintah di atas.
Jika Anda menjalankan dkms, Anda tidak perlu menginstal ulang penambahan tamu setelah mesin dinyalakan kembali. Lain, instal tambahan tamu, dan itu akan berfungsi dengan baik sekarang di Ubuntu 16.04
sumber
Sangat mirip dengan milik Alberto
Bangkit dan berjalan lagi!
sumber
Setelah berusaha sangat keras untuk menyelesaikannya (baik DKMS maupun Synaptics tampaknya tidak berguna sebagai solusi untuk masalah ini), saya tidak dapat melakukannya, sehingga solusi SEMENTARA bagi mereka yang mungkin berada dalam situasi yang sama, dan hanya dalam rangka untuk dapat terus bekerja dengan mesin tamu, saya sarankan untuk menurunkan versi VirtualBox ke versi yang ditawarkan USC.
Cukup hapus versi VirtualBox saat ini (saya melakukannya melalui Synaptics, tetapi GDebi juga akan bekerja dengan baik).
Instal VirtualBox USC versi yang ditawarkan (baik melalui USC atau Synaptics)
Turunkan modul instalan VBoxGuestAdditions di mesin host.
Di mesin tamu, ingatlah untuk menurunkan versi VBoxGuestAdditions (masukkan CD VBoxGuestAdditions lama dan jalankan).
Masalah / kesalahan masih ada karena tidak memungkinkan untuk menggunakan versi VirtualBox terakhir, saya harap itu membantu, tapi saya akan menghargai solusi akhir untuk dapat menginstal dan menggunakan versi deb lagi.
UPDATE: Sejauh ini tampaknya tidak ada solusi pamungkas, jadi dalam kasus saya * yang satu ini terus menjadi yang paling sederhana. (* Secara pribadi saya lebih suka downgrade VirtualBox daripada kembali ke kernel Ubuntu sebelumnya).
Namun, jika karena alasan apa pun seseorang perlu menggunakan / menginstal versi terakhir VirtualBox, ia dapat melakukannya dengan mengikuti petunjuk ini, juga disebutkan oleh pengguna lain: https://bugs.launchpad.net/ubuntu/+source/virtualbox/ + bug / 1818049 / komentar / 27
sumber
Saya juga melihat masalah ini. Saya memiliki Ubuntu 16,04 LTS. Itu diperbarui ke kernel 4.4.0-143. Virtualbox (5.2.14) tidak akan membangun vboxdrv.ko. Penurunan versi ke kernel 4.4.0-142 (kemudian menghapus -143) menyelesaikan masalah.
sumber