Nie mogę uruchomić mojej maszyny wirtualnej podczas uruchamiania.
Próbowałem „aplikacji startowych” i update-rc.d bez powodzenia.
sudo update-rc.d startvms defaults 99 10
Utworzyło to wszystkie odpowiednie dowiązania symboliczne dla różnych poziomów uruchamiania, ale maszyna wirtualna nadal się nie uruchamia.
Oto mój skrypt startvms:
#!/bin/bash
### BEGIN INIT INFO
# Provides: startvms
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start my VMs at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
case "$1" in
start)
echo "Starting"
nohup VBoxHeadless --startvm "UbuntuServer" &
;;
stop)
echo "Stopping $DESC"
VBoxManage controlvm "UbuntuServer" poweroff
;;
restart|force-reload)
echo "Restarting $DESC"
VBoxManage controlvm "UbuntuServer" poweroff
nohup VBoxHeadless --startvm "UbuntuServer" &
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload}" >&2
exit 1
;;
esac
Co ja robię źle?
virtualbox
startup
capdragon
źródło
źródło
VBoxManage startvm --type headless "UbuntuServer"
zamiastVBoxHeadless
polecenia?su -c 'VBoxHeadless --startvm <MACHINE>'
.Odpowiedzi:
TO jest to, co w końcu udało się!
1) Utwórz plik skryptu uruchamiania
w /etc/init.d -
sudo nano /etc/init.d/StartVM
.Kopiuj Wklej następujące elementy w pliku i zastąp „My VM Name” dla swojej nazwy VM:
2) Nadaj skryptowi uprawnienia do wykonywania
z
sudo chmod +x /etc/init.d/StartVM
.3) Powiedz skryptowi, aby uruchomił się przy starcie.
powiedz skryptowi, aby pierwszy się zamknął, a ostatni uruchomił się.
sudo update-rc.d StartVM defaults 99 01
źródło
VBoxManage startvm --type headless
byłoby lepiej?Do Twojej wiadomości, Działa to nauseuse bez nohup.
źródło
Działa to poprawnie z serwerem Ubuntu 12.04 i VirtualBox 4.2.20.
I
i
jak wskazano w poprzedniej odpowiedzi.
źródło
Ponieważ wspominasz, że VBoxHeadless działa dobrze, jeśli wpiszesz go z linii poleceń terminala, ale nie uruchomi żadnej maszyny wirtualnej po uruchomieniu ze skryptu init, domyślam się, że szuka jakiejś zmiennej środowiskowej, która jest zdefiniowana po uruchomieniu powłoki w twoim terminalu, ale niezdefiniowany w środowisku skryptowym init (który jest zasadniczo pusty, z wyjątkiem parametrów podanych w wierszu poleceń jądra).
Czy możesz spróbować zastąpić to wywołaniem VBoxHeadless w skrypcie?
Tutaj „nazwa użytkownika” i ścieżka katalogu domowego powinny zostać zmienione, aby pasowały do użytkownika, którego używasz do uruchomienia maszyny wirtualnej.
Jeśli to zadziała , możesz użyć su -l do uruchomienia VBoxHeadless zamiast hacka w env .
źródło
su -l
- to dobry punkt!W najnowszych wersjach Virtualbox (od wersji 4.2.0) nie trzeba uruchamiać własnego skryptu, aby automatycznie uruchomić maszynę wirtualną, ale wymaga to trochę konfiguracji. Zobacz rozdział 9.24 instrukcji Virtualbox „ Uruchamianie maszyn wirtualnych podczas uruchamiania systemu ”
Niestety instrukcja zawiera jedynie ogólne instrukcje i nie była aktualizowana od wieków. Znalazłem ten post na forach virtualbox z dodatkowymi szczegółami.
Możesz po prostu wstawić wiersz w rc.local, aby uruchomić serwer, ale jeśli chcesz to zrobić, „oficjalny” sposób czytaj dalej ...
Dodaj te linie do / etc / default / virtualbox:
Edytuj /etc/vbox/vboxautostart.cfg (w tym przykładzie odmawia się uprawnień do autostartu wszystkim użytkownikom z wyjątkiem użytkownika „Bob”:
Dodaj grupę vboxusers do / etc / vbox i lepki bit:
Dodaj wszystkich użytkowników, którzy będą korzystać z virtualbox, do grupy „vboxusers”, np .:
Każdy użytkownik, który chce włączyć autostart dla poszczególnych komputerów, musi ustawić ścieżkę do katalogu bazy danych autostartu za pomocą:
Użytkownicy mogą następnie ustawić maszyny wirtualne na automatyczne uruchamianie i skonfigurować sposób ich zatrzymania (np. Savestate, acpishutdown) za pomocą:
Powyższe działało dla mnie z Virtualbox 5, zainstalowanym z repozytorium virtualbox.org.
źródło
można również chcieć ustawić port bezpośrednio przy użyciu vrdp .. komentarza do najwyższej odpowiedzi, która dobrze dzieli na przedziały, aby używać różnych skryptów dla różnych vms
źródło
Wow .. Widzę wszystkie te rozwiązania, które wydają się nieco skomplikowane, ale to mój trzeci laptop, na którym skończyłem po prostu pisząc:
VBoxHeadless -s "Ubuntu Server"
w moim pliku rc.local w katalogu / etc / i działało całkiem nieźle. Automatycznie uruchamia maszynę wirtualną po ponownym uruchomieniu.
źródło