解决VirtualBox rc=-1908的错误(基于Ubuntu 18.04)

忍无可忍

最开始由于无知,不知道为什么会出现这个问题,后来经过查证,发现每次Linux内核更新以后都会出现这个问题,经过多方查证,有时可以解决问题,有时又不行,并且网上的说法不一,估计也是一篇篇的博客相互抄袭,今天更新内核又出现了这个问题,我下定决心一定要找出问题的深层原因,并提出一个一劳永逸的解决方式.

问题复现

如下图,更新了Linux内核以后,就会出现rc=-1908的错误代码:

pic1pic2

按照它的指示,以root身份执行了/sbin/vboxconfig,结果如下:

 yjzzjy4@yjzzjy4-AERO-15XV8 ~ sudo /sbin/vboxconfig 
[sudo] yjzzjy4 的密码: 
vboxdrv.sh: Stopping VirtualBox services.
vboxdrv.sh: Starting VirtualBox services.
vboxdrv.sh: Building VirtualBox kernel modules.
vboxdrv.sh: failed: modprobe vboxdrv failed. Please use 'dmesg' to find out why.

There were problems setting up VirtualBox.  To re-start the set-up process, run
  /sbin/vboxconfig
as root.
 yjzzjy4@yjzzjy4-AERO-15XV8 ~ 

是的这并没有解决任何问题,但是其中有几个关键字dmesgmodprobe vboxdrv吸引了我的注意.

其中dmesg,按照Wiki上的描述,是一个这样的东西:

dmesg (display message or driver message) is a command on most Unix-like operating systems that prints the message buffer of the kernel.[1] The output of this command typically contains the messages produced by the device drivers.

查看了dmesg输出以后并没有什么有用的信息,输出太长了就不贴上来了.

而另一个关键字modprobe,则是我比较熟悉的命令了,这个命令可以理解为使某个模块生效,那么说明是vboxdrv没有生效,通过Google一番,我发现了这是VirtualBox的驱动,是的Linux内核专门有一个用于驱动VirtualBox的驱动,叫做virtualbox-dkms,其中dkms代表Dynamic Kernel Module Support.所以问题根源在于virtualbox-dkms没有被驱动,终于找到问题所在了!

解决问题

既然是驱动没有加载,那我们应该想想为什么没有加载,因为我们升级了内核!这样的话加载的就是上一个内核版本的驱动,已经不适用当前内核了,那我们需要为当前内核重新安装一个驱动,用以下命令:

sudo apt install --reinstall linux-headers-$(uname -r) virtualbox-dkms dkms

这条命令是先安装与当前内核版本相对应的linux-headers,用于配置virtualbox-dkms,然后再安装对应的驱动就能够自动完成配置了,完成配置后,再输入以下命令:

sudo modprobe vboxdrv

这样就激活了安装好的驱动.至此,问题得到解决,终于能进入虚拟机了.

小插曲

我在运行sudo modprobe vboxdrv时遇到了一个问题:

modprobe: ERROR: could not insert 'vboxdrv': Required key not available

通过Google,我知道了这是Secure Boot搞的鬼,是的这个东西在所有较新出厂的主板上都会有的,这是微软为了防止用户装Linux而联合硬件厂商搞出来的玩意儿.这个东西可以说是没有任何作用,起一个高大上的名字–安全启动就是为了唬人,让用户不敢去禁用它,从而给用户安装Linux带来极大的不便甚至无法安装Linux.

说到这个就真的不得不说一嘴,微软作为一个几乎垄断操作系统市场的大厂,居然如此小肚鸡肠,人家Linux的grub2启动器,都能够用来启动你windows的操作系统,你倒好,自己的启动器不支持其他操作系统,不但不友好相待,还要绝人后路,就凭这一点,我此生无悔黑微软!而且Linux总是强调自由,自由是什么?free不是免费好么! free指的是我的计算机只属于我,它只能做我想让它做的事情,只能有我想让它有的功能.擅自在计算机里加secure boot,你微软问过用户了么?就像《The Linux Command Line》里说的:

一个大公司不断地把它的控制权强加到世界绝大多数的计算机上,并且决定你对计算机的操作权力.

幸运的是,世界各地的人们正在努力进行抗争,他们通过自己编写的软件来争夺自己计算机的控制权.

他们创造了Linux!

非常幸运,我能够成为Linux的用户.那么话不多说,我们来破解掉secure boot吧!

首先安装一个MOK组件:

sudo apt install mokutil

然后输入以下命令:

sudo mokutil --disable-validation

之后shell会要求你创建密码,直接输入密码即可,输入两次确保正确,并记录下这个密码.

reboot

重启计算机,在弹出的画面选择Enroll MOK,按照要求(请仔细阅读密码输入要求),输入刚刚记录的密码即可.

最后跳转到一个对话框Disable secure boot?,选择yes,自动重启计算机.

进入系统以后再执行sudo modprobe vboxdrv即可.

注:

  • 本人所使用的计算机是技嘉Aero 15XV8,生产于2018年,有的计算机可以直接在BIOS里禁用secure boot,有的发行版可以在安装时设置密码禁用secure boot(如Ubuntu/Linux mint等),此方法不保证所有的计算机均有效,但新的计算机(2018+)应该可以使用此方法
neofetch
  • 以上是我使用的发行版信息,不同发行版使用不同的包管理器,安装程序命令可能不同,请酌情修改
  • 以上操作请在VirtualBox关闭状态下进行
  • 7
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
### 回答1: 虚拟机软件VirtualBox报错rc=-104通常是由于虚拟机的配置文件损坏或丢失所致。解决方法是删除虚拟机的配置文件,然后重新创建虚拟机。具体操作步骤如下: 1. 关闭VirtualBox软件。 2. 找到虚拟机的配置文件,一般在用户目录下的VirtualBox文件夹中,例如C:\Users\用户名\VirtualBox。 3. 找到对应虚拟机的文件夹,文件夹名字为虚拟机的名称。 4. 删除该文件夹中的所有文件,包括.vbox、.vbox-prev、.vdi等。 5. 重新打开VirtualBox软件,创建一个新的虚拟机,按照向导进行配置即可。 如果以上方法无法解决问题,可以尝试卸载并重新安装VirtualBox软件。 ### 回答2: VirtualBox是一款非常流行的虚拟化软件,它可以在不同的操作系统中运行虚拟机。但是,在使用VirtualBox的过程中,有时候会遇到各种各样的错误。其中,在启动虚拟机时,可能出现rc=-104错误的情况,这是因为VirtualBox没有正确访问硬件设备。 rc=-104错误可能有多种原因,下面是一些可能的解决方法: 1. 检查虚拟机设置。要检查VirtualBox的虚拟机设置,确保所有的配置都是正确的。首先,检查是否正确设置了虚拟机的网络和存储控制器等。然后,确保CPU和内存等设置都是正确的。 2. 禁用Hyper-V。如果在Windows 10中运行VirtualBox时遇到rc=-104错误,则需要禁用Hyper-V。在Windows中,可以通过控制面板 > 程序和功能 > 启用或关闭Windows功能来禁用Hyper-V。 3. 更新VirtualBox版本。如果您的VirtualBox版本过低,则可能会导致rc=-104错误。如果是这种情况,请尝试更新VirtualBox的最新版本,并重新启动虚拟机。 4. 重新安装VirtualBox。如果以上方法均无效,可以尝试重新安装VirtualBox。卸载现有版本,并安装最新版本。 总之,rc=-104错误可能源于多种原因。通过检查虚拟机设置、禁用Hyper-V、更新VirtualBox版本或重新安装VirtualBox,您可能可以解决这个问题。如果您的问题无法解决,请考虑寻求有关VirtualBox技术支持的帮助。 ### 回答3: VirtualBox错误rc=-104是指该虚拟机的硬盘空间不足,我们可以通过清理磁盘空间、移除不需要的应用或文件等方式来解决该问题。 下面是具体的解决步骤: 1. 确认硬盘空间:打开VirtualBox,找到该虚拟机的设置选项,点击“存储”,查看该虚拟机的硬盘空间占用情况。 2. 清理虚拟机垃圾:在虚拟机内部,可以采用清理系统自带的磁盘清理工具,如Windows系统的磁盘清理工具,来清理无用的文件和数据,从而腾出更多的硬盘空间。 3. 移除不必要的虚拟机:如果有其他不需要的虚拟机,可以将其移除或者导出至外部硬盘进行备份,从而释放虚拟机的硬盘空间。 4. 虚拟机硬盘扩容:如果以上方法无法解决问题,可以考虑对虚拟机的硬盘进行扩容。具体方法可以查阅VirtualBox的官方文档,或通过搜索引擎查询相关的操作方法。 5. 检查主机硬盘空间:如果以上方法也不能解决问题,需要检查主机硬盘空间是否足够,并将其进行清理。如果主机硬盘空间也不足,需要考虑更换硬盘或者添加外部硬盘。 综上所述,rc=-104的问题主要是由于虚拟机硬盘空间不足所引起的。我们可以通过清理磁盘空间、移除不需要的应用或文件等方式来解决该问题,或者对虚拟机硬盘进行扩容,以确保更多的硬盘空间可用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值