在 Debian 12 Bookworm 上安装 VirtualBox 时出错

在 Debian 12 Bookworm 上安装 VirtualBox 时出错

我有一台 Clevo PD70SND-G,刚从中国买来。安装了 Debian 12 Bookworm。我正在尝试安装和使用 VirtualBox。我需要访问 VirtualBox 机器上的数据。

我尝试从官方 Debian 存储库安装,在添加到 /etc/apt/sources.list 后,出现依赖性错误(见下文)。因此,我去了 VirtualBox.org 并下载了他们的 Debian 12 软件包文件,然后安装了它。VirtualBox Manager 似乎运行良好,但当我尝试启动机器时,我收到有关未安装内核驱动程序的错误(见下文)。以及“未签名”内核模块的错误。MOK 签名文件是在激活安全启动的情况下让 NVIDIA GPU 工作时创建的。

该机器是 Ubuntu 22.04,在 Windows 10 主机上创建。

请帮忙。

关于系统:

Info Center -> About this System:

Operating System: Debian GNU/Linux 12
KDE Plasma Version: 5.27.5 KDE
Frameworks Version: 5.103.0
Qt Version: 5.15.8
Kernel Version: 6.1.0-17-amd64 (64-bit)
Graphics Platform: X11
Processors: 32 × Intel® Core™ i9-14900HX
Memory: 62.5 GiB of RAM
Graphics Processor: Mesa Intel® Graphics
Manufacturer: Notebook
Product Name: > PD5x_7xSNC_SND_SNE
System Version: Not Applicable
$ neofetch
       _,met$$$$$gg.          user@Computer-Name 
    ,g$$$$$$$$$$$$$$$P.       ------------------------- 
  ,g$$P"     """Y$$.".        OS: Debian GNU/Linux 12 (bookworm) x86_64 
 ,$$P'              `$$$.     Host: PD5x_7xSNC_SND_SNE 
',$$P       ,ggs.     `$$b:   Kernel: 6.1.0-18-amd64 
`d$$'     ,$P"'   .    $$$    Uptime: 7 mins 
 $$P      d$'     ,    $$P    Packages: 2984 (dpkg) 
 $$:      $$.   -    ,d$$'    Shell: bash 5.2.15 
 $$;      Y$b._   _,d$P'      Resolution: 1920x1080 
 Y$$.    `.`"Y$$$$P"'         DE: Plasma 5.27.5 
 `$$b      "-.__              WM: KWin 
  `Y$$                        Theme: [Plasma], Breeze [GTK2/3] 
   `Y$$.                      Icons: [Plasma], breeze [GTK2/3] 
     `$$b.                    Terminal: konsole 
       `Y$$b.                 CPU: Intel i9-14900HX (32) @ 2.200GHz 
          `"Y$b._             GPU: NVIDIA GeForce RTX 4060 Max-Q / Mobile 
              `"""            GPU: Intel Raptor Lake-S UHD Graphics 
                              Memory: 2373MiB / 64000MiB 

尝试从官方 Debian 12 存储库安装 VirtualBox:

$ sudo apt install fasttrack-archive-keyring
Append to /etc/apt/sources.list:
    deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-fasttrack main contrib 
    deb https://fasttrack.debian.net/debian-fasttrack/ bullseye-backports-staging main contrib

$ sudo apt update
$ aptitude search virtualbox
p   boinc-virtualbox                                     - metapackage for virtualbox-savvy projects                     
p   virtualbox                                           - x86 virtualization solution - base binaries                   
p   virtualbox-dbgsym                                    - debug symbols for virtualbox                                  
p   virtualbox-dkms                                      - x86 virtualization solution - kernel module sources for dkms  
p   virtualbox-ext-pack                                  - extra capabilities for VirtualBox, downloader.                
p   virtualbox-guest-additions-iso                       - guest additions iso image for VirtualBox                      
v   virtualbox-guest-modules                             -                                                               
p   virtualbox-guest-utils                               - x86 virtualization solution - non-X11 guest utilities         
p   virtualbox-guest-utils-dbgsym                        - debug symbols for virtualbox-guest-utils                      
p   virtualbox-guest-x11                                 - x86 virtualization solution - X11 guest utilities             
p   virtualbox-guest-x11-dbgsym                          - debug symbols for virtualbox-guest-x11                        
v   virtualbox-modules                                   -                                                               
p   virtualbox-qt                                        - x86 virtualization solution - Qt based user interface         
p   virtualbox-qt-dbgsym                                 - debug symbols for virtualbox-qt                               
p   virtualbox-source                                    - x86 virtualization solution - kernel module source
$ sudo apt install virtualbox
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 virtualbox : Depends: python3 (< 3.10) but 3.11.2-1+b1 is to be installed
              Depends: python3.9 but it is not installable
              Depends: libgsoap-2.8.104 but it is not installable
              Depends: libssl1.1 (>= 1.1.1) but it is not installable
              Depends: libvpx6 (>= 1.6.0) but it is not installable
              Recommends: virtualbox-qt (= 7.0.12-dfsg-1~fto11+1) but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

尝试从下载的存储库文件安装 VirtualBox:

$ sudo apt install .../virtualbox-7.0_7.0.14-161095~Debian~bookworm_amd64.deb 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Note, selecting 'virtualbox-7.0' instead of '.../virtualbox-7.0_7.0.14-161095~Debian~bookworm_amd64.deb'
Recommended packages:
  linux-image
The following NEW packages will be installed:
  virtualbox-7.0
0 upgraded, 1 newly installed, 0 to remove and 3 not upgraded.
Need to get 0 B/92.4 MB of archives.
After this operation, 218 MB of additional disk space will be used.
Get:1 .../virtualbox-7.0_7.0.14-161095~Debian~bookworm_amd64.deb virtualbox-7.0 amd64 7.0.14-161095~Debian~bookworm [92.4 MB]
Preconfiguring packages ...
Selecting previously unselected package virtualbox-7.0.
(Reading database ... 343483 files and directories currently installed.)
Preparing to unpack .../virtualbox-7.0_7.0.14-161095~Debian~bookworm_amd64.deb ...
Unpacking virtualbox-7.0 (7.0.14-161095~Debian~bookworm) ...
Setting up virtualbox-7.0 (7.0.14-161095~Debian~bookworm) ...
addgroup: The group `vboxusers' already exists as a system group. Exiting.
vboxdrv.sh: failed: Unable to sign vboxdrv.ko.

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.
Processing triggers for desktop-file-utils (0.26-1) ...
Processing triggers for hicolor-icon-theme (0.17-2) ...
Processing triggers for gnome-menus (3.36.0-1.1) ...
Processing triggers for shared-mime-info (2.2-1) ...
Processing triggers for mailcap (3.70+nmu1) ...
N: Download is performed unsandboxed as root as file '.../virtualbox-7.0_7.0.14-161095~Debian~bookworm_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

通知中心记录的错误消息:

VM Name: Ubuntu 22.04

The virtual machine 'Ubuntu 22.04' has terminated unexpectedly during startup with exit code 1 (0x1).
Result Code:
NS_ERROR_FAILURE (0X80004005)
Component:
MachineWrap
Interface:
IMachine {300763af-5d6b-46e6-aa96-273eac15538a}

弹出窗口中的错误信息:

VirtualBox - Error in suplibOsInit

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 you system has EFI Secure Boot enabled you may also need to sign the kernel modules (vboxnetflt, vboxnetadp, vboxpci) before you can load them. Please see your Linux system's documentation for more information.

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

运行命令的结果如下:

$ sudo /sbin/vboxconfig 
vboxdrv.sh: Stopping VirtualBox services. 
vboxdrv.sh: Starting VirtualBox services. 
vboxdrv.sh: Building VirtualBox kernel modules. 
vboxdrv.sh: Signing VirtualBox kernel modules. 
vboxdrv.sh: failed: Unable to sign vboxdrv.ko. 
 
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. 

脚本:sign-virtualbox

#!/bin/bash
for modfile in $(dirname $(modinfo -n vboxdrv))/*.ko; do
        echo "Signing $modfile"
        /usr/lib/linux-kbuild-6.1/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der "$modfile"
#       /usr/src/kernels/$(uname -r)/scripts/sign-file sha256 /var/lib/shim-signed/mok/MOK.priv /var/lib/shim-signed/mok/MOK.der "$modfile"
done

如你所见,没有vboxpci模块:

$ sudo KBUILD_SIGN_PIN=[passcode] sign-virtualbox 
Signing /lib/modules/6.1.0-18-amd64/misc/vboxdrv.ko 
Signing /lib/modules/6.1.0-18-amd64/misc/vboxnetadp.ko 
Signing /lib/modules/6.1.0-18-amd64/misc/vboxnetflt.ko

附加信息:

$ sudo modinfo vboxdrv 
filename:       /lib/modules/6.1.0-18-amd64/misc/vboxdrv.ko 
version:        7.0.14 r161095 (0x00330004) 
license:        GPL 
description:    Oracle VM VirtualBox Support Driver 
author:         Oracle and/or its affiliates 
srcversion:     152A8CB5D422DE621E72BD6 
depends:         
retpoline:      Y 
name:           vboxdrv 
vermagic:       6.1.0-18-amd64 SMP preempt mod_unload modversions  
parm:           force_async_tsc:force the asynchronous TSC mode (int)

$ sudo modinfo vboxnetadp 
filename:       /lib/modules/6.1.0-18-amd64/misc/vboxnetadp.ko 
version:        7.0.14 r161095 ((0xA2CDe001U)) 
license:        GPL 
description:    Oracle VM VirtualBox Network Adapter Driver 
author:         Oracle and/or its affiliates 
srcversion:     DE548A71E9FEE840BC241DC 
depends:        vboxdrv 
retpoline:      Y 
name:           vboxnetadp 
vermagic:       6.1.0-18-amd64 SMP preempt mod_unload modversions  
 
$ sudo modinfo vboxnetflt 
filename:       /lib/modules/6.1.0-18-amd64/misc/vboxnetflt.ko 
version:        7.0.14 r161095 ((0xA2CDe001U)) 
license:        GPL 
description:    Oracle VM VirtualBox Network Filter Driver 
author:         Oracle and/or its affiliates 
srcversion:     5B4916269D291622038DB48 
depends:        vboxdrv 
retpoline:      Y 
name:           vboxnetflt 
vermagic:       6.1.0-18-amd64 SMP preempt mod_unload modversions 

答案1

在我的研究中,我发现在安装过程中创建了一个用于启动内核模块的脚本/sbin/rcvboxdrv。这实际上是一个符号链接/usr/lib/virtualbox/vboxdrv.shhttps://www.virtualbox.org/manual/ch02.html#install-linux-prereq

我输入了命令:

$ sudo rcvboxdrv setup

输出中包含一条错误消息,表示签署vboxdrv模块失败:

...
vboxdrv.sh: failed: Unable to sign vboxdrv.ko.

(非常有帮助,Oracle!)

然后我分析了脚本 (vboxdrv.sh),发现抛出错误消息的行 (805) 通过将命令的实际错误输出传递给 null 来掩盖它。我删除了它,结果消息 (抱歉,我没有实际输出的副本,我很高兴找到了解决方案。) 告诉我它缺少密码!

解决方法:删除2>/dev/null第 805 行vboxdrv.sh,然后重新运行脚本:

802   # Sign modules.
803   for i in $MODULE_LIST; do
804       "$SIGN_TOOL" "$sig_hashalgo" "$DEB_PRIV_KEY" "$DEB_PUB_KEY" \
805           /lib/modules/"$KERN_VER"/misc/"$i".ko 2>/dev/null || failure "Unable to sign $i.ko"
806   done
$ sudo KBUILD_SIGN_PIN=[passcode] rcvboxdrv setup

感谢您的时间。

相关内容