init startlevel per bootloader kommandozeile definieren?

Software besorgen und anwenden
Post Reply
Message
Author
torvalds

init startlevel per bootloader kommandozeile definieren?

#1 Post by torvalds »

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#2 Post by Janka »

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 Post by torvalds »

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#4 Post by Janka »

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 Post by torvalds »

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

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#6 Post by Janka »

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 Post by torvalds »

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

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#8 Post by jochen »

Detail am Rande: Gibt einfach mal ein

Code: Select all

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..."

User avatar
Janka
Posts: 3585
Joined: 11. Feb 2006 19:10

#9 Post by Janka »

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.

User avatar
jochen
prolinux-forum-admin
Posts: 699
Joined: 14. Jan 2000 15:37
Location: Jülich
Contact:

#10 Post by jochen »

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

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

Post Reply