# Hilfe, System kaputt!

## l3u

Hallo allerseits,

ich wollte mich gerade auf meinem Server einloggen. Der ist ein Alix 3D2. Ssh hat normal geantwortet, aber nach der Passworteingabe bin ich gleich wieder rausgeflogen ("Connection closed"). Deswegen habe ich es per serieller Konsole probiert. Selbes Problem.

Also: Stecker ziehen. Bis "INIT: version 2.93 booting" schaut alles normal aus, aber dann:

```
INIT: version 2.93 booting

[    4.823126] init-early.sh[549]: segfault at 79 ip 00578573 sp bfbb492c error 4 in bash[4f6000+c7000]

[    4.823574] Code: 73 6c 2e 62 7a 32 20 2d 3e 20 73 73 6c 2d 64 32 69 5f 58 35 30 39 2e 33 73 73 6c 2e 62 7a 32 20 31 35 37 31 34 37 30 34 34 37 <0a> 73 79 6d 20 2f 75 73 72 2f 73 68 61 72 65 2f 6d 61 6e 2f 6d 61

   OpenRC 0.41.2 is starting up G[    4.867341] init.sh[550]: segfault at 79 ip 00526573 sp bf84b86c error 4 in bash[4a4000+c7000]

entoo Linux (i58[    4.869287] Code: 73 6c 2e 62 7a 32 20 2d 3e 20 73 73 6c 2d 64 32 69 5f 58 35 30 39 2e 33 73 73 6c 2e 62 7a 32 20 31 35 37 31 34 37 30 34 34 37 <0a> 73 79 6d 20 2f 75 73 72 2f 73 68 61 72 65 2f 6d 61 6e 2f 6d 61

6)

mkdir `/run/openrc': Read-only file system

mkdir `/run/openrc/starting': No such file or directory

mkdir `/run/openrc/started': No such file or directory

mkdir `/run/openrc/[    4.915636] sh[551]: segfault at 79 ip 004fd573 sp bf8cd8bc error 4 in bash[47b000+c7000]

stopping': No su[    4.916646] Code: 73 6c 2e 62 7a 32 20 2d 3e 20 73 73 6c 2d 64 32 69 5f 58 35 30 39 2e 33 73 73 6c 2e 62 7a 32 20 31 35 37 31 34 37 30 34 34 37 <0a> 73 79 6d 20 2f 75 73 72 2f 73 68 61 72 65 2f 6d 61 6e 2f 6d 61

ch file or directory

mkdir `/rumkdir `/run/openrc': Read-only file system

mkdir `/run/openrc/s[    4.955808] sh[555]: segfault at 79 ip 00526573 sp bff6d76c error 4 in bash[4a4000+c7000]

tarting': No suc[    4.956862] Code: 73 6c 2e 62 7a 32 20 2d 3e 20 73 73 6c 2d 64 32 69 5f 58 35 30 39 2e 33 73 73 6c 2e 62 7a 32 20 31 35 37 31 34 37 30 34 34 37 <0a> 73 79 6d 20 2f 75 73 72 2f 73 68 61 72 65 2f 6d 61 6e 2f 6d 61

INIT: Entering runlevel: 3

mkdir `/run/openrc': Read-only file system

mkdir `/run/openrc/s[    5.001691] sh[558]: segfault at 79 ip 00505573 sp bfd1027c error 4 in bash[483000+c7000]

tarting': No suc[    5.002853] Code: 73 6c 2e 62 7a 32 20 2d 3e 20 73 73 6c 2d 64 32 69 5f 58 35 30 39 2e 33 73 73 6c 2e 62 7a 32 20 31 35 37 31 34 37 30 34 34 37 <0a> 73 79 6d 20 2f 75 73 72 2f 73 68 61 72 65 2f 6d 61 6e 2f 6d 61

h file or directory

mkdir `/run/openrc/started': No such file or directory

mkdir `/run/openrc/stopping': No such file or directory

mkdir `/run/openrc/inactive': No such file or directory

mkdir `/run/openrc/wasinactive': No such file or directory

mkdir `/run/openrc/failed': No such file or directory

mkdir `/run/openrc/hotplugged': No such file or directory

mkdir `/run/openrc/daemons': No such file or directory

mkdir `/run/openrc/options': No such file or directory

mkdir `/run/openrc/exclusive': No such file or directory

mkdir `/run/openrc/scheduled': No such file or directory

mkdir `/run/openrc/tmp': No such file or directory

 * Caching service dependencies ...

fopen `/run/openrc/deptree': No such file or directory

 * Failed to update the dependency tree

 [ !! ]

 * failed to load deptree

                                           .

     .vir.                                d$b

  .d$$$$$$b.    .cd$$b.     .d$$b.   d$$$$$$$$$$$b  .d$$b.      .d$$b.

  $$$$( )$$$b d$$$()$$$.   d$$$$$$$b Q$$$$$$$P$$$P.$$$$$$$b.  .$$$$$$$b.

  Q$$$$$$$$$$B$$$$$$$$P"  d$$$PQ$$$$b.   $$$$.   .$$$P' `$$$ .$$$P' `$$$

    "$$$$$$$P Q$$$$$$$b  d$$$P   Q$$$$b  $$$$b   $$$$b..d$$$ $$$$b..d$$$

   d$$$$$$P"   "$$$$$$$$ Q$$$     Q$$$$  $$$$$   `Q$$$$$$$P  `Q$$$$$$$P

  $$$$$$$P       `"""""   ""        ""   Q$$$P     "Q$$$P"     "Q$$$P"

  `Q$$P"                                  """

This is (none) (Linux i586 4.19.72-gentoo) 01:00:13

(none) login: [    9.255666] random: crng init done

```

Was ist denn da los?! Sowas hab ich noch nie gesehen …

----------

## mike155

 *i3u wrote:*   

> Sowas hab ich noch nie gesehen …

 

Ich auch noch nie... 

Sieht aus, als ob beim letzten Update etwas schief gelaufen ist. Es könnte auch ein Hardware-Fehler sein - aber je mehr ich darüber nachdenke, für desto unwahrscheinlicher halte ich es.

Interessant sind die Segfaults. Sie scheinen ja immer von bash zu kommen. Hast Du bash oder Pakete, die bash benötigt oder den Kernel in der letzten Zeit upgedated?

Die "read-only file system" Fehler kannst Du bei der Analyse ignorieren. Sie sind Folgefehler, weil "/" nicht "rw" gemountet wurde.

----------

## l3u

Ich war gerade dabei, ein ganz normales Systemupdate zu fahren. Nichts Spektakuläres … den Kernel habe ich nicht verändert. und dann stand eben "Connection closed" in meinem screen-Fenster und ich konnte mich nicht mehr einloggen …

----------

## mike155

Kannst Du Dich auf dem System anmelden? Falls nicht, könnte folgendes hilfreich sein: 

eine Boot-CD und der chroot-Trick

busybox sh als bash-Ersatz "chroot /mnt/xxx /bin/busybox sh"

Bitte poste die Ausgabe von

```
emerge --info
```

und von

```
qlop -d 2019-10-18 -v
```

und von

```
cpuid2cpuflags
```

----------

## l3u

Anmelden geht nicht. Von USB booten kann das Ding auch nicht, und den PXE-Boot, mit dem ich damals das System aufgesetzt habe, bekomm ich grad nicht zum Laufen …

Ich hab hier was gefunden mit ähnlichen Meldungen: https://forum.howtoforge.de/threads/server-stuerzt-ab-segfault.10880/

 *Quote:*   

> Die Meldungen besagen, dass auf den Speicher an verschiedenen Adressen nicht lesend (error 4) oder nicht schreibend (error 6) oder nicht schreibend mit reserved bit zugegriffen werden konnte.
> 
> Ich würde mal die Riegel testen (lassen)

 

Heißt: Ram kaputt?! Das wär natürlich weniger prickelnd, da der fest aufgelötet ist …

----------

## mike155

Hardware Error wäre möglich, aber ich halte falsche CFLAGS, CPU Flags oder einen defekten GCC für wahrscheinlicher...

Deswegen wäre es gut, wenn Du von SystemRescue CD booten und Dich mit chroot wieder auf das System anmelden könntest. Dann können wir sehen, was dort los ist.

Außerdem befindet sich auf der SystemRescueCD memtest, mit dem man das RAM überprüfen kann. Sofern memtest nicht sofort einen Fehler findet, solltest Du es 12-24 Stunden laufen lassen. Manche RAM-Fehler sind scheu und brauchen länger, bis sie sich zeigen.

----------

## l3u

Ich hab jetzt kurzerhand das Ding zerlegt, und die Compact-Flash-Karte rausgebaut, auf der das System liegt. Wohlgemerkt ein i486-System.

Tatsächlich: Wenn ich das System mounte und /bin/bash starten will, gibt es einen Segfault. Ich hab jetzt mal testweise bash nach bash~ verschoben und /bin/sh nach busybox verlinkt. Und in /etc/passwd meinem root-Account mitgeteilt, er möge doch bitte /bin/sh als Shell benutzen.

Und siehe da: Die Kiste fährt hoch! Zwar mehr schlecht als recht, weil busybox nicht alles zu können scheint, aber zumindest bekomme ich per serieller Konsole ein Login-Prompt, und kann mich auch anmelden. Am Ende ist wirklich "nur" die bash-Binary kaputt?! Warum auch immer?!

Einfach die bash-Binary zu ersetzen hat leider nicht geklappt, das Ding bekommt auch die bash von meinem Uralt-Laptop nicht ausgefürt. Der ist eben aber auch "schon" i686. Emerge geht natürlich auch nicht ;-) Naja, ich probier jetzt grad mal, die bash old-style per Hand zu kompilieren und die kaputte Binary mit der hoffentlich demnächst korrekt gebauten zu ersetzen.

Mannomann … ich mach den Linux-Kram ja jetzt echt schon lang. Aber sowas ist mir noch nicht untergekommen … und dann natürlich auf einem Alix 3D2 …

----------

## l3u

Es hat tatsächlich funktioniert!!! :-D

----------

## ChrisJumper

Was genau l3u hat funktioniert?

Bei Segmentation Fault hab ich oft auch eher Hardware Bugs, meistens kann man das mit dem Chroot lösen, von einer Live-Disct oder Rescue Version. Backups sind immer gut. Denke an die Krypto-Trojaner!

Freut mich das es wieder geht, aber nimm dir mal die Zeit für diesen Fall mit einem Backup vor zu bereiten und lerne draus.

Viele Grüße

Chris

----------

## l3u

Was ich oben geschrieben habe: Provisorisch mit busybox als Shell booten, bash manuell bauen und die kaputte bash-Binary überschreiben. Dann wieder mit bash booten.

Das Nichtvorhandensein eines Backups war hier übrigens nicht das Problem. Ich mache natürlich regelmäßig Backups. Das Problem war, dass ich über keinen Weg mehr ein Login machen konnte. Und eine Live-CD booten ist wie gesagt bei einem Alix 3D2-System nur via pxeboot möglich, weil das Ding nicht von USB bootet. Sonst wär das auch das erste gewesen, was ich probiert hätte.

----------

## mike155

Dann bleibt noch die Frage, warum das bash binary kaputt war.

Und diese Frage würde mir am meisten Sorgen bereiten. Denn wenn jetzt etwas kaputt gegangen ist, wird es wieder passieren. Deshalb solltest Du die Ursache finden und beheben.

----------

## l3u

Das ist tatsächlich die eigentlch interessante Frage! Ich hab nur wirklich keine Ahnung, was da passiert ist oder wieso. Die Bash war bei dem Update denke ich nicht mal dabei … die Frage ist, wie man das rausfinden könnte …

----------

## Max Steel

Evtl ein Problem mit deiner Compact-Flash Karte; defekte in Speicherbereichen wo die bash-binary liegt. durch neuschreiben beschädigt.

Oder so

----------

## l3u

Das könnte sein … nach dem Zerlegen musste ich erstmal einen fsck machen, und der hat allerlei repareien müssen (was jetzt aber auch evtl. am 10 Mal Stecker ziehen liegen könnte). Gut, das System läuft 24/7 seit 2010 … kann schon sein, dass die Karte nen Knacks hat. Wobei jetzt wieder alles normal läuft …

Was ich mir auch überlegt habe, ob sich vielleicht der Cross-distcc-gcc irgendwie verschluckt hat? Das ist passiert, während ich auf 8 Rechnern gleichzeitig Updates gemacht habe …

Ist jedenfalls bemerkenswert, wie eine einzige kaputte ausführbare Datei mir einen ganzen Server lahmlegt!

----------

## l3u

Nur um hier nochmal ne Rückmeldung zu geben: Es war wahrscheinlich wirklich die Compact-Flash-Karte. Ich hab die letzten Tage suspekte I/O-Errors bekommen, Dateien, die nicht lesbar waren, obwohl sie es hätten sein müssen etc.; aufgefallen ist es deswegen, weil ich Postfix aufgrund von Leseproblemen in /var/spool nicht mehr (neu) starten konnte.

Ich hab dann per ddrescue ein Image der Karte gemacht (bemerkenswerterweise ohne Lesefehler) und das dann auf eine neue gespiegelt. Die ist größer, deswegen hab ich (nach löschen und neu anlegen der Partition) resize2fs laufen lassen, was erstmal ein e2fsck -f haben wollte. Und das hat dann viele, viele Fehler (kaputte Inodes, falsche Verzeichnisse, falsche Counter etc.) gefunden.

Hinterher konnte ich das System normal booten, aber z. B. war Python 2 kaputt ("Invalid ELF header" in irgend einer so-Datei). Neu installieren hat's repariert.

Ich gehe mal stark davon aus, dass just /bin/bash ebenfalls kaputt war. Was dann eben erheblich mehr Konsequenz hatte, als ein Python-2-Shared-Object.

Naja, die Kiste läuft seit über neun Jahren 24/7. Da kann schonmal ne Compact-Flash-Karte kaputtgehen ;-)

----------

