
Работающие гостевые машины отображаются в Virtualbox как выключенные
Вопросы:
У меня много виртуальных машин в virtualbox, некоторые виртуальные машины были созданы Vagrant, другие созданы вручную через GUI. Но всякий раз, когда я запускаю виртуальные машины с помощью vboxmanage starvm
, состояние виртуальной машины отображается как Powerd Off
в GUI или vboxmanage showvminfo
, даже если виртуальная машина запущена в GUI.
Хостовая ОС — Manjaro с процессором R9-7945HX, безопасная загрузка отключена.
(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 λ
При появлении графического интерфейса пользователя никаких явных ошибок не возникает, хотя можно увидеть, что состояние машины не соответствует ожидаемому.
У меня нет 10 репутации, поэтому я не могу загружать изображения. Если вы хотите увидеть изображение, показывающее состояние графического интерфейса виртуальной машины, перейдите по ссылке ниже.
Но в списке процессов виртуальная машина отображается как запущенная
(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
упоминание каталога в ссылке нижеhttps://www.virtualbox.org/manual/ch02.html#2.3.5.%20Запуск%20Oracle%20VM%20VirtualBox%20на%20Linux
Обновление/понижение версии ядра virtualbox/linux не помогло
Запустите virtualbox как root и создайте виртуальную машину, используя тот же ISO, затем воспроизведите шаги, указанные выше. Состояние совпало с ожидаемым!!! (runnging-running)
Это отличается от
Попытался прочитать исходный код, но не нашел функцию, обрабатывающую
starvm
подкоманду
Любые обходные пути или подсказки будут оценены по достоинству.
решение1
В течение нескольких дней я нахожу, что основная причина заключается в нестандартном имени пользователя 0x00
(шестнадцатеричное 0), которое сбивает с толку команду.
SERVER_PID=`ps -U \`whoami\` | grep VBoxSVC | awk '{ print $1 }'`
в VBox
скрипте. Он получит все корневые процессы вместо 0x00
буквального имени. Таким образом, каждый раз , когда создается starvm
виртуальная машина, VBoxSVC
будет создан процесс.