Debug Level für Diskless X-Stations¶
Es können verschiedene Debug-Level für den Ablauf des Initialramfs/Stage3 definiert werden. Eine Möglichkeit ist die Übergabe per Kernel-Commandline. Hier sorgt ein einfaches debug oder debug=N (N=0,1,2,...) für unterschiedlich umfangreichen Debugging Output. debug ohne weitere Angabe entspricht dabei Debug-Level 1.
Generell werden die Kernelausgaben (im SLX-Init) auf die zehnte Konsole umgelenkt, um nicht die Standard-Konsole für die Benutzerinteraktion vollzumüllen ...
Die Debug-Level (Variable $DEBUGLEVEL, wird per Kernel Commandline mit 'debug=N' übergeben, eingestellt im Skript init in der Initial Ramdisk) sollten folgende Bedeutung haben:
- debug=0 - kein Debug-Output wird generiert. Nur fatale Fehler in des Initialramfs werden ausgegeben. Aller normaler Debug- oder Info-Output wird nach /dev/null geschrieben. Alle _modprobe_s werden mit der Option '-q' aufgerufen und der Kernel mit echo "0 0 0 0" >/proc/sys/kernel/printk zum Schweigen gebracht.
- debug=1 oder debug - einfacher Output. Nur fatale Fehler in der Initial Ramdisk werden ausgegeben, alle nicht-fatalen Fehler landen im Logfile (variable $LOGFILE definiert im Skript init im Initialramfs - voreingestellt: /var/log/dxs-boot.log).
- debug=2 - erweiterter Output. Fatale und nichtfatale Fehler werden direkt ausgegeben bzw. nichtfatale landen auch im Logfile. Alle modprobe werden mit der Option '-v' aufgerufen. Normaler Kernel-Debug-Level.
- debug=3 - erweiterter Output wie bei Level 2. Am Ende des init im InitRamFS wird zum Ende eine Shell gestartet. Parallel dazu wird eine Debug-Shell auf tty2 in einem sehr frühen Stadium aktiviert.
- debug=4 - wie Level 3, nur dass ab Verfügbarkeit des Netzwerks ein "dropbear" SSH-Server gestartet wird.
- debug=5 - umfangreicher Output. Die Sachen von Level 2 und set -x in der Shell. Der Kernel-Output wird mit echo "7 7 7 7" >/proc/sys/kernel/printk ausführlich. Nach jeder nicht fatalen Fehlermeldung wird kurz gewartet.
- debug=8 - Runtimer - wie lange braucht jedes Skript im Stage3/Initramfs. Es werden jeweils die Start- und Stop-Zeiten, sowie die Zeiten der wichtigsten Events ausgegeben. Bezogen wird alles auf /proc/uptime, also den Moment, wo der Kernel seine Arbeit aufnimmt.
- debug=10 - Output wie bei Level 3, aber umfangreicher Output für init
- debug=11 - Output wie bei Level 3, aber umfangreicher Output für hwautocfg
- debug=12 - Output wie bei Level 3, aber umfangreicher Output für servconfig
- debug=13 - Output wie bei Level 3, aber umfangreicher Output für dhcpmkconfig
- debug=15 - Output wie bei Level 3, aber umfangreicher Output für die einzelnen Plugin-Skripte
- debug=20 - Output wie bei Level 3, aber spezielle schrittweise Zeitausgabe für init
- debug=21 - Output wie bei Level 3, aber Stop in init direkt vor hwautocfg (um es manuell starten und beobachten zu können)
- debug=22 - Output wie bei Level 3, aber Stop in init direkt vor servconfig (um es manuell starten und beobachten zu können)
- debug=25 - Output wie bei Level 3, aber Stop in init direkt vor dem Plugin-Loader
- debug=26 - Output wie bei Level 3, aber Start eines Busybox-Gettys auf Konsole 10 (noch nicht implementiert, siehe #186)
Das Debugging bezieht sich dabei nicht auf die Einstellungen der jeweils gewählten Distribution. Diese muss anders gehandhabt werden.