VirtualBox虚拟机闪退后如何重新打开

电脑(Mac系统)由于某种问题自动重启了,重启后之前在用的VirtualBox(虚拟机管理器)能恢复运行,但VirtualBoxVM(虚拟机终端)进程已停止,点击管理器的「显示」也出现报错,导致虚拟机不能使用。

一、报错现象

图1-1 弹窗提示:先确定要启动的机器,使用这个指令进行启动

图1-1 弹窗提示:先确定要启动的机器,使用这个指令进行启动

此时如果关闭虚拟机管理器,再启动后管理器中会显示虚拟机正在运行,但点击「显示」还是报错。

注:先区分 虚拟机管理器虚拟机终端VirtualBox 是虚拟机管理器,负责虚拟机的参数配置管理,一般每次启动虚拟机都是通过管理器进行启动的。VirtualBoxVM 是虚拟机终端,即虚拟机运行进程,虚拟机操作都是在这里进行的,如下图所示:

图1-2 虚拟机管理器和虚拟机终端

图1-2 虚拟机管理器和虚拟机终端

图1-3 虚拟机管理器和虚拟机终端进程

图1-3 虚拟机管理器和虚拟机终端进程

二、解决方法

目前发现有两种解决方法,其中方法二更快更简单,对应方法如下:

方法一:根据提示,使用指令直接启动虚拟机(官方弹窗建议)

根据图1-1报错提示,可通过指令对虚拟机进行重启,该指令需要使用虚拟机UUID(通用唯一标识符)。虚拟机的UUID是多少?查询UUID的方法如下:

图2-1 查询虚拟机UUID

图2-1 查询虚拟机UUID
MacBook-Pro:~ fy$ 
MacBook-Pro:~ fy$ VBoxManage list vms
"Windows_7" {fa800cfb-6c97-451a-9573-020ec852dc03}
MacBook-Pro:~ fy$ 

获取虚拟机的UUID后,再使用启动指令开启虚拟机,方法如下:

MacBook-Pro:~ fy$ 
MacBook-Pro:~ fy$ VirtualBoxVM --startvm fa800cfb-6c97-451a-9573-020ec852dc03
DEBUG: issetugid_for_AppKit was called by 0x7fff302003d3 /System/Library/Frameworks/AppKit.framework/Versions/C/AppKit::_NSCheckForIllegalSetugidApp+0xb (via 0x7fff30200172)

指令执行后,就会看到虚拟机被直接呼起了(即不是通过虚拟机管理器启动的),如图所示:

图2-2 使用指令启动虚拟机

图2-2 虚拟机管理器和虚拟机终端进程
方法二:打开「用户与群组」,有解锁操作就行(简单快捷)

还有一种方法,就是进入「系统偏好设置」,打开「用户与群组」,解锁后随便点击操作几下,然后再去打开VirtualBox,这时就会发现虚拟机能正常启动了,操作步骤如下:

图2-3 点击「用户与群组」后也能启动虚拟机

图2-3 点击「用户与群组」后也能启动虚拟机