<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">El jue, 1 sept 2022 a las 19:35, Silvio Knizek (<<a href="mailto:killermoehre@gmx.net" target="_blank">killermoehre@gmx.net</a>>) escribió:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Am Donnerstag, dem 01.09.2022 um 19:17 -0300 schrieb Sergio Belkin:<br>
> <br>
> <br>
> <br>
> El jue, 1 sept 2022 a las 16:22, Silvio Knizek<br>
> (<<a href="mailto:killermoehre@gmx.net" target="_blank">killermoehre@gmx.net</a>>) escribió:<br>
> > Am Donnerstag, dem 01.09.2022 um 14:59 -0300 schrieb Sergio Belkin:<br>
> > > <br>
> > > This is the unit file:<br>
> > > [Unit]<br>
> > > Description=VirtualBox VM %i<br>
> > > After=network.target vboxdrv.service<br>
> > > Before=runlevel2.target shutdown.target<br>
> > > <br>
> > > [Service]<br>
> > > Type=forking<br>
> > > Restart=no<br>
> > > TimeoutSec=5min<br>
> > > IgnoreSIGPIPE=no<br>
> > > KillMode=process<br>
> > > GuessMainPID=no<br>
> > > RemainAfterExit=no<br>
> > > <br>
> > > #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --<br>
> > > startvm<br>
> > > f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config <br>
> > > ExecStart=/usr/bin/VBoxManage startvm %i --type headless<br>
> > > ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton<br>
> > > <br>
> > > [Install]<br>
> > > WantedBy=default.target<br>
> > > <br>
> > > (End of file)<br>
> > > <br>
> > > What is the proper way to configure this kind of unit?<br>
> > > <br>
> > > Thanks in advance<br>
> > > <br>
> > Is this really a forking process? Or do you just instruct some<br>
> > daemon<br>
> > via a RPC call to start your VM? In this case no actuall process<br>
> > would<br>
> > be there.<br>
> > If there is a forking process, can you instruct VBoxManage to run<br>
> > in<br>
> > the foreground?<br>
> > Or do you need to start some daemon process first and if not<br>
> > already<br>
> > running, than VBoxManage does so? This would explain the lingering<br>
> > processes.<br>
> > In generall your KillMode=process is what keeps the other processes<br>
> > running in the cgroup. Just remove it.<br>
> > <br>
> > Also, your Before= line is bogus. And if your vboxdrv.service just<br>
> > contains the lines to load the vbox modules, you would be far<br>
> > better of<br>
> > with some snippet in /etc/modules-load.d<br>
> > <br>
> > Oh, and as you run in user mode, _all_ your Before= and After=<br>
> > entries<br>
> > are useless, as user units can't see and reference system units.<br>
> > <br>
> > So yeah, your goal would be to see how you can actually start the<br>
> > VM<br>
> > process via CLI and nothing else.<br>
> > <br>
> > BR<br>
> > Silvio<br>
> <br>
> Hi Silvio,<br>
> Nice answer.<br>
> How to tell if it is a forking process?<br>
> The command  "/usr/bin/VBoxManage startvm RHEL7  --type headless"<br>
> exits  and then it runs "/usr/bin/VBoxManage startvm RHEL7  --type<br>
> headles"<br>
> <br>
> Thanks again!<br>
<br>
Hi,<br>
<br>
please keep answers on-list.<br>
For your message, I don't understand it. The command forks/exists and<br>
runs itself? Or did you copy it wrong the second time? Has VBoxManage<br>
other command line parameters you can use for _not_ forking?<br>
</blockquote></div><div><br></div><div><br></div><div>Hi, Silvio, sorry by sending mail out-of-list.</div><div><br></div><div>This what happens if I launch by hand:<br></div><div><br></div><div> $  /usr/bin/VBoxManage startvm RHEL7 --type headless<br>Waiting for VM "RHEL7" to power on...<br>VM "RHEL7" has been successfully started. pstree --show-parents 72650</div><div><br></div><div>So I search the process:<br></div><div><br></div><div>$ ps aux | grep -i VB<br>root        1088  0.0  0.0      0     0 ?        I<   13:43   0:00 [iprt-VBoxWQueue]<br>root        1097  0.0  0.0      0     0 ?        S    13:43   0:00 [iprt-VBoxTscThread]<br>sergio     72594  0.0  0.0 252628 10300 ?        S    17:31   0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD<br>sergio     72600  0.0  0.0 797244 21784 ?        Sl   17:31   0:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown<br>sergio     72650  7.7  0.7 2445132 252568 ?      Sl   17:31   0:39 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config<br>sergio     77185  0.0  0.0 222312  2220 pts/1    S+   17:40   0:00 grep --color=auto -i VB</div><div><br></div><div>The relevant process it seems to be 72650, so if I list the process tree<br></div><div></div><div>$ pstree --show-parents 72650<br>systemd───systemd───VBoxSVC───VBoxHeadless───24*[{VBoxHeadless}]<br></div><div><br></div><div>So I've edited the unit file in this way:</div><div>[Unit]<br>Description=VirtualBox VM %i<br><br>[Service]<br>Type=simple<br>KillMode=mixed<br>ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config <br>#ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton<br><br>[Install]<br>WantedBy=default.target<br></div><div>#(End of file)</div><div><br></div><div>I don't know exactly why but  I had to set KillMode to mixed, and the more counterintuitive for me was commenting out the ExecStop line, otherwise I would have to start the service twice. I'm amazed how systemd stops the service in the right way. it works even if I run poweroff within the VM, systemd is aware that it's stopped...<br></div><div>Only final thing to mention: I've installed the acpid package on the guest (I didn't test sufficiently without it).</div><div>HTH<br></div><div>Cheers<br></div><div><br></div>-- <br><div dir="ltr"><div dir="ltr"><div><div dir="ltr">--<br>Sergio Belkin<br>LPIC-2 Certified - <a href="http://www.lpi.org" target="_blank">http://www.lpi.org</a></div></div></div></div></div>