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...
Script bei systemstart laufen lassen
Re: Script bei systemstart laufen lassen
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.
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.
Re: Script bei systemstart laufen lassen
und wie mache ich das?
Re: Script bei systemstart laufen lassen
Hallo k3kz0r,
http://debianforum.de/forum/viewtopic.p ... l+skeleton
das sollte Dir weiterhelfen...
gruß heinz
http://debianforum.de/forum/viewtopic.p ... l+skeleton
das sollte Dir weiterhelfen...
gruß heinz
- 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
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
insserv 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.
insserv 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
insserv 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;
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:, 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 nicht vergessen.
Fertig![Cool 8)](./images/smilies/icon_cool.gif)
EDIT: kleine Fehlerchen korrigiert
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
![Debian](/pics/debianpackage.png)
![Debian](/pics/debianpackage.png)
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
![Debian](/pics/debianpackage.png)
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
# 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
Am Ende dem Script Ausführungsrechte geben und
Code: Alles auswählen
/etc/init.d# insserv
Fertig
![Cool 8)](./images/smilies/icon_cool.gif)
EDIT: kleine Fehlerchen korrigiert