PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Neues Suse 12.2 und Virtualbox Headless beim Boot mit systemd?



smartysmart34
18.11.12, 14:22
Hallo zusammen,

Ich hatte bisher unter Suse 11.4 eine VM, die mittels Virtualbox durch ein init-Script im Headless-Betrieb gestartet und gestoppt wurde. Beim Booten des systems gestartet, beim Runterfahren schlafen gelegt.

Nun möchte ich bei meinem neu aufgesetzten 12.2er System das Gleiche via systemd erreichen. Kann mir jemand nen Tipp geben, wie das gehen kann? Das Init-Script hätte ich noch. Aber wie binde ich die Logik in systemd ein?

Danke und Gruß,
Martin

Rainer Juhser
19.11.12, 10:02
Das Init-Script hätte ich noch. Aber wie binde ich die Logik in systemd ein?Vielleicht wirst du hier fündig: Ergebnis der Google-Suche nach "systemd howto" (http://www.linux.com/learn/tutorials/527639-managing-services-on-linux-with-systemd)

smartysmart34
19.11.12, 16:38
Vielen Dank. Google Suche hab ich auch schon bemüht.

Da hab ich jetzt wieder 11 Links, die alle iergendwas zu systemd beschreiben. Eigentlich will ich systemd nicht studieren, sondern meinen Rechner nutzen. Ich bin nur in soweit Admin, als ich den Kram irgendwie am Laufen halten muss.

Daher war meine ganz konkrete Frage ja auch, ob mir jemand einen Tip geben kann, wie ich aus einem vorhandenen init-script einen systemd-kompatiblen Service mache.

Gehört es jetzt zur Grundanforderung, um ein Linux-System auch nutzen zu dürfen, dass man geschätzt 30 Din A4-Seiten allein über den Boot-Prozess lesen und verstehen muss?

DrunkenFreak
19.11.12, 16:58
Es gehört nicht jetzt zur Grundanforderung, sondern es war schon immer die Grundanforderung. Wenn du es einfach haben willst, kauf dir Support dazu. Wenn du es günstig haben willst, lies dir eins der zig Howtos durch, wie man ein Skript für systemd schreibt und in systemd einbindet. Dies ist kein Hexenwerk.

nopes
19.11.12, 17:45
ne, sorry das kann es irgendwie nicht sein, ich dachte immer ich hätte nichts gegen Neuerungen, aber dieses ganze systemd Zeugs, wirkt mal sowas von unfertig. Wie auch immer nach kurzem googlen bin ich hier drüber gestolpert - systemd-sysv-convert.

Dabei fällt mir ein, hat systemd nicht auch sowas wie sysv-rc-conf?

Naja unterm Strich, bin ich froh, dass Debian sich damit noch ein bisschen Zeit läßt :) Weil irgendwie kann ich mein Zeit auch mit schöneren Sachen zu bringen, als die Funktionsweise eines neu erfunden Rads zu lernen.

Davon ab, starten tut man die Dienste noch genauso, geht dann halt nicht automatisch, aber hin kannst du es manuell tun

smartysmart34
19.11.12, 19:41
So, ich hab nun ein service-File erstellt, aber er beschwert sich über ein Syntaxproblem. Ich nehme an, bei den Aufrufen zu ExecStart und ExecStop. Dort habe ich die Aufrufe aus dem alten Init-Script rein genommen.

Hat hier jemand ne Idee, woran das liegen könnte?

[Unit]
Description=VBHeadless
After=syslog.target

[Service]
Type=dbus
BusName=de.soltau.vbheadless
ExecStart=su -l VBHeadless -c '/usr/lib/virtualbox/VBoxHeadless -s Windows7 &' > /var/log/vbheadlesslog
ExecStop=su -l VBHeadless -c 'VBoxManage controlvm Windows7 savestate'

[Install]
WantedBy=multi-user.target

Danke und Gruß,
Martin

smartysmart34
23.11.12, 13:22
Hallo nochmal,

das File sieht jetzt so aus:

[Unit]
Description=VBHeadless
After=syslog.target

[Service]
ExecStart=/usr/bin/VBoxHeadless -s Windows7
ExecStop=/usr/bin/VBoxManage controlvm Windows7 savestate
User=VBHeadless

[Install]
WantedBy=multi-user.target


Es liegt in /etc/systemd/system und kann mit

systemctl start vbheadless.service
gestartet und mit

systemctl stop vbheadless.service
gestoppt werden.

Die VM läuft dann auch hoch und ich kann mich von aussen (remote rechner) anmelden. ALles fein soweit.

Also wollte ich systemd mit dem Befehl

systemctl enable vbheadless.service

dazu bringen, die VM bei jedem Boot zu starten.

Das klappt aber leider nicht. Das einzige, das ich zum Thema VirtualBox im Log finde ist:

Nov 23 13:53:56 localhost systemd[1]: vbheadless.service: main process exited, code=exited, status=1
Nov 23 13:53:57 localhost systemd[1]: vbheadless.service: control process exited, code=exited status=1
Nov 23 13:53:57 localhost systemd[1]: Unit vbheadless.service entered failed state.


Wie gesagt, manuell als root klappt es.

Wo ist denn mein Denkfehler bzw. wo im System kann ich ggf. besser erkennen, was das Problem ist?

Danke und Gruß,
Martin

drcux
23.11.12, 15:31
systemctl status vboxheadless.service

?

smartysmart34
23.11.12, 20:32
Direkt nach dem Boten ohne manuelle Intervention ergibt das:

vboxheadless.service
Loaded: error (Reason: No such file or directory)
Active: inactive (dead)


Wenn ich den Dienst manuell als Root mit "systemctl start vbheadless.service" starte, dann ergibt das zwar hinterher immernoch die gleiche Meldung, in "top" sehe ich aber:

Tasks: 114 total, 1 running, 113 sleeping, 0 stopped, 0 zombie
%Cpu(s): 2,3 us, 24,2 sy, 0,0 ni, 73,2 id, 0,0 wa, 0,0 hi, 0,2 si, 0,0 st
KiB Mem: 3051652 total, 2317228 used, 734424 free, 43584 buffers
KiB Swap: 10480636 total, 0 used, 10480636 free, 542172 cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
20656 VBHeadle 20 0 1190m 1,0g 983m S 53,2 34,9 1:50.00 VBoxHeadless
2618 root 20 0 85176 40m 18m S 0,3 1,3 0:50.12 kdm_greet

Der Prozess ist also da. Durch den systemctl-start-Aufruf.
Und wenn ich ihn mit "systemctl stop vbheadless.service" stoppe, verschwindet er aus der Prozessübersicht auch wieder.
Irgendwie ergibt das für mich keinen Sinn...

drcux
23.11.12, 22:31
Verschiebe mal deine vboxheadless.service nach "/usr/lib/systemd/system", alle Links etc. in "/etc/systemd" löschen und nochmal mit "systemctl enable vbheadless.service" aktivieren.

smartysmart34
28.11.12, 21:19
Gerade ausprobiert. Einrichtung hat geklappt (Lionks löschen, .service verschieben, neu enablen).
Beim manuellen start via systemctl start passiert das Gleiche wie im Post vorher. Der Service startet, aber der Status ist angeblich error (No such file...)