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

Giải quyết Lỗi trình điều khiển hạt nhân VirtualBox (rc=-1908) – Thiếu gcc-12 trên Debian/Ubuntu

Điều khiển hạt nhân VirtualBox chưa được cài đặt (thiếu gcc-12)

Cập nhật:ngày 5 tháng 2 năm 2024

Vấn đề bạn đang gặp phải như sau:Bạn sử dụng hệ thống dựa trên Debian, có thể là Ubuntu hoặc một trong các phiên bản của nó. Gần đây bạn đã chạy bản cập nhật toàn hệ thống, bản cập nhật này cũng bao gồm phiên bản VirtualBox mới. Bạn sử dụng kho lưu trữ VirtualBox ngược dòng. Sau khi áp dụng bản cập nhật, bạn không thể chạy máy ảo được nữa.

Bạn gặp lỗi sau:Trình điều khiển hạt nhân chưa được cài đặt (rc=-1908). Trình điều khiển hạt nhân VirtualBox Linux không được tải hoặc không được thiết lập chính xác. Vui lòng thử thiết lập lại bằng cách thực thi '/sbin/vboxconfig' với quyền root. Và bạn có nó. Bây giờ chúng ta hãy đi vào chi tiết và khắc phục vấn đề này nhé.

Vấn đề chi tiết hơn

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

Trình điều khiển hạt nhân chưa được cài đặt (rc=-1908).

Trình điều khiển hạt nhân VirtualBox Linux không được tải hoặc không được thiết lập chính xác. Vui lòng thử thiết lập lại bằng cách thực thi

'/sbin/vboxconfig'

như gốc.

Nếu hệ thống của bạn đã bật EFI Secure Boot, bạn cũng có thể cần phải ký các mô-đun hạt nhân (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) trước khi có thể tải chúng. Vui lòng xem tài liệu về hệ thống Linux của bạn để biết thêm thông tin.

trong đó:suplibOsInit what:3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - Trình điều khiển hỗ trợ chưa được cài đặt. Trên linux, mở trả về ENOENT.

Giải quyết Lỗi trình điều khiển hạt nhân VirtualBox (rc=-1908) – Thiếu gcc-12 trên Debian/Ubuntu

Công bằng mà nói, thông báo lỗi này hơi sai lệch vì nó bao gồm nội dung Khởi động an toàn trong đó, 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 sử dụng cú pháp và ngữ pháp khác với phần đầu tiên. Vì vậy, hãy sắp xếp nó một cách có hệ thống và tiến hành từng bước một.

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

[sudo] mật khẩu cho igor:
vboxdrv.sh:Dừng dịch vụ VirtualBox.
vboxdrv.sh:Bắt đầu dịch vụ VirtualBox.
vboxdrv.sh:Xây dựng các mô-đun hạt nhân VirtualBox.
vboxdrv.sh:failed:Nhìn vào /var/log/vbox-setup.log để tìm hiểu xem điều gì đã xảy ra.

Đã xảy ra sự cố khi thiết lập VirtualBox. Để bắt đầu lại quá trình thiết lập, hãy chạy
/sbin/vboxconfig
như gốc. Nếu hệ thống của bạn đang sử dụng EFI Secure Boot, bạn có thể cần phải ký vào
mô-đun hạt nhân (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) trước khi bạn có thể tải
họ. Vui lòng xem tài liệu về hệ thống Linux của bạn để biết thêm thông tin.

Trong /var/log/vbox-setup.log, chúng tôi có thông tin sau:

Xây dựng mô-đun VirtualBox chính.
Lỗi xây dựng mô-đun:
tạo 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 mô-đun
make[1]:cảnh báo:-j20 bị ép buộc trong submake:đặt lại chế độ máy chủ công việc.
cảnh báo:trình biên dịch khác với trình biên dịch được sử dụng để xây dựng kernel
Hạt nhân được xây dựng bởi:x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
Bạn đang sử dụng:
make -f ./scripts/Makefile.build obj=/tmp/vbox.0 need-buildin=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:không tìm thấy
make[2]:*** [scripts/Makefile.build:251:/tmp/vbox.0/linux/SUPDrv-linux.o] Lỗi 127
make[1]:*** [Makefile:2037:/tmp/vbox.0] Lỗi 2
tạo:*** [/tmp/vbox.0/Makefile-footer.gmk:133:vboxdrv] Lỗi 2

Tôi đã cố ý cắt bớt nhật ký vì nó chứa rất nhiều nội dung biên dịch không liên quan. Hơn nữa, việc đọc nhật ký biên dịch có thể hơi khó khăn. Nhưng bạn muốn xem phần cuối của nhật ký và tìm kiếm bất kỳ dòng nào có nội dung 'Lỗi' hoặc 'không tìm thấy'.

Thật vậy, trong nhật ký của chúng tôi, chúng tôi có:

/bin/sh:1:gcc-12:không tìm thấy

Vì bất kỳ lý do gì, hệ thống không có trình biên dịch gcc-12 cần thiết để xây dựng các mô-đun hạt nhân VirtualBox. Bạn biết đấy, một trong những hộp Kubuntu 22.04 của tôi đã có nó, còn một hộp khác thì không. Ở đó. Tôi không muốn đi sâu vào hàng triệu lý do tại sao bạn có thể không có gói này. Ý tưởng chính là để chúng tôi tìm ra lỗi sai và khắc phục nó.

Giải pháp

Việc sửa chữa thực tế là khá áp đảo. Chúng ta cần cài đặt gói gcc-12.

sudo apt cài đặt gcc-12

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

sudo /sbin/vboxconfig

Lệnh sẽ hoàn tất thành công và bạn có thể quay lại sử dụng VirtualBox.

Kết luận

Vấn đề này xuất phát từ sự kết hợp của nhiều yếu tố. Nhân Ubuntu mới, phiên bản VirtualBox mới, trình biên dịch và trình điều khiển không tương thích, v.v. Thật không may, có rất nhiều thứ kỳ lạ. Nếu gặp thông báo lỗi -1908 thì cách tốt nhất là bạn hãy làm việc có phương pháp. Chạy lại lệnh cấu hình theo cách thủ công, trong cửa sổ terminal, theo dõi, theo dõi và ghi chi tiết nhật ký lỗi cho đến khi bạn tìm ra thủ phạm.

Hóa ra, tôi nhận thấy lý do gần đây nhất gây ra loại lỗi này có vẻ là do thiếu gói trình biên dịch gcc-12. Sau khi bạn cài đặt nó, trình điều khiển VirtualBox sẽ biên dịch thành công. Sau đó, bạn sẽ có thể sử dụng phần mềm ảo hóa và khởi chạy các máy ảo của mình mà không gặp bất kỳ sự cố nào. Hy vọng hướng dẫn nhỏ này sẽ giúp bạn lấy lại năng suất làm việc của mình. Hãy cẩn thận nhé các bạn.

Chúc mừng.