Fragen zu init

Hi,

ich hab folgende Fragen zum init Prozess:

1) Wenn ich per default in Runlevel 5 boote: Geht er dann durch 1, 2, 3, etc bis 5? Oder direkt in 5?

2) Was genau macht ein init 0? bzgl Frage 1: geht er dann 5, 4, 3....,0 oder direkt? Und was passiert _nachdem_ runlevel 0 erreicht wurde. Zuletzt wird ja /etc/init.d/halt aufgerufen, aber wenn ich das richtig sehe macht das Ding garnix ...


cu
serow
 
init 0 = halt -> Herunterfahren
init 1 = für gewöhnlich single console root-login
init 2 bis 5 = völlig von einander unabhängige Runlevel, die du dir nach Belieben mit diversen Tools oder per Hand anpassen kannst
init 6 = reboot -> Neustarten

technischer Hintergrund: du hast im /etc ein paar Verzeichnisse rc0.d bis rc6.d - hier wird festgelegt, was beim Start dieses Runlevels passiert. es liegen hier Symlinks zu Start-Stop-Scripten.
Symlinks, die mit einem S beginnen, bedeuten das, dass dies ein START-Prozess ist / Symlinks mit einem K vorne dran bedeuten KILL-Prozess (also beenden)
die Zahlen hinter den S oder K legen die Reihenfolge fest.

einfaches editieren, ohne direkt selbst in den Symlinks rumzufummeln: z.B. sysv-rc-conf
 
Tut mir leid, aber irgendwie verstehe ich die Logik Deiner Fragen nicht. Ich meine mal, wenn man bzgl. Runlevels ein wenig logisches Verständnis hat und mal Google benutzt und sich ein wenig durchliest dann beantwortet man sich leicht selber die Fragen:

http://books.google.de/books?id=EyA...=X&oi=book_result&resnum=1&ct=result#PPA58,M1

http://r-goetz.de/linux/bg/runlevels.html

Bzgl. der Logik, wozu gibt es Runlevel bei Linux, wenn alle Runlevel durchlaufen werden ?? Da ist der Sinn von Runlevels wohl Sinnfrei, aber das sollte Dir wohl logisch erscheinen.

Durch Runlevel steuerst Du den start/stop einer oder mehrerer Dienste:

Nun ein Runlevel ist nun eine Zusammenstellung von Diensten, ähnlich verschiedener Sets im MacOS-Kontrollfeld Erweiterungen ein/aus (aber das hatte wir ja schon). Wenn der Runlevel gewechselt wird, werden alle (d.h. alle bei denen es darauf ankommt) Dienste des alten Runlevels angehalten. Dazu werden die entsprechenden Initskript mit dem Parameter stop aufgerufen. Danach werden alle Dienste des neuen Runlevels gestartet, indem die passenden Init-Skripte mit start aufgerufen werden

Grüße

Zephyros
 
1) Meines Wissens werden bei einem Wechsel von Runlevel A nach B alle Dienste gestoppt, die in A vorhanden sind aber nicht in B und alle Dienste gestartet, die in B vorhanden sind, aber nicht in A.
Es werden also nicht inkrementell alle Runlevel dazwischen durchlaufen (wozu sollte das auch gut sein?), sondern direkt dazwischen gesprungen.
Allerdings sind die Runlevel in den meisten mir bekannten Distributionen sowieso nicht so wirklich ausgenutzt. Normal läuft eigentlich immer Runlevel 5 und sonst höchstens noch mal Runlevel 3 ohne X11.

2) Die Runlevel 0,1 und 6 haben feste Funktionen -> 0 erzeugt immer einen Shutdown, 6 einen Neustart und 1 geht in den Singleuser-Modus. Dafür müssen keine extra init.d-Skripte definiert werden, das macht (zumindest) SysVinit automatisch. Auf meinem System sind aber trotzdem noch Hilfsskripte vorhanden, die vor Runlevel 0/6 erst alle Medien unmounten und Swap entfernen, und so Zeugs.

mfg, metax.
 
Original von metax.
1) Meines Wissens werden bei einem Wechsel von Runlevel A nach B alle Dienste gestoppt, die in A vorhanden sind aber nicht in B und alle Dienste gestartet, die in B vorhanden sind, aber nicht in A.

Im Hot Swap - Verfahren ja. Bei Default nicht. Zumindest ist mir das so bekannt.

Original von metax.
Es werden also nicht inkrementell alle Runlevel dazwischen durchlaufen (wozu sollte das auch gut sein?), sondern direkt dazwischen gesprungen.

Mein reden ;)

Grüße

Zephyros
 
Original von Serow
Jo - danke. Aber du hast keine einzige Fragen beantwortet.

wer lesen kann, ist klar im Vorteil

Original von Serow
1) Wenn ich per default in Runlevel 5 boote: Geht er dann durch 1, 2, 3, etc bis 5? Oder direkt in 5?

Original von beavisbee
init 2 bis 5 = völlig von einander unabhängige Runlevel, die du dir nach Belieben mit diversen Tools oder per Hand anpassen kannst

soll heißen, es wird nur der Runlevel durchlaufen, der gestartet wird.


Original von Serow
2) Was genau macht ein init 0?

Original von beavisbee
init 0 = halt -> Herunterfahren
[...]




Original von metax.
Normal läuft eigentlich immer Runlevel 5 und sonst höchstens noch mal Runlevel 3 ohne X11.

DAS ist von Distribution zu Distribution verschieden. In Debian z.B. ist Standard-Runlevel 2 und die Runlevel 2 bis 5 sind identisch, solange sie nicht vom Nutzer manuell angepasst wurden.
Also Vorsicht beim Verallgemeinern solcher Aussagen.... ;-)
 
Das init-System macht noch einiges mehr aus als die Start/Stop-Skripte innerhalb der Runlevel auszuführen. Essentiellster Teil des Init-Systems ist immernoch der Kernel. Dieser führt z.B. bei bestimmten Runleveln auch noch Aktionen durch (z.B. das deaktivieren des Kernel-Log-Daemons beim Runterfahren, das Ausschalten des Systems selbst, das Starten des init-Systems selbst, das starten virtueller Konsolen usw.), die nicht durch Skripte steuerbar sind, da sie zum Zeitpunkt der Aktion nicht mehr ausführbar wären, weil keine Runtime-Umgebung mehr zur Verfügung steht. Das ist u.a. auch der Grund, dass bestimmte Runlevel immer durchlaufen werden.

So wird beim Starten immer erst init 1 angesprochen und Runlevel 1 wird verlassen, wenn ein anderes Runlevel angefordert wird vom Kernel. Runlevel 1 ist aber notwendig um ggf. Dateisystemchecks beim Booten machen zu können, da in Runlevel >=2 die Partitionen schon readwrite gemountet sind, virtuelle Konsolen bereits bestehen usw.

Runlevel steuern also wesentlich mehr als das Starten/Stoppen von Diensten. Sie als reines Laufzeitsystem unabhängig vom Kernel-Kontext zu betrachten ist daher eine ziemlich fragwürdige Sache.
 
Tut mir leid, aber irgendwie verstehe ich die Logik Deiner Fragen nicht. Ich meine mal, wenn man bzgl. Runlevels ein wenig logisches Verständnis hat
Also für mich erschließt sich aus Logik nicht unbedingt, dass nicht die Runlevel 2-4 durchlaufen werden auf dem Weg von 1 nach 5. Evtl bin ich auch einfach nur überdurchschnittlich blöd - wer weiss.

QUOTE]Bzgl. der Logik, wozu gibt es Runlevel bei Linux, wenn alle Runlevel durchlaufen werden ?? Da ist der Sinn von Runlevels wohl Sinnfrei, aber das sollte Dir wohl logisch erscheinen.[/QUOTE]
So logisch fang ich das garnicht.

Im Hot Swap - Verfahren ja. Bei Default nicht. Zumindest ist mir das so bekannt.
Wo lässt sich das "Hot Swap Verfahren" konfigurieren. Das hab ich noch nie gehört / gelesen.

wer lesen kann, ist klar im Vorteil
1) Wenn ich per default in Runlevel 5 boote: Geht er dann durch 1, 2, 3, etc bis 5? Oder direkt in 5?
nit 2 bis 5 = völlig von einander unabhängige Runlevel, die du dir nach Belieben mit diversen Tools oder per Hand anpassen kannst
soll heißen, es wird nur der Runlevel durchlaufen, der gestartet wird.
Solls vllt heissen - steht aber so nicht da. Finde auch jetzt nach nochmaligem lesen nicht, dass man das hätte rauslesen müssen.


Und was passiert _nachdem_ runlevel 0 erreicht wurde. Zuletzt wird ja /etc/init.d/halt aufgerufen, aber wenn ich das richtig sehe macht das Ding
Ich wollte darauf hinaus was NACH dem /etc/init.d/halt passiert. Ich hab allerdings scheinbar den letzten Befehl übersehn bevor sich mir die Frage gestellt hat:
Code:
do_stop () {
        if [ "$INIT_HALT" = "" ]
        then
                case "$HALT" in
                  [Pp]*)
                        INIT_HALT=POWEROFF
                        ;;
                  [Hh]*)
                        INIT_HALT=HALT
                        ;;
                  *)
                        INIT_HALT=POWEROFF
                        ;;
                esac
        fi

        # See if we need to cut the power.
        if [ "$INIT_HALT" = "POWEROFF" ] && [ -x /etc/init.d/ups-monitor ]
        then
                /etc/init.d/ups-monitor poweroff
        fi

        # Don't shut down drives if we're using RAID.
        hddown="-h"
        if grep -qs '^md.*active' /proc/mdstat
        then
                hddown=""
        fi

        # If INIT_HALT=HALT don't poweroff.
        poweroff="-p"
        if [ "$INIT_HALT" = "HALT" ]
        then
                poweroff=""
        fi

        # Make it possible to not shut down network interfaces,
        # needed to use wake-on-lan
        netdown="-i"
        if [ "$NETDOWN" = "no" ]; then
                netdown=""
        fi

        log_action_msg "Will now halt"
        [B]halt -d -f $netdown $poweroff $hddown[/B]
}
 
Zurück
Oben