在 Virtualbox 中正在运行的客户机显示为已关闭
问题:
我在 virtualbox 中有许多虚拟机,一些虚拟机是由 Vagrant 创建的,其他虚拟机是通过 GUI 手动创建的。但每当我使用 启动虚拟机时vboxmanage starvm
,虚拟机的状态都会显示为Powerd Off
GUI 或vboxmanage showvminfo
,即使虚拟机在 GUI 中运行。
主机操作系统是带有 R9-7945HX 处理器的 Manjaro,并且安全启动被禁用。
(base) 0x00 in ~/Hypervisor/virtual-machines/Tools/Gparted/Logs λ inxi
CPU: 16-core AMD Ryzen 9 7945HX with Radeon Graphics (-MT MCP-)
speed/min/max: 1055/400/5461 MHz Kernel: 6.7.0-0-MANJARO x86_64 Up: 4h 8m
Mem: 8.47/30.53 GiB (27.8%) Storage: 2.75 TiB (22.9% used) Procs: 544
Shell: Zsh inxi: 3.3.33
复制:
例如启动一个名为 Gparted 的虚拟机。
(base) 0x00 in ~/Hypervisor/virtual-machines/Tools/Gparted/Logs λ vboxmanage startvm Gparted
Waiting for VM "Gparted" to power on...
VM "Gparted" has been successfully started.
(base) 0x00 in ~/Hypervisor/virtual-machines/Tools/Gparted/Logs λ vboxmanage showvminfo Gparted | grep State
State: powered off (since 2024-02-22T08:25:59.000000000)
(base) 0x00 in ~/Hypervisor/virtual-machines/Tools/Gparted/Logs λ vboxmanage list runningvms
(base) 0x00 in ~/Hypervisor/virtual-machines/Tools/Gparted/Logs λ
当 GUI 弹出时没有明显的错误,但您可以看到机器的状态与预期不匹配。
我的声誉没有 10,因此不允许我上传图片,如果您想查看显示 VM GUI 状态的图片,请查看下面的链接
但在进程列表中,虚拟机显示正在运行
(base) 0x00 in /var/log λ ps -ef | grep -iE 'vbox|virtual|slot' | grep -v grep
root 467 2 0 12:39 ? 00:00:00 [iprt-VBoxTscThread]
0x00 53520 1638 0 15:51 ? 00:00:11 /usr/lib/virtualbox/VirtualBox
0x00 53539 1096 0 15:51 ? 00:00:02 /usr/lib/virtualbox/VBoxXPCOMIPCD
0x00 53545 1096 0 15:51 ? 00:00:06 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
0x00 72847 1096 0 16:51 ? 00:00:01 /usr/lib/virtualbox/VBoxXPCOMIPCD
0x00 72853 1096 0 16:51 ? 00:00:05 /usr/lib/virtualbox/VBoxSVC --auto-shutdown
0x00 72881 72853 0 16:51 ? 00:01:09 /usr/lib/virtualbox/VirtualBoxVM --comment Gparted --startvm 4c830005-8675-45da-bc9f-a11964d3f610 --no-startvm-errormsgbox
清除后的内核环形缓冲区dmesg -C
(虚拟机启动之前)
(base) 0x00 in /var/log λ sudo dmesg
[15066.546635] vboxdrv: 0000000037a5da6e VMMR0.r0
[15066.652917] vboxdrv: 00000000a81b79f7 VBoxDDR0.r0
vbox.log 中没有明显的错误
https://gist.github.com/dhay3/a19d46e3231790b9f926d6610f70888c
完整信息vboxmanage showvminfo Gparted
https://gist.github.com/dhay3/6013ae1e704a26cac0c7e6337410e868
我尝试过的事情:
删除
.vbox-<username>-ipc
以下链接中提到的目录升级/降级 virtualbox/linux 内核不起作用
以 root 身份启动 virtualbox,使用相同的 ISO 创建虚拟机,然后重现上述步骤。状态符合预期!!!(正在运行-正在运行)
它不同于
尝试阅读一些源代码,但没有找到处理
starvm
子命令的函数
任何解决方法或提示都将不胜感激
答案1
几天来,我发现根本原因是非常规的用户名0x00
(十六进制 0)混淆了命令
SERVER_PID=`ps -U \`whoami\` | grep VBoxSVC | awk '{ print $1 }'`
在VBox
脚本中。它将获取所有根进程,而不是0x00
文字名称。因此,每次starvm
启动虚拟机时,VBoxSVC
都会创建一个进程。