Script bei systemstart laufen lassen

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
k3kz0r
Beiträge: 7
Registriert: 18.08.2011 21:43:23

Script bei systemstart laufen lassen

Beitrag von k3kz0r » 22.08.2011 15:56:30

Hallo,

ich habe mir ein Script geschrieben was einige Einstellungen während des Bootvorgangs ändern soll.

Wie kann ich jetzt ein Shell Script in den Bootvorgang integrieren, das gestartet wird bevor der x-server oder gnome startet?
Meinetwegen kann das Script auch als allererstes starten...Hauptsache vor X und Gnome.

Ich habe schon einiges von rcX.d ordnern und init.d gelesen, aber egal wie ich da etwas eintrage, es wird nicht ausgeführt beim Booten...

omikron
Beiträge: 80
Registriert: 04.08.2011 19:12:49

Re: Script bei systemstart laufen lassen

Beitrag von omikron » 22.08.2011 16:31:40

Normalerweise würde ich es in die init.d einfügen, die Frage ist natürlich wie man es deklariert.
Man kann auch Scripte über etc/rc.local starten.

Du willst aber wohl was am Bootvorgang ändern, eventuell ist der Vorgang abgearbeitet, vielleicht solltest Du das besser direkt über den BootLoader erledigen.

k3kz0r
Beiträge: 7
Registriert: 18.08.2011 21:43:23

Re: Script bei systemstart laufen lassen

Beitrag von k3kz0r » 22.08.2011 20:29:45

und wie mache ich das?

Benutzeravatar
heinz
Beiträge: 535
Registriert: 20.12.2007 01:43:49

Re: Script bei systemstart laufen lassen

Beitrag von heinz » 22.08.2011 20:53:28

Hallo k3kz0r,

http://debianforum.de/forum/viewtopic.p ... l+skeleton

das sollte Dir weiterhelfen...

gruß heinz

Benutzeravatar
Livingston
Beiträge: 1816
Registriert: 04.02.2007 22:52:25
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: 127.0.0.1

Re: Script bei systemstart laufen lassen

Beitrag von Livingston » 25.08.2011 12:50:49

Der zitierte Thread ist 7 Jahre alt. Inzwischen läuft die Sache ein wenig anders.
Nach wie vor kann mit /etc/init.d/skeleton als Vorlage ein Script erstellt werden, das dann auch dort im Verzeichnis deponiert wird. Dann aber kommt Debianinsserv zum Zuge. Anhand der Informationen im Header des Scriptes berechnet es Abhängigkeiten zu anderen Scripten und schiebt das neue an die richtige Position in den verschiedenen Runlevels. Debianinsserv verwaltet dafür eine eigene Datenbank und lädt die Scripte nach deren Vorgabe.
D.h. selbst erstellte Links in den jeweiligen Runlevelverzeichnissen auf /etc/init.d/ bringen nix mehr, sie dienen eigentlich nur noch der Dokumentation und zeigen, wie insserv die Scripte angeordnet hat.
Also: Schau Dir mal Debianinsserv genauer an - insbesondere die man page und fertige script header aus /etc/init.d/, um das Ganze sauber hinzukriegen.

EDIT: Ergänzung

Beispiel. In /etc/init.d/alsa-utils sieht der Header so aus;

Code: Alles auswählen

#!/bin/sh
#
# alsa-utils initscript
#
### BEGIN INIT INFO
# Provides:          alsa-utils
# Required-Start:    $remote_fs udev
# Required-Stop:     $remote_fs
# Default-Start:     S
# Default-Stop:      0 1 6
# Short-Description: Restore and store ALSA driver settings
# Description:       This script stores and restores mixer levels on
#                    shutdown and bootup.On sysv-rc systems: to
#                    disable storing of mixer levels on shutdown,
#                    remove /etc/rc[06].d/K50alsa-utils.  To disable
#                    restoring of mixer levels on bootup, rename the
#                    "S50alsa-utils" symbolic link in /etc/rcS.d/ to
#                    "K50alsa-utils".
### END INIT INFO
Was hinter # Provides steht ist quasi der Name des Services, der in die Startscripte aufgenommen werden soll. Den kannst Du frei wählen, er darf nur nicht bereits anderweitig benutzt sein.
# Required-Start gibt an, was vorher laufen soll, um den Service zu starten, entsprechend # Required-Stop was vorher anzuhalten ist, wenn der Service wieder gestoppt wird.
Alles, was in diesem Zusammenhang mit $ beginnt, sind vordefinierte Sammlungen von Services, genaueres siehe man page.
Was Du suchst ist die Option # X-Start-Before. Das X bezieht sich nicht auf den Xserver, sondern hat wahrscheinlich die Bedeutung extended oder so was. Macht aber nix. Du kannst hier z.B. eintragen:

Code: Alles auswählen

# X-Start-Before: gdm
, falls Du X mit gdm startest. gdm bezieht sich in diesem Fall nur "zufällig" auf das gleichnamige Programm. Vielmehr wird bereits an anderer Stelle gdm mit oben genanntem # Provides ein Sevice dieses Namens definiert. Einfach mal stöbern.

Am Ende dem Script Ausführungsrechte geben und

Code: Alles auswählen

/etc/init.d# insserv
nicht vergessen.
Fertig 8)

EDIT: kleine Fehlerchen korrigiert

Antworten