Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ซอฟต์แวร์ >> เครื่องเสมือน

แก้ไขข้อผิดพลาดไดรเวอร์เคอร์เนล VirtualBox (rc =-1908) - ขาด gcc-12 บน Debian / Ubuntu

ไม่ได้ติดตั้งเคอร์เนล VirtualBox ที่ขับเคลื่อนด้วย (ไม่มี gcc-12)

อัปเดต:5 กุมภาพันธ์ 2567

ปัญหาที่คุณกำลังเผชิญมีดังนี้:คุณใช้ระบบที่ใช้ Debian อาจเป็น Ubuntu หรือรสชาติใดรสชาติหนึ่ง คุณเพิ่งรันการอัปเดตทั้งระบบ ซึ่งรวมถึง VirtualBox เวอร์ชันใหม่ด้วย คุณใช้ที่เก็บต้นน้ำ VirtualBox หลังจากใช้การอัปเดต คุณจะไม่สามารถเรียกใช้เครื่องเสมือนได้อีกต่อไป

คุณได้รับข้อผิดพลาดต่อไปนี้:ไม่ได้ติดตั้งไดรเวอร์เคอร์เนล (rc=-1908) ไม่ได้โหลดไดรเวอร์เคอร์เนล VirtualBox Linux หรือตั้งค่าไม่ถูกต้อง โปรดลองตั้งค่าอีกครั้งโดยดำเนินการ '/sbin/vboxconfig' ในฐานะ root และที่นั่นคุณมีมัน เรามาดูรายละเอียดและแก้ไขปัญหานี้กันดีกว่า

ปัญหาโดยละเอียดเพิ่มเติม

ข้อความแสดงข้อผิดพลาดแบบเต็มมีดังนี้:

ไม่ได้ติดตั้งไดรเวอร์เคอร์เนล (rc=-1908)

ไม่ได้โหลดไดรเวอร์เคอร์เนล VirtualBox Linux หรือตั้งค่าไม่ถูกต้อง โปรดลองตั้งค่าอีกครั้งโดยดำเนินการ

'/sbin/vboxconfig'

เป็นราก

หากระบบของคุณเปิดใช้งาน EFI Secure Boot คุณอาจต้องลงนามโมดูลเคอร์เนล (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) ก่อนจึงจะสามารถโหลดได้ โปรดดูเอกสารประกอบของระบบ Linux ของคุณสำหรับข้อมูลเพิ่มเติม

โดยที่:suplibOsInit คืออะไร:3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - ไม่ได้ติดตั้งไดรเวอร์รองรับ บน linux ให้เปิด ENOENT ที่ส่งคืน

แก้ไขข้อผิดพลาดไดรเวอร์เคอร์เนล VirtualBox (rc =-1908) - ขาด gcc-12 บน Debian / Ubuntu

พูดตามตรง ข้อความแสดงข้อผิดพลาดนี้อาจทำให้เข้าใจผิดเล็กน้อย เนื่องจากมี Secure Boot อยู่ในนั้นด้วย ซึ่งมีแนวโน้มว่าจะไม่เกี่ยวข้องโดยสิ้นเชิง อีกทั้งส่วนสุดท้ายของข้อความแสดงข้อผิดพลาดใช้ไวยากรณ์และไวยากรณ์ที่แตกต่างจากส่วนแรก ดังนั้นเรามาทำอย่างเป็นระบบและดำเนินการทีละขั้นตอน

หากคุณเรียกใช้ sudo /sbin/vboxconfig บนบรรทัดคำสั่ง คุณจะเห็นสิ่งต่อไปนี้:

[sudo] รหัสผ่านสำหรับ igor:
vboxdrv.sh:การหยุดบริการ VirtualBox
vboxdrv.sh:การเริ่มบริการ VirtualBox
vboxdrv.sh:การสร้างโมดูลเคอร์เนล VirtualBox
vboxdrv.sh:ล้มเหลว:ดูที่ /var/log/vbox-setup.log เพื่อดูว่ามีอะไรผิดพลาด

เกิดปัญหาในการตั้งค่า VirtualBox หากต้องการเริ่มกระบวนการตั้งค่าใหม่ ให้เรียกใช้
/sbin/vboxconfig
เป็นราก หากระบบของคุณใช้ EFI Secure Boot คุณอาจต้องลงชื่อ
โมดูลเคอร์เนล (vboxdrv, vboxnetflt, vboxnetadp, vboxpci) ก่อนที่คุณจะสามารถโหลดได้
พวกเขา โปรดดูเอกสารประกอบของระบบ Linux ของคุณสำหรับข้อมูลเพิ่มเติม

ใน /var/log/vbox-setup.log เรามีดังต่อไปนี้:

การสร้างโมดูล VirtualBox หลัก
เกิดข้อผิดพลาดในการสร้างโมดูล:
ทำให้ 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 โมดูล
make [1]:คำเตือน:-j20 บังคับใน submake:การรีเซ็ตโหมดเซิร์ฟเวอร์งาน
คำเตือน:คอมไพเลอร์แตกต่างจากที่ใช้สร้างเคอร์เนล
เคอร์เนลถูกสร้างขึ้นโดย:x86_64-linux-gnu-gcc-12 (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
คุณกำลังใช้:
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:ไม่พบ
ทำให้ [2]:*** [สคริปต์/Makefile.build:251:/tmp/vbox.0/linux/SUPDrv-linux.o] ข้อผิดพลาด 127
ทำให้ [1]:*** [Makefile:2037:/tmp/vbox.0] ข้อผิดพลาด 2
ทำให้:*** [/tmp/vbox.0/Makefile-footer.gmk:133:vboxdrv] ข้อผิดพลาด 2

ฉันตัดทอนบันทึกโดยตั้งใจ เนื่องจากมีการรวบรวมเนื้อหามากมายที่ไม่เกี่ยวข้อง นอกจากนี้ การอ่านบันทึกการคอมไพล์ make อาจทำได้ยากสักหน่อย แต่คุณต้องการดูที่ส่วนท้ายของบันทึก และค้นหาบรรทัดใดๆ ที่ระบุว่า 'ข้อผิดพลาด' หรือ 'ไม่พบ'

แท้จริงแล้ว ในบันทึกของเรา เรามี:

/bin/sh:1:gcc-12:ไม่พบ

ไม่ว่าด้วยเหตุผลใดก็ตาม ระบบไม่มีคอมไพเลอร์ gcc-12 ซึ่งจำเป็นในการสร้างโมดูลเคอร์เนล VirtualBox เพียงแจ้งให้คุณทราบว่า หนึ่งในกล่อง Kubuntu 22.04 ของฉันมี และอีกกล่องไม่มี ที่นั่น. ฉันไม่อยากจะพูดถึงเหตุผลนับล้านว่าทำไมคุณถึงไม่มีแพ็คเกจนี้ แนวคิดหลักคือให้เราค้นหาสิ่งที่ผิดพลาดและแก้ไข

วิธีแก้ปัญหา

การแก้ไขจริงค่อนข้างท่วมท้น เราจำเป็นต้องติดตั้งแพ็คเกจ gcc-12

sudo apt ติดตั้ง gcc-12

จากนั้น เมื่อคำสั่งนี้เสร็จสิ้น ให้รันใหม่:

sudo /sbin/vboxconfig

คำสั่งควรจะเสร็จสมบูรณ์ และคุณสามารถกลับไปใช้ VirtualBox ได้

บทสรุป

ปัญหานี้เกิดจากการรวมกันของปัจจัย เคอร์เนล Ubuntu ใหม่, เวอร์ชัน VirtualBox ใหม่, คอมไพเลอร์และไดรเวอร์ที่เข้ากันไม่ได้ และอื่นๆ อีกมากมาย น่าเสียดาย มีเรื่องเนิร์ดๆ มากมาย หากคุณพบข้อความแสดงข้อผิดพลาด -1908 สิ่งที่ดีที่สุดคือการทำงานอย่างมีระบบ รันคำสั่งการกำหนดค่าอีกครั้งด้วยตนเองในหน้าต่างเทอร์มินัล ติดตามและติดตามและบันทึกข้อผิดพลาดแบบละเอียด จนกว่าคุณจะพบผู้กระทำผิด

ปรากฎว่าฉันสังเกตเห็นสาเหตุล่าสุดสำหรับข้อผิดพลาดประเภทนี้น่าจะเป็นแพ็คเกจคอมไพเลอร์ gcc-12 ที่หายไป เมื่อคุณติดตั้งแล้ว ไดรเวอร์ VirtualBox จะคอมไพล์ได้สำเร็จ หลังจากนั้น คุณควรจะสามารถใช้ซอฟต์แวร์การจำลองเสมือนและเปิดใช้งานเครื่องเสมือนได้โดยไม่มีปัญหาใดๆ หวังว่าบทช่วยสอนเล็กๆ นี้จะช่วยให้คุณกลับมามีประสิทธิผลอีกครั้ง ดูแลตัวเองด้วยนะ

ไชโย