Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Máy Ảo

Khắc phục lỗi VirtualBox Kernel Driver (rc=-1908) – Thiếu gcc-12 trên Debian/Ubuntu

VirtualBox kernel driver not installed (thiếu gcc-12)

Cập nhật: 5 tháng 2, 2024

Vấn đề bạn gặp như sau: Bạn dùng hệ thống dựa trên Debian, có thể Ubuntu hoặc một trong các biến thể. Bạn vừa chạy cập nhật toàn hệ thống, cũng bao gồm phiên bản mới của VirtualBox. Bạn dùng repository upstream VirtualBox. Sau khi áp dụng cập nhật, bạn không thể chạy máy ảo nữa.

Bạn nhận được lỗi sau: Kernel driver not installed (rc=-1908) . The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing '/sbin/vboxconfig' as root. Và bạn có nó. Bây giờ hãy đi vào chi tiết, và sửa vấn đề này, chúng ta.

Vấn đề chi tiết

Thông báo lỗi đầy đủ như sau:

Kernel driver not installed (rc=-1908).

The VirtualBox Linux kernel driver is either not loaded or not set up correctly. Please try setting it up again by executing

'/sbin/vboxconfig'

as root.

If your system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT.

Khắc phục lỗi VirtualBox Kernel Driver (rc=-1908) – Thiếu gcc-12 trên Debian/Ubuntu

Thành thật mà nói, thông báo lỗi này hơi gây hiểu lầm, vì nó bao gồm phần Secure Boot, mà rất có thể hoàn toàn không liên quan, cộng với phần cuối của thông báo lỗi dùng cú pháp và ngữ pháp khác phần đầu. Vì vậy, hãy hệ thống hóa, và tiến hành từng bước.

Nếu bạn chạy sudo /sbin/vboxconfig trên dòng lệnh, bạn sẽ thấy:

[sudo] password for igor:
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.

There were problems setting up VirtualBox. To re-start the set-up process, run
/sbin/vboxconfig
as root. If your system is using EFI Secure Boot you may need to sign the
kernel modules (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) before you can load
them. Please see your Linux system's documentation for more information.

Trong /var/log/vbox-setup.log, chúng ta có:

Building the main VirtualBox module.
Error building the module:
make V=1 CONFIG_MODULE_SIG= CONFIG_MODULE_SIG_ALL= -C /lib/modules/6.5.0-14-generic/build M=/tmp/vbox.0 SRCROOT=/tmp/vbox.0 -j20 modules
make[1]: warning: -j20 forced in submake: resetting jobserver mode.
warning: the compiler differs from the one used to build the kernel
The kernel was built by: x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
You are using:
make -f ./scripts/Makefile.build obj=/tmp/vbox.0 need-builtin=1 need-modorder=1
# cmd_mod /tmp/vbox.0/vboxdrv.mod
printf '%s
' linux/SUPDrv-linux.o SUPDrv.o SUPDrvGip.o SUPDrvSem.o SUPDrvTracer.o SUPLibAll.o
...
/tmp/vbox.0/linux/SUPDrv-linux.c ; ./tools/objtool/objtool --hacks=jump_label --hacks=noinstr --hacks=skylake --retpoline --rethunk --sls --stackval --static-call --uaccess --prefix=16 --module /tmp/vbox.0/linux/SUPDrv-linux.o
/bin/sh: 1: gcc-12: not found
make[2]: *** [scripts/Makefile.build:251: /tmp/vbox.0/linux/SUPDrv-linux.o] Error 127
make[1]: *** [Makefile:2037: /tmp/vbox.0] Error 2
make: *** [/tmp/vbox.0/Makefile-footer.gmk:133: vboxdrv] Error 2

Tôi cắt ngắn log cố ý, vì nó chứa ton thứ biên dịch đơn giản không liên quan. Hơn nữa, đọc log biên dịch make có thể hơi khó. Nhưng bạn muốn nhìn cuối log, và tìm bất kỳ dòng nào đọc 'Error' hoặc 'not found'.

Thực sự, trong log của chúng ta, chúng ta có:

/bin/sh: 1: gcc-12: not found

Vì bất kỳ lý do nào, hệ thống không có trình biên dịch gcc-12, cần thiết để xây dựng module kernel VirtualBox. Chỉ để bạn biết, một trong các hộp Kubuntu 22.04 của tôi có nó, và cái kia không. Đó. Tôi không muốn đi vào hàng triệu lý do tại sao bạn có thể không có gói này. Ý chính là để chúng ta tìm ra gì sai và sửa nó.

Giải pháp

Sửa thực tế khá khiêm tốn. Chúng ta cần cài gói gcc-12.

sudo apt install gcc-12

Sau đó, khi lệnh này hoàn tất, chạy lại:

sudo /sbin/vboxconfig

Lệnh nên hoàn tất thành công, và bạn có thể quay lại dùng VirtualBox.

Kết luận

Vấn đề này xuất phát từ kết hợp các yếu tố. Kernel Ubuntu mới, phiên bản VirtualBox mới, trình biên dịch và driver không tương thích và những thứ nerd. Đôi thứ nerdy,不幸的是. Nếu bạn gặp thông báo lỗi -1908, điều tốt nhất là làm việc có phương pháp. Chạy lại lệnh cấu hình thủ công, trong cửa sổ terminal, theo dõi và truy vết log lỗi verbose, cho đến khi tìm thấy thủ phạm.

Như hóa ra, tôi nhận thấy lý do gần đây nhất cho loại lỗi này dường như là gói trình biên dịch gcc-12 bị thiếu. Khi bạn cài nó, driver VirtualBox sẽ biên dịch thành công. Sau đó, bạn nên có thể dùng phần mềm ảo hóa và khởi động máy ảo của bạn mà không có bất kỳ vấn đề gì. Hy vọng hướng dẫn nhỏ này giúp bạn lấy lại năng suất. Chăm sóc bản thân, các anh chàng.

Chào.