Stänga av Windows 7 VirtualBox rent med systemctl

Permalänk
Medlem

Stänga av Windows 7 VirtualBox rent med systemctl

Hej!

Jag har suttit i två dagar med att försöka få Windows 7 VM på VirtualBox att stängas av rent med systemctl när jag rebootar min Debian.

Jag har skapat en tjänst med följande innehåll:

[Unit] Description=Win7 VM Virtualbox After=network.target vboxdrv.service [Service] User=eazy ExecStart=/usr/bin/vboxheadless -s Win7 ExecStop=/usr/bin/vboxmanage controlvm Win7 acpipowerbutton [Install] WantedBy=multi-user.target

Den startas fint vid boot, men om jag rebootat min Debian host stängs inte Windows 7 av rent. Vid uppstart får jag upp Windows krashmeny där den väntar i 25 sekunder (eller hur länge det är) tills den startar upp.

Kör jag följande i konsol så stängs Windows av som det ska :

/usr/bin/vboxmanage controlvm Win7 acpipowerbutton

Jag har googlat och använt olika konfigurationer i min win7vm.service men ingen har funkat att stänga av Windows rent. Att använda VirtualBox egen service rekommenderas inte om man googlar. Jag har funderat på att göra ett eget script för reboot och poweroff men det känns inte rätt.

Någon som har en idé om hur min service ska se ut, eller om det är något annat som jag kan göra?

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Medlem
Skrivet av Eazy:

Hej!

Jag har suttit i två dagar med att försöka få Windows 7 VM på VirtualBox att stängas av rent med systemctl när jag rebootar min Debian.

Jag har skapat en tjänst med följande innehåll:

[Unit] Description=Win7 VM Virtualbox After=network.target vboxdrv.service [Service] User=eazy ExecStart=/usr/bin/vboxheadless -s Win7 ExecStop=/usr/bin/vboxmanage controlvm Win7 acpipowerbutton [Install] WantedBy=multi-user.target

Den startas fint vid boot, men om jag rebootat min Debian host stängs inte Windows 7 av rent. Vid uppstart får jag upp Windows krashmeny där den väntar i 25 sekunder (eller hur länge det är) tills den startar upp.

Kör jag följande i konsol så stängs Windows av som det ska :

/usr/bin/vboxmanage controlvm Win7 acpipowerbutton

Jag har googlat och använt olika konfigurationer i min win7vm.service men ingen har funkat att stänga av Windows rent. Att använda VirtualBox egen service rekommenderas inte om man googlar. Jag har funderat på att göra ett eget script för reboot och poweroff men det känns inte rätt.

Någon som har en idé om hur min service ska se ut, eller om det är något annat som jag kan göra?

Har inte gjort exakt vad du pratar om, men har en misstanke:

Är det så att kommandot /usr/bin/vboxmanage controlvm Win7 acpipowerbutton returernerar direkt (skickar ACPI-knapptrycket och är sedan klart)?
I så fall tänker jag mig att du behöver något mer som ser till att systemd väntar på att nedstängningen blir klar också.

(Tänker mig att Windows visserligen börjar stänga ned men att ingenting väntar på att det blir klart och sedan stänger moderskeppet ned för tidigt?)

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem
Skrivet av evil penguin:

Har inte gjort exakt vad du pratar om, men har en misstanke:

Är det så att kommandot /usr/bin/vboxmanage controlvm Win7 acpipowerbutton returernerar direkt (skickar ACPI-knapptrycket och är sedan klart)?
I så fall tänker jag mig att du behöver något mer som ser till att systemd väntar på att nedstängningen blir klar också.

(Tänker mig att Windows visserligen börjar stänga ned men att ingenting väntar på att det blir klart och sedan stänger moderskeppet ned för tidigt?)

Kör jag i en consol:

/usr/bin/vboxmanage controlvm Win7 acpipowerbutton

Så stängs mitt Win7 VM av som det ska. Jag har prövat att lägga till:

TimeoutStopSec=300

för att det ska få tid på sig att stängas av, men det lyder inte det. Kör jag "sudo reboot" så säger det bara pang och systemet startas om. Skulle det hjälpa att göra ett script istället för reboot och poweroff? Vet inte hur det skulle se ut, men jag känner att mekar för mycket med systemet om jag försöker mig på det.

Kanske försöker jag automatisera för mycket, men jag är lite för glömsk för att komma ihåg att stänga ner mitt VM innan jag gör en reboot eller poweroff.

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Medlem
Skrivet av Eazy:

Kör jag i en consol:

/usr/bin/vboxmanage controlvm Win7 acpipowerbutton

Så stängs mitt Win7 VM av som det ska. Jag har prövat att lägga till:

TimeoutStopSec=300

för att det ska få tid på sig att stängas av, men det lyder inte det. Kör jag "sudo reboot" så säger det bara pang och systemet startas om. Skulle det hjälpa att göra ett script istället för reboot och poweroff? Vet inte hur det skulle se ut, men jag känner att mekar för mycket med systemet om jag försöker mig på det.

Kanske försöker jag automatisera för mycket, men jag är lite för glömsk för att komma ihåg att stänga ner mitt VM innan jag gör en reboot eller poweroff.

TimeoutStopSec anger dock maximal tid att vänta på kommandot att bli klart... men om min gissning stämmer så är ju problemet istället att kommandot blir klart på nolltid, till skillnad från nedstängningen som tar jämförelsevis lång tid.

Mitt tips:
Testa om det fungerar om den bara får tid på sig (typ systemctl stop sdflkj och vänta själv på vad som händer)
Om det fungerar, och problemet verkar vara det jag föreslog, så fundera istället på hur man ser om vbox-maskinen stängts ned och nyttja detta för att lösa problemet

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

En googling säger att

vboxmanage showvminfo VMNAME --machinereadable | egrep '^VMState="poweroff"$'

borde fungera för att se om maskinen är nedstängd... borde gå att göra en loop med detta som ett andra ExecStop-steg eller liknande

Visa signatur

Desktop: Ryzen 5800X3D || MSI X570S Edge Max Wifi || Sapphire Pulse RX 7900 XTX || Gskill Trident Z 3600 64GB || Kingston KC3000 2TB || Samsung 970 EVO Plus 2TB || Samsung 960 Pro 1TB || Fractal Torrent || Asus PG42UQ 4K OLED
Proxmox server: Ryzen 5900X || Asrock Rack X570D4I-2T || Kingston 64GB ECC || WD Red SN700 1TB || Blandning av WD Red / Seagate Ironwolf för lagring || Fractal Node 304

Permalänk
Medlem

Jag gav upp att försöka med en service. Istället använde jag ett script och la till det i init.d. Det var inte helt lätt det heller. Jag tog detta scriptet: https://superuser.com/questions/789653/init-d-control-script-...
Det som inte funkade var "sudo update-rc.d vbox defaults 99 01" Jag fick manuellt göra egna genvägar till rc2d och rc5d och lägga till S01 före länknamnet.

Jag har säkerligen inte gjort efter konstens regler och säkert något som jag gjort fel, men det funkar i alla fall. Scriptet sätter VM'et i "saved state" istället för power off. Vet inte vilket jag föredrar. Försökte editera scriptet att sätta det så att det stänger av istället för "saved state" men jag förstår mig inte på scriptet.

Jag tycker det är konstigt att jag inte hittar en guide som funkar för att göra det jag vill göra. Jag är ju inte direkt ensam med att köra ett VM och behovet att starta om nån gång ibland. Att köra en kill process på ett VM känns inte som det är något någon vill göra oavsett vilket OS man kör i VM's.

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Medlem

Vet inte om jag borde startat en ny post, men jag kör ändå...

Har installerat VBoxGuestAdditions för att få USB att funka som det ska. När det väl är installerat, kan jag ta bort monteringen av VBoxGuestAdditions.iso Från "Storage Devices" i Virtualbox Settings, eller behövs den vara monterad?

Undrar också om det är normalt att Virtualbox-tjänsten drar mellan 15-20% CPU när allt är i idle? Går jag in i Windows 7 så visar resursövervakaren 0% så det är inget som Windows gör som drar cpu. Är det några tweaks som man kan göra?

Visa signatur

ASUS ROG STRIX B450-F GAMING - AMD Ryzen 5 3600 3.6 GHz 35MB - Cooler Master - Hyper 212 Black Edition - Corsair 16GB (2x8GB) DDR4 3200Mhz CL16 Vengeance LPX - Kingston A2000 500GB M.2 NVMe - Fractal Design Define C Svart - 2 X Noctua NF-P14s redux-1200 140mm PWM - Corsair RM650X 650W v2 - ASUS GeForce GTX 1060 6GB DUAL OC - Raijintek Morpheus II Heatpipe VGA Cooler - 2 X Noctua NF-P12 120mm PWM - OS Debian 10 Stable

Permalänk
Skrivet av Eazy:

Kör jag "sudo reboot" så säger det bara pang och systemet startas om.

Du vet väl att du kan använda "sudo shutdown -r +5" så att datorn väntar i fem minuter innan den startar om? Ibland måste man ange fulla sökvägen till shutdown-programmet, t.ex. /sbin/shutdown i Ubuntu.