Pierre schrieb
Beide Probleme kann man im Prinzip jetzt schon lösen: KDM etc. wird nicht gestartet, wenn man eine 3 an die Kernel-Parameter für Runlevel 3 angibt.
Korrekterweise aber nur, wenn der DM auch per inittab/runlevel gestartet wird und nicht
als Daemon.
Wobei du aber prinzipiell recht hast (und ich ja auch gesagt habe daß man ein adäquates
Verhalten auf anderen Wegen erreichen kann).
Nach etwas Überlegen sehe ich momentan keine Notwendigkeit und auch keine
Erfolgsaussicht, dieses "Feature" dauerhaft in die Initskripts zu kriegen. Es würde - zu
Recht 😉 mit einigen süffisanten Bemerkungen zu KISS - abgelehnt werde.
Viel besser ist es, so etwas als "The Arch way - du hast die Freiheit" zu machen.
Deshalb würde ich es so angehen:
a) Kein Rumgepfriemele in den Runlevel-Skripts (mit der "Gefahr" etwas überschrieben
zu bekommen
b) Den richtigen Linux-Weg gehen
Also:
a) Die angelegte Datei
/etc/rc.d/functions.d/askdaemons so lassen, diese wird auch
beim Update nicht angefaßt.
b) Die veränderte Datei /etc/rc.multi nach /etc/rc.multi_ask kopieren und die Änderungen
an der /etc/rc.multi wieder rückgängig machen.
c) Die /etc/rc.multi_ask wie folgt editieren
...
# Start daemons
+ askdaemons="yes"
for daemon in "${DAEMONS[@]}"; do
if [ "$daemon" = "${daemon#!}" ]; then
+ [ "$askdaemons" = "yes" ] && ask_daemon
if [ "$daemon" = "${daemon#@}" ]; then
/etc/rc.d/$daemon start
...
//Edit: Hier hatte sich ein Fehler eingeschlichen.
Also keine Abfrage nach Kernelparameter mehr, lediglich ask_daemon hier einfügen.
Das Plus-Zeichen nicht mit eingeben, dient hier nur zur Verdeutlichung das eine
Zeile eingefügt werden soll.
Jetzt die Datei /etc/inittab editieren und eine neue Runlevel-ID eingeben:
rc::sysinit:/etc/rc.sysinit
rs:S1:wait:/etc/rc.single
rm:345:wait:/etc/rc.multi
rma:2:wait:/etc/rc.multi_ask
rh:06:wait:/etc/rc.shutdown
su:S:wait:/sbin/sulogin -p
Also aus Id
rm den Runlevel 2 rausnehmen. Dafür einen neuen Id
rma anlegen,
der nur für Runlevel 2 gilt. Dieser startet dann statt rc.multi eben rc.multi_ask
Die /etc/inittab bleibt auch während der Updates erhalten.
Um jetzt also "gefragt" zu werden muß man im Bootloader lediglich 2 an die Kernel-Zeile
hängen um im Runlevel 2 zu starten.
Das ist IMHO der bessere Weg; machbar für denjenigen, der diese Funktionalität
nutzen will.
NB: Ich habe es noch nicht getestet, da ich momentan nicht rebooten kann.