Maszyna wirtualna w virtualbox jest już zablokowana na sesję (lub jest odblokowywana)

85

Moja maszyna wirtualna w virtualbox nie może się uruchomić z powodu tego błędu, nie chcę jej niszczyć i instalować ponownie, tak czy inaczej, aby ją odzyskać?

Wystąpił błąd podczas wykonywania VBoxManage, CLI używany przez Vagrant do kontrolowania VirtualBox. Polecenie i stderr pokazano poniżej.

Command: ["modifyvm", "319fcce3-e8ff-4b6f-a641-3aee1df6543f", "--natpf1", "delete", "ssh"]

Stderr: VBoxManage: error: The machine 'centos64_c6402_1454036461345_59755' is already locked for a session (or being unlocked)
VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee nsISupports
VBoxManage: error: Context: "LockMachine(a->session, LockType_Write)" at line 493 of file VBoxManageModifyVM.cpp
zjffdu
źródło

Odpowiedzi:

138

Uruchomienie tego w wierszu poleceń odblokowało maszynę wirtualną:

vboxmanage startvm <vm-uuid> --type emergencystop

Gdzie <vm-uuid>jest numer w komunikacie o błędzie: Command: ["modifyvm", "<vm-uuid>" [...]. Po tym byłem w stanie kontrolować maszynę wirtualną (start, zatrzymanie itp.). Korzystanie z Virtualbox 4.1 w systemie Ubuntu.

Gonzalo Matheu
źródło
1
dzięki człowiekowi, to naprawdę mi pomogło, miałem pewne problemy dotyczące folderu współdzielonego w dockerze. Nie mogłem usunąć udostępnionego folderu (błąd: nie można znaleźć udostępnionego folderu o nazwie „nasze wydatki”), a także podczas tworzenia mówił, że już istnieje (nie można utworzyć udostępnionego folderu „nasze wydatki” zmapowane do ”/ home / relu / projects / ourspends '(VERR_ALREADY_EXISTS))
Relu Mesaros
Gdzie dokładnie to uruchomię? Oczywiście nie pochodzi to z samej maszyny wirtualnej, ponieważ polecenie „vboxmanage” odnosi się do oprogramowania VBox na maszynie hostingowej, a sama maszyna wirtualna tego nie rozpoznaje. Z drugiej strony to polecenie jest nieznane również dla mojego komputera hostingowego (w moim przypadku jest to Windows 10). Więc ... czego potrzebuję, aby uruchomić to polecenie?
TheCuBeMan
Wykonałem to na terminalu przy użyciu Linuksa. Myślę, że w systemie Windows można to wykonać w wierszu polecenia (cmd). Został przetestowany z VirtualBox 4.1
Gonzalo Matheu
4
Skorzystaj lista VBoxManage -nologo VMS , aby dowiedzieć się swoją VM-UUID
Jakob
3
W przypadku systemu Windows potrzebujesz pełnej ścieżki, więc uruchom"C:\Program Files\Oracle\VirtualBox\VBoxManage.exe" <vm-uuid> --type emergencystop
Felix Eve
35

Mając ten sam problem, stwierdziłem, że był uruchomiony proces faktycznie blokujący maszynę wirtualną:

501 79419 79323   0  2:18PM ??         0:39.75 /Applications/VirtualBox.app/Contents/MacOS/VBoxHeadless --comment default --startvm 1d438a2e-68d7-4ba2-bef9-4ea162913c1b --vrde config

Upewnij się, że proces nie utknął podczas próby uruchomienia maszyny wirtualnej:

ps -ef | grep -i "vbox"
Gergely Toth
źródło
To zadziałało dla mnie. Zabiłem wszystkie procesy zwrócone przez instrukcję ps -ef, a następnie "vagrant zniszcz" zadziałało ponownie.
thebiggestlebowski
13

Dla mnie musiałem zabić proces VboxHeadless.exe w menedżerze zadań. Musiałem również upewnić się, że monit CMD został otwarty w trybie administracyjnym.

jreed350z
źródło
Pracowałem również dla mnie używając Linuksa. Radzę, aby bezpiecznie zamknąć wszystkie inne uruchomione maszyny wirtualne (można użyć, ps aux | grep boxjeśli w terminalu).
Dan,
11

Ta odpowiedź od @Gonzalez była dla mnie bardzo interesująca.

vboxmanage startvm <vm-uuid> --type emergencystop

Jedynym problemem jest to, że zamyka bieżącą instancję mojej maszyny wirtualnej, więc zamiast używać modifyvmmożesz użyć, controlvmjeśli bieżąca maszyna wirtualna jest uruchomiona.

Na przykład:

 VBoxManage modifyvm <vm_name> --natpf1 "guestssh,tcp,,22,,2222"
 VBoxManage modifyvm <vm_name> --natpf1 delete "guestssh"

Zostać:

VBoxManage controlvm <vm_name> natpf1 "guestssh,tcp,,22,,2222"
VBoxManage controlvm <vm_name> natpf1 delete "guestssh"

Pełna dokumentacja tutaj https://www.virtualbox.org/manual/ch08.html#vboxmanage-controlvm

Erman
źródło
10

sudo pkill -9 VBox zabija wszystko, co działa związane z vbox

Jana
źródło
7

W Menedżerze zadań Windows zakończyłem wszystkie zadania związane z Virtual Box (widać, że zaczynają się od litery V w Menedżerze zadań, np. Vbox Headless.exe itp.). Kiedy to zrobiłem, udało mi się usunąć ten błąd (powyższe rozwiązania „vboxmanage startvm ... etc ...” nie działały dla mnie).

armyofda12mnkeys
źródło
4

Jeśli masz otwarte okno ustawień dla tego pola w GUI VirtualBox, możesz napotkać ten błąd. Po prostu zamknij okno ustawień i spróbuj ponownie.

John Brandenburg
źródło
1

Dzisiaj napotkałem ten sam komunikat o błędzie:

>me@myhost:~$ ps -ef | grep -i "vbox"

me  3064     1  0 08:51 ?        00:00:00 /usr/lib/virtualbox/VBoxXPCOMIPCD

me  3089     1  0 08:51 ?        00:00:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown

me  3126  3089 27 08:51 ?        00:00:39 /usr/lib/virtualbox/VBoxHeadless --comment RHEL5 64-bit desktop --startvm e5c598d8-1234-4003-a7c1-b9d8af15dfe7 --vrde config

me  3861  3415  0 08:53 pts/1    00:00:00 grep --color=auto -i vbox*

Odpowiedź Gergely doskonale to rozwiązuje. Okazało się, że mam ustawioną tabelę crontab podczas restartu, aby uruchomić maszynę wirtualną, która zainicjowała trzy procesy VBox pokazane powyżej

me@myhost:~$ crontab -l

@reboot me /usr/bin/vboxmanage startvm "RHEL5 64-bit desktop" --type headless
XX
źródło
0

Jedyną opcją, która działała dla mnie, było zabicie wszystkich procesów pasujących do ps axl | grep -i vbox.

Charles Thomas
źródło
0

W moim przypadku oczywistą przyczyną był adapter Ethernet USB, który został usunięty po zawieszeniu maszyny. W moim przypadku,

vboxmanage startvm <vm-uuid> --type emergencystop

nie pomogło. Zamiast tego otrzymałem mylącą wiadomość

VBoxManage: error: The machine 'xyzzy' is not locked by a session

Prawdziwy błąd został ujawniony przez uruchomienie

vboxmanage startvm <vm-uuid> --type gui

który wrócił

VBoxManage: error: Nonexistent host networking interface, name 'en9: USBPlug' (VERR_INTERNAL_ERROR)

Zmiana konfiguracji sieci na inną kartę sieciową rozwiązała problem.

zeeMonkeez
źródło