Wie eine pfSense auf einem PC Engines APU-Board stirbt und man sie wiederbelebt

Quasi als Fortsetzungsartikel zu Wie eine Securepoint UTM RC100 stirbt und man sie wiederbelebt folgt nun die Variante mit einer pfSense auf einem APU-Board von PC Engines. Im Grunde kann man die Diagnose auch auf andere Hardware anwenden.

Bei einem Kunden streikte die Standort-Vernetzung auf Basis von OpenVPN. Vor Ort auf der Client-Seite war schnell klar, das die pfSense nicht mehr ansprechbar war. Zunächst wurde über eine serielle Verbindung (da das APU-Board kein VGA o.ä. hat) überprüft, ob es eine aktuelle Ausgabe gibt. Allerdings reagierte das Gerät überhaupt nicht auf irgendwelche Eingaben, eine Ausgabe gab es in Folge nicht.

Bei einem Neustart wurde beobachtet, wie weit pfSense bootet. Das sah zunächst recht vielversprechend aus. Zunächst erschienen die Meldungen von Coreboot (BIOS), dann der Bootloader und das System startete über die Hardware-Enumierung soweit flott und gut. Dann erschien allerdings folgendes:

WARNING: / was not properly dismounted
WARNING: /: mount pending error: blocks 16 files 0

Danach ein Crash-Report usw.:

Kurzum: Nicht gut und ein Hinweis, das mindestens das Dateisystem fehlerhaft ist. Um dies weiter zu prüfen wurde das Gerät neugestartet.

Beim Bootmenü wurde „2“ gedrückt für „2. Boot [S]ingle User“ um in den Single User Mode zu starten.

Bei der Abfrage nach der Shell schlicht „Enter“ drücken.

Nun kann man das Dateisystem überprüfen:

fsck -f

Tipp: „-y“ anhängen um Meldungen automatisch bestätigen zu lassen.

Die Ausgabe verhies ein weiteres Mal nichts gutes:

** /dev/gptid/51b43281-0cc3-11e8-802f-000db9338214
** Last Mounted on /
** Root file system
** Phase 1 - Check Blocks and Sizes
INCORRECT BLOCK COUNT I=1605142 (8 should be 0)
CORRECT? [yn]

INCORRECT BLOCK COUNT I=1605143 (8 should be 0)
CORRECT? [yn] y

** Phase 2 - Check Pathnames
** Phase 3 - Check Connectivity
** Phase 4 - Check Reference Counts

ahcich0: Timeout on slot 6 port 0
ahcich0: is 00000000 cs 00000000 ss 00000040 rs 00000040 tfd 50 serr 00000000 cmd 0000e617
(ada0:ahcich0:0:0:0): READ_FPDMA_QUEUED. ACB: 60 40 28 a2 4c 40 01 00 00 00 00 00
(ada0:ahcich0:0:0:0): CAM status: Command timeout
(ada0:ahcich0:0:0:0): Retrying command
ahcich0: AHCI reset: device not ready after 31000ms (tfd = 00000080)

ahcich0: Timeout on slot 7 port 0
ahcich0: is 00000000 cs 00000080 ss 00000000 rs 00000080 tfd 80 serr 00000000 cmd 0000e717
(aprobe0:ahcich0:0:0:0): ATA_IDENTIFY. ACB: ec 00 00 00 00 40 00 00 00 00 00 00
(aprobe0:ahcich0:0:0:0): CAM status: Command timeout
(aprobe0:ahcich0:0:0:0): Retrying command
ahcich0: AHCI reset: device not ready after 31000ms (tfd = 00000080)
ahcich0: Timeout on slot 8 port 0
ahcich0: is 00000000 cs 00000100 ss 00000000 rs 00000100 tfd 80 serr 00000000 cmd 0000e817
(aprobe0:ahcich0:0:0:0): ATA_IDENTIFY. ACB: ec 00 00 00 00 40 00 00 00 00 00 00
(aprobe0:ahcich0:0:0:0): CAM status: Command timeout
(aprobe0:ahcich0:0:0:0): Error 5, Retries exhausted
ahcich0: AHCI reset: device not ready after 31000ms (tfd = 00000080)

Mit den Timeouts ging es dann weiter. Fazit: Die SSD ist defekt. Bei diesem älteren Gerät handelt es sich um eine SuperSSpeed S328 aus dem damaligen PC Engines APU-Bundle. Laut Recherche sind wohl Schwierigkeiten mit neueren Dateisystemen und TRIM bekannt:

Notizbl0g. – SuperSpeed S328 SSD and TRIM Feature

PC Engines – 16GB mSATA SSD module (msata16a)

Wobei man dazu erwähnen muss, das pfSense ab Werk kein aktiviertes TRIM hat. Dieses muss manuell eingeschaltet werden:

Enable TRIM on pfsense 2.2.4

YUK Blog – pfsense SSD Harddisk Enable TRIM

Dies war übrigens hier nicht der Fall. Vermutlich ist die SSD ihres Alters wegen „gestorben“. Jedenfalls kann die SSD mit dem aktuellen Modell von PC Engines ersetzt werden:

PC Engines – 16GB mSATA SSD module (msata16e oder neuer)

Dieses gibt es beispielsweise bei VARIA:

VARIA – PC Engines mSATA16G – 16 GB mSATA SSD Module

Alternativ kann neben der PC Engines Eigenmarke z.B. auch Transcend verwendet werden (von mir bislang ungetestet):

VARIA – 16GB Transcend mSATA-SATA, SSD MLC, TS16GMSA370

Ist die Hardware wieder in Ordnung, muss pfSense neuinstalliert werden:

  • Das System starten.
  • „F10“ für’s Bootmenü drücken
  • Das Boot-Medium auswählen, in diesem Fall die „1“ für „1. USB MSC Drive Multiple Card Reader 1.00“
  • Bei „Console type“ die Eingabetaste drücken und den Anweisungen folgen (Quasi immer nur „Enter“ drücken), auf diese Weise wird pfSense mit den Standard-Einstellungen installiert.
  • Vor dem Neustart die SDCARD entfernen.

Nach dem Neustart kann das System bis zu einem gewissen Grad an der Konsole konfiguriert werden, wie z.B. zuweisen der Netzwerkschnittstellen, IP-Adresse, …

Über „1) Assign Interfaces“ mindestens die WAN- (i.d.R. „re0“ bzw. „igb0“) und LAN-Schnittstelle (i.d.R. „re1“ bzw. „igb1“) zuweisen. Dieser Schritt ist relevant, auch wenn bereits „re0“ und „re1“ angezeigt wird, andernfalls ist keine Kommunikation möglich! Erfahrungsgemäss klappts allerdings bei neueren Boards mit Intel-Netzwerkchips automatisch, so das dieser Schritt übersprungen werden kann.

Mindestens sollte die IP-Adresse und ggf. der DHCP-Server für die LAN-Schnittstelle unter „2) Set interface(s) IP address“ eingestellt werden.

Nun kann man direkt via Netzwerk im Browser unter Angabe der voreingestellten IP-Adresse 192.168.1.1 (oder welche man selbst vergeben hat) und den Zugangsdaten

Benutzername: admin
Kennwort: pfsense

den Ersteinrichtungsassistenten durchlaufen. Die LAN-Schnittstelle ist die Mittlere von den Dreien, sofern man nichts anderes konfiguriert hat. WAN ist per Vorgabe die erste Schnittstelle neben dem COM-Port.

Bevor es dann weiter geht, sollte zunächst, sofern vorhanden, das aktuelle Update installiert werden. Anschließend kann man die Datensicherung einspielen und ist wieder auf dem aktuellen Stand.

Beim Kunden haben wir kurzerhand ein Leihgerät aufgestellt und die Datensicherung eingespielt, so war man innerhalb weniger Minuten fertig und das VPN lief wieder. Die Reparatur konnte so in Ruhe in der Werkstatt erfolgen und nebenbei dieser Beitrag verfassst werden.

Quelle:

OpenBSD – Manual Page – fsck

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.