init startlevel per bootloader kommandozeile definieren?

Software besorgen und anwenden
Antworten
Nachricht
Autor
torvalds

init startlevel per bootloader kommandozeile definieren?

#1 Beitrag von torvalds » 20. Nov 2006 2:02

hallo hobbyfrickler !
:D kleiner scherz...

wie aus dem topic hoffentlich schon zu entnehmen ist , suche ich eine möglichkeit ,
möglichst mit GRUB (9x) , über einen befehl den startlvl als parameter in der kommandozeile
einzugeben . also unabhängig von bestimmten einträgen , als allgemeiner kommandozeilenbefehl . habe leider in der GRUB dokumentation nichts passendes gefunden , aber ich kann mir irgendwie nicht vorstellen und akzeptieren , dass es soetwas elementar wichtiges wirklich nicht geben sollte - beim besten willen nicht . ich wäre auch offen für andere bootloader , die mehr möglichkeiten bieten , habe eigentlich immer mit grub gearbeitet und war größtenteils zufrieden , bis auf mit der offziellen doku :(
es sollten nach möglichkeit auch die skripte für die standardstartlvl über nummern (z.b. init=3) als parameter aufgerufen werden , damit man nicht den villeicht geänderten skriptpfad für ein runlvl wissen muss .
mal abgesehen dass ich eine initlvl definition durch den bootloader für wichtig halte ,
würde ich damit auch gerne in einen textmodus starten , damit ich ein kaputtes X11 system reparieren kann , ohne dass ich das über ein externenes system machen muss...

mfg

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#2 Beitrag von Janka » 20. Nov 2006 11:46

Ob GRUB oder LILO: Den Runlevel kannst du einstellen, indem du an die Kernel-Kommandozeile (hinten an kernel= dranhängen bei GRUB, bzw. append=... bei LILO) eine 3 etc. dranhängst.

Alles, was der Kernel nicht versteht, (z.B. die 3) wertet er nicht aus. Die Kommandozeile ist nach dem Laden des Kernels und mounten von /proc unter /proc/cmdline auslesbar. Dort gucken init (und wenn du willst auch deine eigenen Skripte) nach, ob sie etwas finden, was sie verstehen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

torvalds

#3 Beitrag von torvalds » 20. Nov 2006 15:54

danke für deine aufschlussreiche erklärung dazu :) , habe gestern noch durch zufall
das mit den initzahlen gesehen :roll: , aber jetzt ist es wenigstens klar , wie das abläuft - fast zumindest ;)
weisst du zufällig noch , was es für prioritäten bei den skriptstartfolge gibt bzw
in welchem format/verzeichnissen die stehen müssen/dürfen ?

mfg

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#4 Beitrag von Janka » 20. Nov 2006 18:43

SysV-Init (Linux-Standard) arbeitet beim Wechsel von einem Runlevel in den anderen (also beim Booten z.B. von 0 auf 3) /etc/init.d/rcX.d an, und schaut dort, welche Skripte ausgeführt werden sollen. Die Startskripte müssen Snn..., die Killskripte Knn... heißen. Sie werden einfach in der Reihenfolge der Zahlen nn ausgeführt.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

torvalds

#5 Beitrag von torvalds » 20. Nov 2006 22:49

joar , das mit dem runlvl und zugehörigem verzeichnis wusste ich ,
aber wie soll man das verstehen , die in der grub kommandozeile an den kernel übergebenen befehle werden dann geprüft , sobald runlvl 1 eintritt ? oder ist es möglich auch davor befehle/skripte verarbeiten zu lassen ?

mfg

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#6 Beitrag von Janka » 21. Nov 2006 0:46

Du kannst auf der Kernel-Kommandozeile keine Shellbefehle angeben, das ist ja schließlich keine Shell-Kommadozeile.

Bau dir ein eigenes Skript aus einer der Vorlagen in /etc/init.d/, in denen du /proc/cmdline auswertest, leg' das in /etc/init.d/ ab, verlinke es in /etc/init.d/rc3.d und /etc/init.d/rc5.d usw. passend. Schon wird es beim Hochfahren aufgerufen.

Wenn dein Skript ganz am Anfang von init aufgerufen werden soll, kannst du es auch in der /etc/inittab unter dem Label "si" ablegen. Allerdings ist dann nicht einmal /proc gemoutet, das musst du dann alles selbst machen.

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

torvalds

#7 Beitrag von torvalds » 22. Nov 2006 0:34

danke für die tips , mal sehen was sich da machen lässt :)

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#8 Beitrag von jochen » 26. Nov 2006 21:59

Detail am Rande: Gibt einfach mal ein

Code: Alles auswählen

cat /proc/cmdline
ein. Dort siehst Du die Parameter, die der Kernel beim Booten durch den Bootloader mitgegeben bekommen hat. Einige Distributionen mutzen diese Mittel, um eigene Boot-Optionen zu erstellen. Unter Gentoo bespielsweise kann man an der Bootzeile ein "gentoo=..." angeben, was einige Bootskripte dann parsen und darauf reagieren können. Das funktioniert, da der Kernel alle Argumente, die er nicht versteht, ignoriert. Daher auch die Möglichkeit, einen Runlevel am Bootprompt mit angeben zu können: Dem Kernel ist's egal, aber der init versteht's!

Jochen
Die grösste Lüge der EDV? "Mal eben..."

Benutzeravatar
Janka
Beiträge: 3585
Registriert: 11. Feb 2006 19:10

#9 Beitrag von Janka » 27. Nov 2006 8:25

Hm. Ich meinte, das hatte ich bereits geschrieben, Jochen. Partielle Blindheit? :wink:

Janka
Ich vertonne Spam immer in /dev/dsp statt /dev/null.
Ich mag die Schreie.

Benutzeravatar
jochen
prolinux-forum-admin
Beiträge: 699
Registriert: 14. Jan 2000 15:37
Wohnort: Jülich
Kontaktdaten:

#10 Beitrag von jochen » 27. Nov 2006 14:47

*blinzel* Au weh.. Dabei war ich erst vor kurzem beim Augenarzt! :roll: :oops:

Sorry,
Jochen
Die grösste Lüge der EDV? "Mal eben..."

Antworten