Installation von Debian 12 (Bookworm) auf Soekris-Rechner per RS232
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!
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.
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
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:
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.
- Daraufhin lässt sich am Arbeitsrechner die DHCP-Anfrage des Soekris beobachten:
- Beim TFTP-Dienst laufen Dateianfragen ein:
- Der Soekris zeigt das GRUB-Boot-Menü des Debian-Installers:
- Enter drücken, nach kurzer Wartezeit erscheint eine "Video mode"-Fehlermeldung
- Keine Taste drücken, einfach nur warten bis es von selbst weiter geht.
- Es erscheint der erste Schirm der Debian-Installation:
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.
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 Soekris kann nun mit dem frisch installierten Debian Bookworm gestartet werden:
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: