Archiv verlassen und diese Seite im Standarddesign anzeigen : Runlevel Skripte unter Suse 11.1
smartysmart34
31.10.09, 15:02
Hallo zusammen,
ich versuchge auf einem Suse 11.1-Server eine Virtualbox im "Headless"-Modus zu starten. Dafür habe ich ein Skript geschrieben, das unet Debian schon lief:
#! /bin/sh
### BEGIN INIT INFO
# Provides: vbheadless
# Required-Start: $vboxdrv
# Required-Stop:
# Default-Start: 3
# Default-Stop: 0 1 2 5 6 S
# Short-Description: VirtualBox Windows Server
### END INIT INFO
case "$1" in
start)
echo "Start VBoxHeadless WindowsXP2."
su -l VBHeadless -c '/usr/lib/virtualbox/VBoxHeadless -s WindowsXP2 &'
;;
stop)
echo "Stop VBoxHeadless WindowsXP2."
su -l VBHeadless -c 'VBoxManage controlvm WindowsXP2 savestate'
proc=1
while [ $proc -ne 0 ]
do
sleep 5
proc=$(ps -fU VBHeadless | grep VBoxHeadless | wc -l)
done
;;
esac
exit 0
Dieses habe ich nun unter /etc/init.d/rc3.d als Symlink mit dem Namen S20vbheadless eingerichtet. Allerdings startet er das Skript beim Booten nicht. Die einzelnen Zeilen für start und Stop, also
su -l VBHeadless -c '/usr/lib/virtualbox/VBoxHeadless -s WindowsXP2 &'
su -l VBHeadless -c 'VBoxManage controlvm WindowsXP2 savestate'
Funktionieren für sich alleine jeweils unter root. Die Maschine läuft dann unter dem Benutzer VBHeadless und fährt auch sauber runter. Daran kann es also eigentlich nicht liegen.
Habe ich was Susespezifisches verpasst?
Danke und Gruß,
Martin
nicht selber symlinken sondern insserv nutzen
# Required-Start: $vboxdrv
An welcher Stelle ist $vboxdrv in /etc/init.d/rc3.d verlinkt?
Könnte es sein, dass "S20" zu früh ist.
Das händische Verlinken an sich funktioniert schon, wenn die Reihenfolge der Start-Scripts stimmt...
Am besten den Link wieder löschen und das Start-/Stop-Script mit dem folgenden Befehl automatisch verlinken lassen.
/usr/lib/lsb/install_initd vbheadless (legt automatisch die Links an,
verschiebt auch ggf. andere
Links wenn nötig)
/usr/lib/lsb/remove_initd vbheadless (löscht die Links wieder)
SuSE legt dann selber entsprechend der Abhändigkeit die S- und K-Links in den gewünschten Runlevels an...
Sollte eine Abhängigkeit nicht erfüllt sein, kommt eine entsprechende Fehlermeldung...
Wenn es dann immer noch nicht funktioniert, könnte es vielleicht noch an fehlenden Umgebungsvariabeln liegen.
smartysmart34
31.10.09, 21:35
So schauts z.B. in rc3.d aus:
lrwxrwxrwx 1 root root 15 23. Okt 21:06 S04splash_early -> ../splash_early
lrwxrwxrwx 1 root root 10 28. Okt 18:55 S04vboxdrv -> ../vboxdrv
lrwxrwxrwx 1 root root 6 23. Okt 21:06 S05nfs -> ../nfs
lrwxrwxrwx 1 root root 6 23. Okt 21:06 S06kbd -> ../kbd
lrwxrwxrwx 1 root root 12 23. Okt 21:47 S07alsasound -> ../alsasound
lrwxrwxrwx 1 root root 15 23. Okt 21:24 S07avahi-daemon -> ../avahi-daemon
lrwxrwxrwx 1 root root 21 23. Okt 21:24 S07bluetooth-coldplug -> ../bluetooth-coldplug
lrwxrwxrwx 1 root root 19 23. Okt 21:21 S07java.binfmt_misc -> ../java.binfmt_misc
lrwxrwxrwx 1 root root 19 23. Okt 21:21 S07network-remotefs -> ../network-remotefs
lrwxrwxrwx 1 root root 7 23. Okt 21:21 S07sshd -> ../sshd
lrwxrwxrwx 1 root root 6 27. Okt 23:13 S08ntp -> ../ntp
lrwxrwxrwx 1 root root 7 23. Okt 21:21 S09nscd -> ../nscd
lrwxrwxrwx 1 root root 9 23. Okt 21:21 S09splash -> ../splash
lrwxrwxrwx 1 root root 7 23. Okt 21:21 S10cups -> ../cups
lrwxrwxrwx 1 root root 12 27. Okt 22:53 S11nfsserver -> ../nfsserver
lrwxrwxrwx 1 root root 10 23. Okt 21:21 S11postfix -> ../postfix
lrwxrwxrwx 1 root root 6 26. Okt 22:40 S11smb -> ../smb
lrwxrwxrwx 1 root root 7 23. Okt 21:29 S13cron -> ../cron
lrwxrwxrwx 1 root root 9 23. Okt 21:29 S13smartd -> ../smartd
lrwxrwxrwx 1 root root 15 23. Okt 21:29 S15stopblktrace -> ../stopblktrace
lrwxrwxrwx 1 root root 13 31. Okt 13:50 S20vbheadless -> ../vbheadless
Mir ist nur aufgefallen, dass unter required start die Dienste mal mit und mal ohne $ angegeben werden. Ob's daran liegt?
vboxdrv hat vorne drinstehen: provides: vboxdrv
Gruß,
Martin
Dieses habe ich nun unter /etc/init.d/rc3.d als Symlink mit dem Namen S20vbheadless eingerichtet. Allerdings startet er das Skript beim Booten nicht.
Was steht den in der Log-Datei "boot.msg" oder "messages"?
Wenn dort nichts drinnen steht, kannst Du vielleicht mal versuchen die Ausgabe des Start-Scripts in eine temporäre Log-Datei umzuleiten.
Mir ist nur aufgefallen, dass unter required start die Dienste mal mit und mal ohne $ angegeben werden. Ob's daran liegt?
vboxdrv hat vorne drinstehen: provides: vboxdrv
Provides: xxxx
wobei xxxx in der Regel immer so heißt wie das Start-Script selbst...
(dies ist letzlich der Name, den insserv für die Abhängigkeiten nimmt.)
Bei "Required-Start:" und "Required-Stop:" stehen manchmal Einträge mit $ und manchmal ohne $-Zeichen.
Dazu schaust Du mal in die Konfigurationsdatei "/etc/insserv.conf".
Dort können Dienste zusammengefasst werden.
$netdaemons portmap inetd
d.h. unter dem Oberbegriff z.B. $netdeamons stehen die beiden Dienste portmap und inetd
Die Dienste mit $-Zeichen beziehen sich auf die Gruppen in insserv.conf.
Wenn in der insserv.conf ein Dienst nicht definiert ist, kannst Du bei Required-Start und Stop wiederum den "Provides-Namen" des anderen Script auch direkt, dann aber ohne $-Zeichen eintragen....
su -l VBHeadless -c '/usr/lib/virtualbox/VBoxHeadless -s WindowsXP2 &'
Könnte vielleicht das "&"-Zeichen Probleme im Start-Script bereiten?
Oder musst Du vielleicht noch "nohup" vorweg verwenden? (da Du ja kein Output auf eine TTY hast)
In normalen Start-Script wird das "&"-Zeichen nicht benötigt....
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.