Installation von Debian 12 (Bookworm) auf Soekris-Rechner per RS232

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche

Einleitung

Der Rechner Soekris net6501 ist im Kern ein 32-Bit-System mit 4 schnellen Ethernet-Schnittstellen (1Gbit/s), zwei SATA- und zwei mSATA-Schnittstellen. Er wurde vielerorts als pfsense- oder OPNSense-Firewall betrieben. Mit seinen zwei SATA-Schnittstellen eignet er sich aber auch als stromsparendes und trozdem schnelles Mini-NAS. In dem Fall installiert man Debian am besten auf eine mSATA-SSD (gibt es gebraucht für unter 10€) und steckt die Datenplatten (z.B. im RAID1-Verbund) an die SATA-Ports.

Die letzte OPNSense-Version für das Gerät stammt von 2019. Viele Soekris-Kisten wanderten danach wohl in den Müll. Unter Debian Bookworm läuft der Soekris weiterhin problemlos - und das zumindest noch eine Weile: Dank LTS bis zum 30. Juni 2028 mit ELTS sogar bis Sommer 2033!

Inenleben eines Soekris net6501-70

Achtung: Das im August 2025 erschienene "Trixie" (Version 13) unterstützt keine 32-Bit-Architekturen mehr. Ein Ugrade auf Trixie ist somit nicht drin.

Den Soekris net6501 gab es in mehreren Varianten. Ich verwende hier das dickste Modell mit der Endung "-70". Mit allen anderen Modellen sollte es ebenso funktionieren.

Den Soekris net6501 nenne ich im folgenden einfach nur Soekris. Die Debian-Installation erfolgt mit Hilfe eines weiteren Rechners, den ich Arbeitsrechner nenne. Es handelt sich in meinem Fall um ein Linux-Mint-Laptop, es kann aber ein beliebiger Linux-Rechner sein. Nur befindet sich dann vielleicht die ein oder andere Konfigurationsdatei an anderer Stelle. Alle Debian-Derivate (Mint, Ubuntu) sollten sich für diese Anleitung in etwa gleich verhalten. Bei Verwendung eines nicht-Debian-Linux (Red Hat, CentOS, Suse, ...) sind die Installations-Befehle anzupassen, ggf. auch die ein oder andere Konfiguration.

Als Festplatte verwende ich im Soekris eine alte SSD von 120GB, angeschlossen an den SATA-Port J1. Ich habe die SSD vor dem Einbau komplett mit Nullen überschrieben, was aber nicht unbedingt nötig ist. Dazu die Festplatte an den Arbeitsrechner klemmen (direkt oder über einen USB-SATA-Adapter), das Block-Gerät ermitteln (z.B mit dmesg) und den Lösch- Vorgang starten:

sudo dd if=/dev/zero of=/dev/sdx status=progress bs=1M oflag=direct

Dabei ist dev/sdx entsprechend anzupassen - besser zwei Mal kontrollieren um nicht am Ende die Boot-Platte des Arbeitsrechners zu löschen!

Serielle Verbindung

Die Verbindung zum Soekris erfolgt über die serielle Schnittstelle. Ich verwende dazu einen seriellen USB-Adapter und ein DB9-Kabel "weiblich/weiblich"

Softwareseitig kommt gtkterm zum Einsatz:

gtkterm -s115200 -p /dev/ttyUSB0

Erscheint beim Booten nur ASCII-Schrott, so ist zunächst die Bitrate für gtkterm anzupassen, wozu ev. ein paar Versuche notwendig sind. Dann beim Booten mit CTRL-P ins "BIOS" wechseln (der Soekris tut dies automatisch wenn kein bootbares Medium vorhanden ist). Läuft der Soekris mit einer niedrigeren Bitrate als 115200, so ist jetzt die Gelegenheit, sie anzupassen - die Arbeit wird anschließend um einiges angenehmer sein:

Set ConSpeed=115200
reboot

Danach gtkterm beenden und mit der hohen Bitrate (Parameter -s115200) neu starten.

Firmware Update

Die installierte Firmware-Version erscheint beim Booten.

Bootvorgang

Die letzte Soekris-Firmware ist auf den Soekris-Seiten erhältlich. Auf meinem Soekris läuft "comBIOS ver. 1.41a", die neueste (Stand August 2025) ist 1.41c. Das Download kann im Browser oder direkt in der Shell erfolgen:

wget --no-check-certificate https://soekris.dk/media/software/b6501_141c.bin

Das Update wird per XMODEM-Protokoll übertragen. Das entsprechende Paket ist auf dem Arbeitsrechner zu installieren:

sudo apt-get install lrzsz

Vorgehensweise zum Update der Firmware:

  • Soekris booten und mit CTRL-P in den BIOS-Monitor gelangen
  • Eingabe von
    download
  • gtkterm schliessen
  • Aufruf von
    sz -X <BiosDatei.bin> < /dev/ttyUSB0 > /dev/ttyUSB0
    auf dem Arbeitsrechner
  • gtkterm nach dem Durchlauf von sz erneut öffnen, dann
    flashupdate
    reboot
Neue Firmware vom Arbeitsrechner an den Soekris schicken
Soekris startet mit neuer Firmware nach Flash-Update

BIOS-Einstellungen

Ausser der Bitrate der seriellen Schnittstelle gibt noch folgende Einstellungen zu überprüfen:

  • PXEBoot - auf "Enabled" setzen
  • BootPartition - auf "Disabled" setzen
  • BootDrive - hier muss 80 zum Booten von der SATA-Festplatte ganz vorne in der Liste stehen. Bei Verwendung einer mSATA-SSD wäre es f1, so habe ich irgendwo gelesen. Die Soekris-Dokumentation gibt leider keine Auskunft.

Meine Einstellungen sind auf folgendem Bildschirmfoto zu sehen:

Soekris-BIOS-Einstellungen

Netzwerk-Verbindung

Der Router wird am einfachsten an den Switch des lokalen Netzwerks angeschlossen. Am Router ist die mit Eth0 bezeichnete Buchse zu verwenden.

Der Soekris benötigt einen DHCP-Server zur Konfiguration seines Netzwerks und einen TFTP-Server der die Boot-Dateien bereit stellt.

DHCP-Dienst

Welches Gerät DHCP-Server spielt ist an sich egal. Nur muss eben am Ende

  • eine funktionierende Internetverbindung bestehen und
  • der Soekris muss wissen, von wo er seine Boot-Datei bezieht (next-server).

Im folgenden wird gezeigt, wie man den DHCP-Dienst über den Arbeitsrechner zur Verfügung stellen kann. Ebenso gut könnte man ein anderes Gerät dafür nutzen, z.B. den Heimrouter, falls der die benötigten Funktionen zur Verfügung stellt. Die Verwendung des Arbeitsrechners hat den Vorteil, dass man die DHCP-Anfragen des Soekris einfach in den Log-Dateien verfolgen kann, was beim Debugging von Vorteil ist.

Es ist natürlich darauf zu achten, dass nie zwei DHCP-Server gleichzeitig im Netz aktiv sind (Arbeitsrecher und Heim-Router). Ggf. einen schon vorhandenen DHCP-Server bis zum Ende der Soekris-Installation stoppen.

Falls der Arbeitsrechner DHCP-Server spielen soll:

sudo apt install isc-dhcp-server

In der Datei /etc/dhcp/dhcpd.conf stelle ich die Lease-Zeit auf einen Tag (um unnötige Nachfragen zu vermeiden):

default-lease-time 86400;
max-lease-time 86400;

Am Ende der gleichen Datei ist folgende Konfiguration anzufügen:

subnet 192.168.0.0 netmask 255.255.0.0 {
  range 192.168.2.200 192.168.2.230;
  option subnet-mask 255.255.0.0;
  option broadcast-address 192.168.255.255;
  option routers 192.168.178.1;
  option domain-name-servers 192.168.178.2;
  next-server 192.168.2.6;
  filename "pxelinux.0";

}

group {
  next-server 192.168.2.6;                # mein Arbeitsrechner
  host tftpclient {
      filename "pxelinux.0";
  }
}

Anpassungen:

  • subnet-Block: Alle Parameter an das lokale Netz anpassen. Achtung bei der Netmask: Ein /16-Netz wie hier im Beispiel ist eher unüblich, Anpassung nicht vergessen! Der range-Bereich gibt den Bereich an, aus dem dem Soekris eine IP-Adresse zugewiesen wird.
Unter "option routers" ist der Default-Gateway (Internet-Router) anzugeben. Der DNS-Server (option domain-name-servers) läuft in vielen lokalen Netzen auf der gleichen Adresse wie der Default-Gateway. Es kann aber auch einer der bekannten, großen Dienste konfiguriert werden (beispielsweise 1.1.1.1).
  • group-Block: Als "next-server" ist die Adresse des Arbeitsrechners anzugeben.

DHCP-Dienst neu starten:

sudo systemctl restart isc-dhcp-server

Zur Verifikation der Funktionsweise bietet es sich an, ein separates Terminal-Fenster zu öffnen und dort die eintreffenden DHCP-Anfragen im Auge zu behalten:

tail -f /var/log/syslog | grep DHCP

Dort ist natürlich erst etwas zu sehen, wenn der Soekris über's Netzwerk startet (weiter unten).

TFTP-Dienst

Der TFTP-Dienst ist der im vorherigen Abschnitt erwähnte "next-server". Er stellt die Dateien zur Verfügung, mit denen der Soekris GRUB bootet und anschließend die Debian-Installation startet.

Installation:

sudo apt install tftpd-hpa

Es werden keine weiteren Anpassungen benötigt. Der Dienst stellt unter Debian standardmäßig die Dateien im Verzeichnis /srv/tftp/ zur Verfügung (siehe /etc/default/tftpd-hpa). Zum einfacheren Arbeiten wird das Verzeichnis für jedermann zugänglich gemacht:

cd /srv
sudo chmod 777 tftp

Leider habe ich keine Möglichkeit gefunden, den tftp-Server zum Loggen eingehender Anfragen zu bewegen. Zur Darstellung greife ich deshalb auf ein einfaches Montoring der Ethernet-Schnittstelle zurück - am besten in einem weiteren Terminal-Fenster:

sudo apt install tcpdump
sudo tcpdump port 69 -v | grep "   "

Auch hier gibt's erst etwas zu sehen, wenn der Soekris später sein PXE-Boot startet.

Boot-Dateien

Zum Booten der Debian-Installation werden nur wenige Dateien benötigt. Man findet sie in der Datei netboot.tar.gz der verschiedenen Debian-Versionen. Runterladen und Entpacken der Dateien für Debian 12 Bookworm:

cd /srv/tftp
wget https://deb.debian.org/debian/dists/bookworm/main/installer-i386/current/images/netboot/netboot.tar.gz
tar xvzf netboot.tar.gz    # utime- und mode-Fehler ignorieren
rm -rf netboot.tar.gz

Falls eine ältere Debian-Version installiert werden soll oder wenn Bookworm in einigen Jahren zu einer alten Version geworden ist, so ist deb.debian.org in der URL ggf. durch archive.debian.org zu ersetzen.

In den heruntergeladenen Dateien ist die Konfiguration so abzuändern, dass Bildschirm und Tastatur auf die serielle Schnittstelle umgeleitet werden.

  • Umstellung des GRUB-Bootloaders auf die serielle Schnittstelle:
    echo "serial 0 115200" > x
    echo "console 0" >> x
    cat debian-installer/i386/boot-screens/syslinux.cfg >> x
    mv x debian-installer/i386/boot-screens/syslinux.cfg
  • Umstellung aller GRUB-Menü-Einträge zum Booten des Linux-Kernels:
     grep -l quiet -r | grep "\.cfg$" | parallel 'sed -i "s/quiet/console=ttyS0,115200n8/g" {}'

Booten per PXE

Nun sollte alles bereit stehen, um die Installation zu starten. Hier die einzelnen Schritte.

  • Soekris neu starten (reset) und CTRL-P drücken.
  • Zum Booten über Netzwerk
    boot f0
    eingeben.
Start der Debian-Installation
  • Daraufhin lässt sich am Arbeitsrechner die DHCP-Anfrage des Soekris beobachten:
07a WorkerDHCP.png
  • Beim TFTP-Dienst laufen Dateianfragen ein:
07b WorkerTFTP.png
  • Der Soekris zeigt das GRUB-Boot-Menü des Debian-Installers:
Start der Debian-Installation
  • Enter drücken, nach kurzer Wartezeit erscheint eine "Video mode"-Fehlermeldung
Fehlermeldung ignorieren, ohne Eingabe
  • Keine Taste drücken, einfach nur warten bis es von selbst weiter geht.
  • Es erscheint der erste Schirm der Debian-Installation:
Debian-Installation: Sprachauswahl

Debian-Installation

Die weitere Schritte entsprechen einer Debian-Standard-Installation, nur dass sie eben über die serielle Schnittstelle erfolgt. Der Wechsel zwischen den Auswahlmöglichkeiten im Text-Installer erfolgt über die TAB- und die Pfeil-Tasten.

Das Installationsprogramm fragt etwas später nach der zu verwendenden Ethernetschnittstelle, dabei entspricht enp5s0 der Eth1-Schnittstelle.

Auswahl der richtigen Schnittstelle

War der Netzwerkverkehr bisher auf das lokale Netz beschränkt, so lädt der Installer ab nun auch jede Menge Pakete aus dem Internet. Klappt hier etwas nicht, so ist die DHCP-Konfiguration zu überprüfen.

Die weitere Installation lasse ich aus, die wurde von besseren Schreibern zur genüge dokumentiert. Nur zwei Punkte seien erwähnt:

  • Den grafischen Desktop (Gnome) bei der entspechenden Abfrage abwählen.
  • Im selben Dialog den SSH-Server anwählen.

Ganz am Ende sollte die Belohnung für den Aufwand so aussehen:

Der Debian-Installer ist fertig!

Der Soekris kann nun mit dem frisch installierten Debian Bookworm gestartet werden:

Debian-Login auf der seriellen Konsole

Nach der Installation ist noch die definitive Netzwerkkonfiguration (in /etc/network/interfaces) vorzunehmen. Bequemer geht's ab jetzt natürlich über SSH statt über die serielle Schnittstelle.

Und nun kann's mit den eignenen Ideeen losgehen :-)

Links

Folgende Seiten haben mir bei der Erstellung dieser Dokumentation geholfen: