Unterschied Runlevel 1 und S

Warum Debian und/oder eine seiner Spielarten? Was muss ich vorher wissen? Wo geht es nach der Installation weiter?
Antworten
inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Unterschied Runlevel 1 und S

Beitrag von inne » 22.11.2013 13:51:02

Hallo,

was ist der Unterschied zwischen Runlevel 1 und S bei Debian. Laut meiner Lektüre sollte es keinen geben. Aber wenn ich (als Root) ins Runlevel S wechsle läuft mein Benutzerkonto und die Netzwerkverbindungen etc. noch. Im Runlevel 1 nicht.

Ich habe das auch von S erwartet.

Benutzeravatar
smutbert
Beiträge: 8350
Registriert: 24.07.2011 13:27:39
Wohnort: Graz

Re: Unterschied Runlevel 1 und S

Beitrag von smutbert » 22.11.2013 14:14:28

Ja, da gibt es Unterschiede

Code: Alles auswählen

$ ls /etc/rc1.d/
K01bluetooth  K01mpd         K02pulseaudio       K05rsyslog    S01motd
K01cups       K01saned       K03avahi-daemon     README        S05bootlogs
K01gdm3       K02alsa-utils  K03network-manager  S01killprocs  S06single
$ ls /etc/rcS.d/
README               S05hdparm                  S10mountall-bootclean.sh  S16console-setup
S01hostname.sh       S05hwclock.sh              S11procps                 S17alsa-utils
S01mountkernfs.sh    S06checkroot.sh            S11urandom                S17bootmisc.sh
S02udev              S07checkfs.sh              S12networking             S17lm-sensors
S03keyboard-setup    S08checkroot-bootclean.sh  S13mountnfs.sh            S17x11-common
S04mountdevsubfs.sh  S08kmod                    S14mountnfs-bootclean.sh
S04qemu-kvm          S09mountall.sh             S15kbd
Beim Wechsel in Runlevel S werden überhaupt keine Dienste beendet, aber viele gestartet. Es fehlen offensichtlich nur der Displaymanager (gdm/kdm/…) und Netzwerkdienste wie ssh (auch die beiden werden aber nicht beendet, wenn sie schon laufen).

Runlevel 1 dagegen beendet die meisten Dienste.

Dazu empfiehlt sich die Lektüre von /usr/share/doc/sysv-rc/README.runlevels.gz. Dort steht, dass es nicht so gedacht ist, dass man direkt in den Runlevel S wechselt, dazu ist Runlevel 1 da:
[…]
N System bootup (NONE).
S Single user mode (not to be switched to directly)
0 halt
1 single user mode
2 .. 5 multi user mode
6 reboot
[…]

4. Single user mode.

Switching to single user mode is done by switching to runlevel 1.
That will cause all services to be stopped (assuming they all have
a K script in /etc/rc1.d). The runlevel 1 scripts will then switch
to runlevel "S" which has no scripts - all it does is spawn
a shell directly on /dev/console for maintenance.
[…]
Zuletzt geändert von smutbert am 22.11.2013 14:17:10, insgesamt 1-mal geändert.

cronoik
Beiträge: 2049
Registriert: 18.03.2012 21:13:42
Lizenz eigener Beiträge: GNU Free Documentation License

Re: Unterschied Runlevel 1 und S

Beitrag von cronoik » 22.11.2013 14:16:08

Ich habe auch gerade mal nachgeschaut, bei mir steht das auch in einem Buch. Laut Wikipedia ist das wohl eine Debian Besonderheit, das es Unterschiede gibt. Wenn du in /etc/rcX.d dir die Sachen anschaust, wird Wikipedia auch bestätigt.
Hilf mit unser Wiki zu verbessern!

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Unterschied Runlevel 1 und S

Beitrag von inne » 22.11.2013 15:17:56

Gut, ich habe das nun auch nochmal gefunden:
http://www.debian.org/doc/manuals/debian-reference/ch03.en.html hat geschrieben: S /etc/rcS.d/ single-user mode on boot (alias: "s")
1 /etc/rc1.d/ single-user mode switched from multi-user mode
Wobei S und 1 direkt in 2 weiter geht.

Wenn ich nun im Runlevel 1 ein zweites (Root) Terminal brauche, kann ich dazu /etc/inittab erweitern?
Wie wirds richtig gemacht.

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Unterschied Runlevel 1 und S

Beitrag von inne » 26.11.2013 21:05:12

Ich pusche das mal einmal. Da ich hierzu keine Antwort finde:
inne hat geschrieben:Wenn ich nun im Runlevel 1 ein zweites (Root) Terminal brauche, kann ich dazu /etc/inittab erweitern?
Wie wirds richtig gemacht.
Ist das möglich, denn ich finde hierfür keine Möglichkeit?

gxyz
Beiträge: 202
Registriert: 26.07.2010 13:54:21
Lizenz eigener Beiträge: MIT Lizenz

Re: Unterschied Runlevel 1 und S

Beitrag von gxyz » 27.11.2013 11:22:21

... es ist möglich, allerdings i.A. wahrscheinlich unnötig, denn Du kanst auch ohne /etc/initab zu ändern jederzeit mit "openvt -s /bin/sh" auf der nächsten freien virtuellen Konsole eine Shell starten und dorthin wechseln (wobei es vielleicht noch etwas genereller anwendbar und flexibler wäre, Du schaust Dir 'mal "screen" an)

inne
Beiträge: 3293
Registriert: 29.06.2013 17:32:10
Lizenz eigener Beiträge: GNU General Public License
Kontaktdaten:

Re: Unterschied Runlevel 1 und S

Beitrag von inne » 27.11.2013 20:35:54

gxyz hat geschrieben:... es ist möglich
Und wie genau? Die inittab bei Debian schaut so aus:

Code: Alles auswählen

1:2345:respawn:/sbin/getty 38400 tty1
2:23:respawn:/sbin/getty 38400 tty2
...
Ansonsten funktioniert es mit openvt - Danke.
Inne

gxyz
Beiträge: 202
Registriert: 26.07.2010 13:54:21
Lizenz eigener Beiträge: MIT Lizenz

Re: Unterschied Runlevel 1 und S

Beitrag von gxyz » 28.11.2013 16:40:50

inne hat geschrieben:Und wie genau?
Weil es dabei leicht passiert, irgend etwas durcheinanderzubringen und solche Hacks bei jedem Upgrade besondere Vorsicht erfordern, würde ich davon stark abraten, wenn's nicht unbedingt sein muss.

Das gesagt, hier eine (recht krude) Lösungsskizze::

In /sbin/singleuser.sh folgendes Script:

Code: Alles auswählen

#!/bin/sh
# 3 virtuelle Konsolen im Single-User-Mode
/usr/bin/openvt -c 2 -- /bin/bash -l &
/usr/bin/openvt -c 3 -- /bin/bash -l &
/bin/bash -l
killall -HUP /bin/bash
und in /etc/inittab den Default-Eintrag für den Single-User-Mode ersetzen:

Code: Alles auswählen

# ~~:S:wait:/sbin/sulogin
~~:S:wait:/sbin/singleuser.sh
Wenn Du dann in der ersten virtuellen Konsole "telinit 1" eingibst, wird das Script ausgeführt,
so dass Du (ohne Passwortabfrage) auf den ersten 3 virtuellen Konsolen Shells laufen hast.
Wenn Du die Shell in VC1 beendest, werden als Aufräumarbeit sämtliche laufenden bash-Prozesse beendet (im wirklichen Leben sollte man natürlich feinsinniger vorgehen, aber um keine Probleme zu verursachen ist es wichtig, dass alle Prozesse, die an den virtuellen Konsolen kleben auch wieder beendet werden) und das System landet wieder im Default-Runlevel.

uname
Beiträge: 12474
Registriert: 03.06.2008 09:33:02

Re: Unterschied Runlevel 1 und S

Beitrag von uname » 28.11.2013 16:45:24

Du schaust Dir 'mal "screen" an
Wer sich Debianscreen oder Debiantmux anschaut kann die übrigen Empfehlung für "openvt" getrost vergessen. Ich würde immer noch behaupten, dass Screen der wichtigste Linux/UNIX-Befehl überhaupt ist.

Antworten