Netconsole mit der Dockstar

Und ich habe wieder was praktisches für die Dockstar. Beim Einrichten hab ich mich schon gefragt, wie man eine Konsole bekommt, falls der Kernel oder UBoot irgendwas zu meckern haben und nicht starten. Praktischerweise hat Jeff Doozan erklärt, wie man das mit netconsole macht. Ich habe das erfolgreich für uBoot probiert und davon inspiriert das ganze versucht auf die Kernel-Messages auszuweiten.

Falls euer System gar nicht mehr bootet, müsst ihr vermutlich den Stick/die Platte abstöpseln und in das originale Pogoplug-Linux booten. Dann kann man mit dem Programm fw_setenv (aus uboot-envtools) netconsole installieren. Hier sind die Debian-binaries dazu:

fw_setenv

fw_printenv

In Jeffs Forum wird kurz genannt, was damit gemacht wird. Zunächst könnt ihr euch mal das uBoot-Environment mit fw_printenv anzeigen lassen. Danach setzt man folgende Variablen

fw_setenv serverip 192.168.1.2
# das ist die ip, zu der die Konsolenausgabe gesendet wird
fw_setenv ipaddr 192.168.1.100
# das ist die ip, die die dockstar temporär zum versenden annimmt
fw_setenv if_netconsole 'ping $serverip'
fw_setenv start_netconsole 'setenv ncip $serverip; setenv bootdelay 10;\
    setenv stdin nc; setenv stdout nc; setenv stderr nc; version;'
fw_setenv preboot 'run if_netconsole start_netconsole'

Um Kernel-Meldungen zu sehen, gibts hier eine Doku zur Linux Kernel Netconsole. Ein Weg das zu erreichen ist im Debian-Dateisystem (müsst ihr vermutlich umstöpseln) folgende 2 Einstellungen vorzunehmen (als root):

#!/bin/sh
N_PORT="6667"
N_SIP="192.168.1.100"
# quell-adresse der dockstar
N_DIP="192.168.1.2"
# adresse des Ziels
N_DMAC="00:11:22:22:11:00"
# mac-adresse vom Zielrechner
echo "netconsole" >> /etc/modules
echo "options netconsole netconsole=${N_PORT}@${N_SIP}/eth0,\
    ${N_PORT}@${N_DIP}/${N_DMAC}" >> /etc/modprobe.d/netconsole.conf

Standardmässig wird das zu den Ports 6666 und 6667 geschickt, auf dem Client muss man jetzt also nur die Lauscher aufsprerren, zB mit netcat. Weiter unten im genannten Thread hat Johanes darauf hingwiesen, dass socat sogar noch praktischer ist, als das Doppel-Gestarte mit dem klassischen Netcat.

Auf der Client-Seite muss man dann also nur:

socat STDIO UDP-LISTEN:6666

und, falls man uBoot- und Kernel-Output braucht, ggf noch ein:

socat STDIO UDP-LISTEN:6667

Written by Michael in linux on Mon 06 December 2010. Tags: dockstar,

Comments

comments powered by Disqus