Re: [systemd-devel] VirtualBox VM as a unit failures
El jue, 1 sept 2022 a las 19:35, Silvio Knizek () escribió: > Am Donnerstag, dem 01.09.2022 um 19:17 -0300 schrieb Sergio Belkin: > > > > > > > > El jue, 1 sept 2022 a las 16:22, Silvio Knizek > > () escribió: > > > Am Donnerstag, dem 01.09.2022 um 14:59 -0300 schrieb Sergio Belkin: > > > > > > > > This is the unit file: > > > > [Unit] > > > > Description=VirtualBox VM %i > > > > After=network.target vboxdrv.service > > > > Before=runlevel2.target shutdown.target > > > > > > > > [Service] > > > > Type=forking > > > > Restart=no > > > > TimeoutSec=5min > > > > IgnoreSIGPIPE=no > > > > KillMode=process > > > > GuessMainPID=no > > > > RemainAfterExit=no > > > > > > > > #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 -- > > > > startvm > > > > f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config > > > > ExecStart=/usr/bin/VBoxManage startvm %i --type headless > > > > ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton > > > > > > > > [Install] > > > > WantedBy=default.target > > > > > > > > (End of file) > > > > > > > > What is the proper way to configure this kind of unit? > > > > > > > > Thanks in advance > > > > > > > Is this really a forking process? Or do you just instruct some > > > daemon > > > via a RPC call to start your VM? In this case no actuall process > > > would > > > be there. > > > If there is a forking process, can you instruct VBoxManage to run > > > in > > > the foreground? > > > Or do you need to start some daemon process first and if not > > > already > > > running, than VBoxManage does so? This would explain the lingering > > > processes. > > > In generall your KillMode=process is what keeps the other processes > > > running in the cgroup. Just remove it. > > > > > > Also, your Before= line is bogus. And if your vboxdrv.service just > > > contains the lines to load the vbox modules, you would be far > > > better of > > > with some snippet in /etc/modules-load.d > > > > > > Oh, and as you run in user mode, _all_ your Before= and After= > > > entries > > > are useless, as user units can't see and reference system units. > > > > > > So yeah, your goal would be to see how you can actually start the > > > VM > > > process via CLI and nothing else. > > > > > > BR > > > Silvio > > > > Hi Silvio, > > Nice answer. > > How to tell if it is a forking process? > > The command "/usr/bin/VBoxManage startvm RHEL7 --type headless" > > exits and then it runs "/usr/bin/VBoxManage startvm RHEL7 --type > > headles" > > > > Thanks again! > > Hi, > > please keep answers on-list. > For your message, I don't understand it. The command forks/exists and > runs itself? Or did you copy it wrong the second time? Has VBoxManage > other command line parameters you can use for _not_ forking? > Hi, Silvio, sorry by sending mail out-of-list. This what happens if I launch by hand: $ /usr/bin/VBoxManage startvm RHEL7 --type headless Waiting for VM "RHEL7" to power on... VM "RHEL7" has been successfully started. pstree --show-parents 72650 So I search the process: $ ps aux | grep -i VB root1088 0.0 0.0 0 0 ?I< 13:43 0:00 [iprt-VBoxWQueue] root1097 0.0 0.0 0 0 ?S13:43 0:00 [iprt-VBoxTscThread] sergio 72594 0.0 0.0 252628 10300 ?S17:31 0:00 /usr/lib/virtualbox/VBoxXPCOMIPCD sergio 72600 0.0 0.0 797244 21784 ?Sl 17:31 0:00 /usr/lib/virtualbox/VBoxSVC --auto-shutdown 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 sergio 77185 0.0 0.0 222312 2220 pts/1S+ 17:40 0:00 grep --color=auto -i VB The relevant process it seems to be 72650, so if I list the process tree $ pstree --show-parents 72650 systemd───systemd───VBoxSVC───VBoxHeadless───24*[{VBoxHeadless}] So I've edited the unit file in this way: [Unit] Description=VirtualBox VM %i [Service] Type=simple KillMode=mixed ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config #ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton [Install] WantedBy=default.target #(End of file) 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... Only final thing to mention: I've installed the acpid package on the guest (I didn't test sufficiently without it). HTH Cheers -- -- Sergio Belkin LPIC-2 Certified - http://www.lpi.org
Re: [systemd-devel] VirtualBox VM as a unit failures
Am Donnerstag, dem 01.09.2022 um 19:17 -0300 schrieb Sergio Belkin: > > > > El jue, 1 sept 2022 a las 16:22, Silvio Knizek > () escribió: > > Am Donnerstag, dem 01.09.2022 um 14:59 -0300 schrieb Sergio Belkin: > > > > > > This is the unit file: > > > [Unit] > > > Description=VirtualBox VM %i > > > After=network.target vboxdrv.service > > > Before=runlevel2.target shutdown.target > > > > > > [Service] > > > Type=forking > > > Restart=no > > > TimeoutSec=5min > > > IgnoreSIGPIPE=no > > > KillMode=process > > > GuessMainPID=no > > > RemainAfterExit=no > > > > > > #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 -- > > > startvm > > > f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config > > > ExecStart=/usr/bin/VBoxManage startvm %i --type headless > > > ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton > > > > > > [Install] > > > WantedBy=default.target > > > > > > (End of file) > > > > > > What is the proper way to configure this kind of unit? > > > > > > Thanks in advance > > > > > Is this really a forking process? Or do you just instruct some > > daemon > > via a RPC call to start your VM? In this case no actuall process > > would > > be there. > > If there is a forking process, can you instruct VBoxManage to run > > in > > the foreground? > > Or do you need to start some daemon process first and if not > > already > > running, than VBoxManage does so? This would explain the lingering > > processes. > > In generall your KillMode=process is what keeps the other processes > > running in the cgroup. Just remove it. > > > > Also, your Before= line is bogus. And if your vboxdrv.service just > > contains the lines to load the vbox modules, you would be far > > better of > > with some snippet in /etc/modules-load.d > > > > Oh, and as you run in user mode, _all_ your Before= and After= > > entries > > are useless, as user units can't see and reference system units. > > > > So yeah, your goal would be to see how you can actually start the > > VM > > process via CLI and nothing else. > > > > BR > > Silvio > > Hi Silvio, > Nice answer. > How to tell if it is a forking process? > The command "/usr/bin/VBoxManage startvm RHEL7 --type headless" > exits and then it runs "/usr/bin/VBoxManage startvm RHEL7 --type > headles" > > Thanks again! Hi, please keep answers on-list. For your message, I don't understand it. The command forks/exists and runs itself? Or did you copy it wrong the second time? Has VBoxManage other command line parameters you can use for _not_ forking?
Re: [systemd-devel] VirtualBox VM as a unit failures
Am Donnerstag, dem 01.09.2022 um 14:59 -0300 schrieb Sergio Belkin: > > This is the unit file: > [Unit] > Description=VirtualBox VM %i > After=network.target vboxdrv.service > Before=runlevel2.target shutdown.target > > [Service] > Type=forking > Restart=no > TimeoutSec=5min > IgnoreSIGPIPE=no > KillMode=process > GuessMainPID=no > RemainAfterExit=no > > #ExecStart=/usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm > f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config > ExecStart=/usr/bin/VBoxManage startvm %i --type headless > ExecStop=/usr/bin/VBoxManage controlvm %i acpipowerbutton > > [Install] > WantedBy=default.target > > (End of file) > > What is the proper way to configure this kind of unit? > > Thanks in advance > Is this really a forking process? Or do you just instruct some daemon via a RPC call to start your VM? In this case no actuall process would be there. If there is a forking process, can you instruct VBoxManage to run in the foreground? Or do you need to start some daemon process first and if not already running, than VBoxManage does so? This would explain the lingering processes. In generall your KillMode=process is what keeps the other processes running in the cgroup. Just remove it. Also, your Before= line is bogus. And if your vboxdrv.service just contains the lines to load the vbox modules, you would be far better of with some snippet in /etc/modules-load.d Oh, and as you run in user mode, _all_ your Before= and After= entries are useless, as user units can't see and reference system units. So yeah, your goal would be to see how you can actually start the VM process via CLI and nothing else. BR Silvio
[systemd-devel] VirtualBox VM as a unit failures
Hi, I,m triying to configure an user-level unit for a VirtualBox VM, but it does not work well, when I stop, it complains: systemctl --user status vbox_vm_start@RHEL7.service ○ vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 Loaded: loaded (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; vendor preset: disabled) Active: inactive (dead) since Thu 2022-09-01 14:21:57 -03; 5s ago Process: 378373 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type headless (code=exited, status=0/SUCCESS) Process: 378581 ExecStop=/usr/bin/VBoxManage controlvm RHEL7 acpipowerbutton (code=exited, status=0/SUCCESS) Tasks: 40 (limit: 38236) Memory: 23.6M CPU: 8.114s CGroup: /user.slice/user-1000.slice/user@1000.service /app.slice/app-vbox_vm_start.slice/vbox_vm_start@RHEL7.service ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config sep 01 14:21:51 munster.belkin.home systemd[3452]: Starting vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: Waiting for VM "RHEL7" to power on... sep 01 14:21:51 munster.belkin.home VBoxManage[378373]: VM "RHEL7" has been successfully started. sep 01 14:21:51 munster.belkin.home systemd[3452]: Started vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. sep 01 14:21:56 munster.belkin.home systemd[3452]: Stopping vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... sep 01 14:21:57 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains running after unit stopped. sep 01 14:21:57 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains running after unit stopped. sep 01 14:21:57 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains running after unit stopped. sep 01 14:21:57 munster.belkin.home systemd[3452]: Stopped vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. sep 01 14:21:57 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Consumed 3.386s CPU time. If I try to start, these are the errors: × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 Loaded: loaded (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 -03; 7s ago Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type headless (code=exited, status=1/FAILURE) Tasks: 40 (limit: 38236) Memory: 25.7M CPU: 3.338s CGroup: /user.slice/user-1000.slice/user@1000.service /app.slice/app-vbox_vm_start.slice/vbox_vm_start@RHEL7.service ├─ 378386 /usr/lib/virtualbox/VBoxXPCOMIPCD ├─ 378392 /usr/lib/virtualbox/VBoxSVC --auto-shutdown └─ 378442 /usr/lib/virtualbox/VBoxHeadless --comment RHEL7 --startvm f02a9f08-2ff2-4a92-b3cd-a8dfb17513c6 --vrde config sep 01 14:22:06 munster.belkin.home systemd[3452]: Starting vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7... sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: error: The machine 'RHEL7' is already locked by a session (or being locked or unlocked) sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: error: Details: code VBOX_E_INVALID_OBJECT_STATE (0x80bb0007), component MachineWrap, interface IMachine, callee n> sep 01 14:22:06 munster.belkin.home VBoxManage[378730]: VBoxManage: error: Context: "LaunchVMProcess(a->session, sessionType.raw(), ComSafeArrayAsInParam(aBstrEnv), progress.asOutPar> sep 01 14:22:06 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Control process exited, code=exited, status=1/FAILURE sep 01 14:22:06 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Failed with result 'exit-code'. sep 01 14:22:06 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378386 (VBoxXPCOMIPCD) remains running after unit stopped. sep 01 14:22:06 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378392 (VBoxSVC) remains running after unit stopped. sep 01 14:22:06 munster.belkin.home systemd[3452]: vbox_vm_start@RHEL7.service: Unit process 378442 (VBoxHeadless) remains running after unit stopped. sep 01 14:22:06 munster.belkin.home systemd[3452]: Failed to start vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7. This the unit file: × vbox_vm_start@RHEL7.service - VirtualBox VM RHEL7 Loaded: loaded (/home/sergio/.config/systemd/user/vbox_vm_start@.service; enabled; vendor preset: disabled) Active: failed (Result: exit-code) since Thu 2022-09-01 14:22:06 -03; 7s ago Process: 378730 ExecStart=/usr/bin/VBoxManage startvm RHEL7 --type headless (code=exited, status=1/FAILURE) Tasks: 40 (limit: 38236)