Zurück zu: Reparaturen

Festplattentausch bei Messgeräten


Vorwort:

Bei vielen Messgeräten sind ab den 90ern als Rechnerplattform mehr oder weniger normale PCs verbaut. Diese verwenden herkömmliche HDDs (meist 2.5" PATA Platten). Nicht ohne Grund werden diese ab und zu scherzhaft als "spanabhebende Datenverarbeitung" benannt. Wenn man als Beispiel die im folgenden Bericht verwendeten R&S Geräte aus den 90ern bzw frühen 2000ern nimmt, haben diese Platten alle schon die 20 Jahre überschritten und somit ist es nur mehr eine Frage der Zeit bis diese ausfallen.

Die übliche Vorgehensweise sieht so aus:
  • Mittels USB Adapter von der originalen Platte ein bitgenaues 1:1 Image ziehen
  • Image auf CF Karte bzw. SSD (sofern verfügbar) schreiben
  • Karte/SSD einbauen, booten und freuen

Das wird auf DOS basierten Geräten fast immer funktionieren. Bei meinem R&S FSEA ging das ohne Probleme mit einer CF Karte.
Beim FSIQ und FSP, beide laufen unter NT 4.0, sah die Sache schon anders aus. Nach dem übertragen des Images booteten beide zwar, zeigten dann allerdings einen Bluescreen mit der Meldung INACCESSIBLE_BOOT_DEVICE.
Eine andere CF Karte sowie eine richtige industrial SSD funktionierten auch nicht. Nun machte ich mich auf die Suche nach einer Antwort, weshalb das bei manchen funktioniert und bei mir (sowie anderen auch, wenn man die Berichte im Netz liest) nicht.


Davon wurde ich beim Booten des 1:1 auf CF bzw SSD kopierten HDD Images begrüßt


Ein befreundeter OM, Michael OE6MHE, verfügt auf dem Gebiet der alten Rechnerplattformen über große Erfahrung und er hat ein Rezept entwickelt, mit dem man auch die störrischen Fälle zum Laufen bekommen sollte.
Das Problem ist folgendes: Das originale Image wurde für eine bestimmte Platte erzeugt. Deshalb passt dort auch alles zusammen. Wenn man jetzt das Image auf eine CF Karte oder SSD gibt, hat diese eine andere Geometrie. Normalerweise sollte das ja keine Rolle spielen. Tut es bei DOS auch normal nicht und bei moderneren Systemen vermutlich ebenfalls. Aber die NTFS Implementierungen aus dieser Zeit dürften ziemlich empfindlich sein. Da braucht nur der Modus mit dem die Platte im BIOS erkannt wird etwas nicht zusammenpassen und schon krachts beim Bootvorgang. Man muss dazu sagen, soweit wir wissen speichern manche Geräteplattformen änderungen im BIOS nicht ab, folglich kann man auch bei IDE Autodetect nichts dran rumbasteln und muss damit leben. Selbst eine "echte" industrial SSD, bei der die CHS Geometrie 1:1 so eingestellt wurde wie bei der originalen HDD, zeigte dieses Verhalten. Dabei ist aber, wie bereits erwähnt, allem Anschein nach die alte NTFS Implementierung verantwortlich.
Ein weiteres Problem ist, dass moderne Windows Systeme scheinbar irgendwas mit solchen CF/SSDs machen, wenn sie als removable Device via USB Adapter angesteckt werden. Mehrere Indizien deuten darauf hin. Ich hatte eine bootfähige CF Karte, hab diese einmal an einen Win10 Rechner angeschlossen via USB, nichts damit gemacht und dann wieder ins Gerät eingebaut, welches mich dann mit einem Bluescreen begrüßt hat.

Darum ein wichtiger Hinweis:Für ALLE Arbeiten an den Platten AUSSCHLIESSLICH ein Linuxsystem verwenden! Im Bericht kommt eine Live-Version von Kali Linux zum Einsatz. Und auch dort IMMER nur mit den Kommandozeilentools (cp, rm etc) arbeiten. Ich hab beim Umkopieren mittels Ctrl+C und Ctrl+V in der GUI den Fall gehabt, dass irgendwelche Files nicht korrekt kopiert wurden!


Einleitung:


Was kann man jetzt also tun? Das Grundkonzept sieht folgendermaßen aus:
Man nimmt die neue CF/SSD. Diese wird zuerst komplett gelöscht (auf Sektorebene!), danach im Gerät mittels DOS partitioniert, formatiert und ein minimales DOS darauf installiert. Danach kommt der WinNT Installer drauf, welcher in der originalen Installation des Geräts enthalten ist. Mit diesem Tool erzeugt man nun einen Setupordner auf der SSD. Dieser setzt dann ein frisches NT auf der Partition auf und formatiert sich die Partition selber um auf NTFS. Und das ist der Kern der ganzen Sache!
Denn dadurch passt die somit entstandene Partition wirklich zur verwendeten SSD!
Wenn man dann die SSD nochmal an den Linux Rechner hängt, sämtliche(!) Daten auf Fileebene aus der frisch installierten NT Partition löscht und danach die Daten aus der Originalen HDD Partition reinkopiert, hat man das alte originale System des Geräteherstellers mit allen Files, Programmen, Settings etc. wieder auf der SSD, aber mit einem Partitionslayout und Filesystem welches tatsächlich zur Platte passt.
Bei einer einzigen Partition ist es damit getan. Es gibt aber auch Geräte mit mehreren Partitionen, so z.B. mein FSP, welcher 3 Stück davon hat. Bei dem ist der Vorgang ähnlich, erfordert aber noch einige zusätzliche Arbeitsschritte, welche auch beschrieben werden.

Anmerkung Michael: Dieses "Kochrezept" wurde auf einem Pentium II mit Debian Lenny entwickelt. Ausserdem hat er die SSD/CF direkt via IDE ans Mainboard angeschlossen und nicht über USB Adapter.

Aber nun zum eigentlichen Bericht.

Ablauf:

Einige Vorbemerkungen noch: Der Bericht ist etwas ausführlicher geschrieben mit vielen Fotos. Die Fotos wurde, entgegen meines üblichen Stils, aufgrund des Zeitbedarfs mit Handykamera aus einem schrägen Winkel gemacht um Spiegelungen zu vermeiden (sonst würdet ihr euren ergebenen Schreiber hier nicht nur lesen sondern auch sehen müssen). Die Aufnahmen haben somit nicht das übliche Qualitätsniveau.
Am Ende folg noch eine kurze und prägnante Zusammenfassung der Abläufe inkl. verwendeten Tools und Kommandozeilen.


Für die folgenden Schritte habe ich einen R&S FSP Spektrumanalyzer verwendet. Als erstes wurde ein Image der originalen HDD erzeugt. Dazu kommt das Kommandozeilentool "dd" zum Einsatz.

$ dd if=/dev/sdd of=/pfad_zum_image/image.img


Vorher kann man noch mit

$ lsblk

die angeschlossenen Platten anzeigen lassen, damit man weiß welches Device zu verwenden ist (in diesem Falle sdd).
Bitte aufpassen: Immer auf das komplette Device gehen, also sda, sdb, sdc... und nicht auf sdd1, sdd2 oder dergleichen, denn dann würde man nur eine einzelne Partition kopieren aber wir wollen das ganze Image.

Als nächster Schritt kommt dann noch das kopieren der HDD auf Fileebene. Der FSP verwendet ein Image mit 3 Partitionen (C:, D:, und E:). Aus diesen 3 Partitionen wurden sämtliche Dateien herauskopiert. Vorher aber sicherstellen, dass man die Zuordnung der Device Files richtig hinbekommt, nicht dass man dann versehentlich den Inhalt der D: Partition in den Ordner für die C: Daten kopiert.

Kopiert wird mit cp auf einen Ordner am USB Stick. Mit -R kopiert cp rekursiv, dh alles inkl. allen Unterordnern

$ mount /dev/sdd1 /mount/mountpoint_der_C_partition


$ cp -R /mount/mountpoint_der_C_partition/* /mount/USBstick/fsp_daten/C



Danach waren die Vorarbeiten getan und ich kümmerte mich um die SSD. Die war werksseitig gelöscht. Sollte eine SSD jedoch bereits beschrieben sein, kann man sie folgendermaßen auf Sektorebene löschen:

$ dd if=/dev/zero of=/dev/sdd



Da dd keinen Fortschrittsbalken hat, lässt sich mit dem Tool "pv" da etwas zaubern, dann seht ihr wie viele Bytes schon rübermarschiert sind

$ dd if=/dev/zero | pv | dd of=/dev/sdd



Die somit gelöschte SSD wurde an den FSP angeschlossen, aber nicht eingebaut, denn man muss sie mehrfach an- und wieder abklemmen.

Jetzt wurde eine MS-DOS 6.22 Bootdiskette erstellt. Das 6.22er Image habe ich mit einem Programm namens DiskWrite auf einer WinXP Maschine auf eine 3.5" Floppy geschrieben. Mit den neueren USB-Stick Floppy Emulatoren die ganz gerne in den älteren Geräten nachgerüstet werden, müsste das auch gehen, aber davon hab ich noch keinen.

Wenn man die Diskette in den FSP eingelegt hat, muss man ihn beim Booten dazu bringen von dieser zu Booten. Beim FSP geht das, indem man nach dem ersten Piepsen nach dem Einschalten auf die Taste "FILE" drückt. Bei den FSE sollte es die "USER" Taste über den Softkeys sein. Das funktionierte und ich bekam ein DOS Prompt:

DOS Eingabeaufforderung, gebootet von Diskette



Anschließend erzeugte ich mit fdisk eine primäre Partition mit 1302MB, wie im Original.
Der FSP hat zwar 3 Partitionen, aber vorerst brauchen wir nur eine. Danach formatieren mit FORMAT:

A:\>FORMAT C:


Rebooten damit die Partition erkannt wird und mit SYS ein minimales DOS installieren.

A:\>SYS C:


Dann noch den MBR neu schreiben:

A:\>FDISK /MBR


Jetzt haben wir ein Startfähiges DOS auf der SSD. Das kann man durch entfernen der Floppy und rebooten kontrollieren.
Wie gehts jetzt weiter? Man entfernt die SSD nun aus dem FSP, klemmt sie mittels Adapter an die Linuxmaschine an und kopiert dort den I386 Ordner der C: Partition der original HDD auf die soeben formatierte SSD.
Vorher muss die SSD natürlich gemountet werden. Beispiel:

$ mount /dev/sdd1 /mount/pfad_zur_C_partition


Danach kann kopiert werden:

$ cp -R /mount/USBstick/fsp_daten/C/I386 /mount/pfad_zur_C_partition/



Platte unmounten:

$ umount /dev/sdd1


Achtung: Alle eventuell geöffneten Daten (und sei es nur eine Shell die in einem Ordner der gemounteten SSD steht!) schließen, sonst schlägt umount fehl.
Wir haben nun eine SSD mit einer primären, FAT formatierten DOS Partition und dem I386 Ordner drauf. Die Platte kommt dann wieder in den FSP und bootet ins DOS.
Ins I386 Verzeichnis wechseln:

C:\>CD I386


Und dort das tool WINNT ausführen, welches dann die WinNT Installerdaten in Stellung bringt:

C:\I386>WINNT /B /OX


WINNT.EXE welches die Installerdaten platziert



Jetzt müssen zwei Dateien verändert werden. Das ging normal mit dem in DOS enthaltenen Editor, jedoch haben wir nicht herausgefunden wie man in der Shell in den $WIN_NT$ Ordner mit Leerzeichen und Tilde reinkommt. Somit muss die Platte nochmal raus und an die Linuxmaschine. Dort sind folgende änderungen zu machen:
Im Wurzelverzeichnis befindet sich TXTSETUP.SIF
In Dieser Datei im Abschnitt [SetupData] den Strichpunkt ';' vor Eintrag "; SetupSourceDevice = \device\harddisk0\partition1" entfernen.
Und dann im Ordner "$WIN_NT$.~BT" in der Datei WINNT.SIF den Parameter "msdosinitiated" von "1" auf "0" setzen.
Platte unmounten und wieder rein in das Gerät. Dann bootet der WinNT Installer, den viele von euch sicher noch aus der WinXP Zeit kennen.


Ein lang verschollen geglaubter, aber treuer Weggefährte der 90er und 2000er





Weiter...





ACHTUNG:Hier wirds wichtig! Unbedingt "Convert the partition to NTFS" auswählen! Das ist des Pudels Kern, denn dadurch erzeugt der Installer ein frisches NTFS welches dann wirklich zur verwendeten SSD passt





Daten kopieren. Sollte dank der flotten SSD gleich erledigt sein



Danach bootet der FSP erneut und der Installer setzt seine Arbeit fort.

Umwandeln der FAT Partition nach NTFS





Das grafische Setup erscheint. Hier kann der FSP nun ausgeschaltet werden, denn ohne CD Key kommen wir hier nicht weiter.



Wir haben nun eine sauber NTFS formatierte Partition auf unserer SSD. Nun bauen wir diese wieder aus und hängen sie an die Linuxmaschine.
Dort wird ALLES gelöscht (auf Fileebene).

$ cd /mount/pfad_zu_C_partition

$ rm -rf *



Seid bloß vorsichtig mit dem rm -rf *, eine Unachtsamkeit und ihr löscht ne Menge mehr als nur das Gewollte.
Nachdem die Partition leer ist, kopiert man sämtliche Daten der originalen HDD C: Partition rein.

$ cp -R /mount/USBstick/fsp_daten/C /mount/pfad_zur_C_partition/



Jetzt ist das originale WinNT welches (in diesem Falle) R&S zusammengestellt hat, wieder auf der Platte. Wenn ihr ein Gerät mit nur einer Partition habt, ist es hiermit an sich erledigt. Da der FSP aber 3 davon hat, geht die Arbeit weiter.
Die SSD wird in den FSP eingebaut und gebootet. Windows NT kommt, komplett mit dem FSP Startscreen. Jedoch tauchen dann die ersten Fehlermeldungen auf. Beim FSP liegen viele Runtimedaten, unter anderem pagefile.sys, auf der D: Partition, die es ja (noch) nicht gibt. Die Analyzersoftware bekommt natürlich auch die Krise wenn ihr diverse Pfade fehlen.
Darum den FSP mit Tastatur und Maus booten, Ctrl+Alt+Del machen um in den Taskmanager zu kommen und die startende Analyzersoftware gleich wieder abschießen.
Da der FSP jetzt trotz allem unter seinem eigenen WinNT läuft, lassen sich die fehlenden Partitionen direkt im Windows erzeugen.
Dazu wird das Programm WINDISK.EXE ausgeführt. Das ist der grafische Partitionseditor. Mit dem wurde vorher die originale HDD untersucht und die Partitionsgrößen notiert. Man kann dann die D: Partition auch kleiner anlegen, da auf ihr typischerweise nur sehr wenig gespeichert ist. Ich habe das so gemacht, um solch ein System von einer 5.6GB Platte auf eine 4GB SSD zu bekommen.

NT Partitionseditor beim Formatieren der soeben erzeugten fehlenden D: und E: Partitionen





Formatierung fertig



Jetzt ist man fast am Schluss. 3 Partitionen in der passenden Größe befinden sich auf der SSD.
Also SSD wieder ausbauen, an die Linuxmaschine hängen und die daten in allen 3 Partitionen vollständig (auf Fileebene mit rm) löschen und neu befüllen mit den gesicherten Originaldaten. Die C: Partition sollte vorsichtshalber auch neu beladen werden, denn wer weiß ob sich durch das Booten mit fehlender D: Partition irgendwelche Configs verändert haben. Sicher ist sicher.
Das Ganze sieht zugegebenermaßen etwas Umständlich aus, aber es ermöglicht es mit sehr hoher Erfolgsquote auch in den Fällen zu einem Ergebnis zu kommen, in denen die 1:1 kopierten Images fehlschlagen.
Michael hat dieses Rezept bereits bei mehreren Geräten erfolgreich angewendet und ich war mit meiner darauf basierenden Mehrpartitions-Lösung am Ende auch erfolgreich.
Die Odyssee hat in meinem Fall aber länger gedauert. Einmal hat der Win10 Rechner mutmaßlich beim ersten Kontakt mit der SSD/CF irgendwas dran verändert und alles war wieder beim Teufel. Diverse andere Versuche blieben ebenfalls erfolglos. Paradoxerweise ging mit der CF Karte dann der WinNT Installer, während die Industrial SSD einen Bluescreen verursacht hatte. Normal denkt man sich, das muss doch andersrum sein... Als ich dann nach mehrmaliger Wiederholung endlich das originale NT mit den 3 Partitionen booten konnte, gings immer noch nicht. Die Analyzersoftware meldete sich mit einer Fehlermeldung:

Pfeifendeckel! Immer noch nicht...
Was auch immer die "Waterfall procedure" sein mag...



Man kann sich denken, wie sauer ich nach über 2 Tagen rumwerkeln war, als das Ding dann auf dem Letzten Meter doch wieder Schriffbruch erlitten hat, vorallem wenn man sich sicher ist dass es jetzt funktionieren wird.
Ich hab dann die Partitionen nochmal leer geräumt und neu beladen, aber diesmal eben AUSSCHLIESSLICH in der Kommandozeile! Vorher hab ich aus Bequemlichkeit die GUI des Live Linux verwendet. Vielleicht blieb da irgendwas auf der Strecke, ich weiß es nicht. Möglicherweise kam auch schon beim Kopieren der Originalfiles was nicht mit.
Auf jeden Fall hab ich dann alle Daten nochmal neu mit cp kopiert und endlich war die Arbeit von Erfolg gekrönt!

Da musste ich lautstark Dieselheizer Ario (Claude-Oliver Rudolph) aus einem meiner Lieblingsfilme zitieren: ER LÄUFT!!!!!!



Tja, Gute Leute muss man haben.... Vorallem solche wie Michael, ohne dessen Spezialwissen diese Aktionen nicht möglich gewesen wären.
Wir hoffen, dass unsere Erkenntnisse auch in den unerklärlichen Bluescreen-Fällen, von denen man im Netz in Verbindung mit Messgeräten öfter liest, Abhilfe schaffen.
Und jetzt, wie eingangs versprochen, die Kurzfassung:

Zusammenfassung:

  • SSD auf Sektorebene löschen

    $ dd if=/dev/zero of=/dev/sdd


  • Von original HDD ein Image ziehen (für alle Fälle)

    $ dd if=/dev/sdd of=/pfad_zum_image/image.img

    (/dev/sdd ist Situationsabhängig)

  • HDD Partitionen mounten

    $ mount /dev/sdd1 /mount/mountpoint_der_C_partition


  • Partitionsdaten kopieren (wiederholen für andere Partitionen)

    $ cp -R /mount/mountpoint_der_C_partition/* /mount/USBstick/fsp_daten/C


  • Platte unmounten

    $ umount /dev/sdd1


  • SSD in Gerät einbauen und mit DOS Bootdiskette hochfahren
  • Primary Bootpartition in passender Größe anlegen. Entweder über das fdisk Menü (dabei die erzeugte Partition unbedingt aktivieren!) oder als Kommandozeile

    A:\>FDISK 1 /PRI:1302


  • Formatieren

    A:\>FORMAT C:


  • Rebooten

  • Minimal DOS installieren

    A:\>SYS C:


  • MBR schreiben

    A:\>FDISK /MBR


  • SSD ausbauen, an Linuxmaschine hängen und I386 Ordner von der Originalplatte reinkopieren

    $ cp -R /mount/USBstick/fsp_daten/C/I386 /mount/pfad_zur_C_partition/



  • SSD in Gerät einbauen und DOS von der Platte booten (Floppy herausnehmen). Dann WinNT Installerfiles konfigurieren (Mit Enter immer weiter)

    C:\>CD I386

    C:\I386>WINNT /B /OX


  • SSD ausbauen, an Linuxmaschine hängen und folgende Daten ändern:
    In TXTSETUP.SIF im Wurzelverzeichnis im Abschnitt [SetupData] den Strichpunkt ';' vor Eintrag "; SetupSourceDevice = \device\harddisk0\partition1" entfernen.
    In WINNT.SIF in $WIN_NT$.~BT bzw. "$WIN_NT$ BOOT" den Parameter "msdosinitiated" von "1" auf "0" setzen

  • SSD in Gerät einbauen und hochfahren. WinNT Installer bootet. Durch den Installer durchhangeln, aber beim Setup dann unbedingt "Convert the partition to NTFS" wählen

  • Der Installer rebootet nachher, konvertiert die FAT Partition zu NTFS und dann erscheint der grafische NT Einrichtungsassistent. Dort das Gerät wieder ausschalten. Nun befindet sich eine sauber Formatierte NTFS Partition auf der SSD

  • Wenn das Gerät nur eine Partition hatte, dann SSD nochmal an den Linuxrechner hängen und alle Daten der C: Partition löschen und mit den originalen daten der HDD C: Partition befüllen

    $ cd /mount/pfad_zu_C_partition

    $ rm -rf *

    $ cp -R /mount/USBstick/fsp_daten/C /mount/pfad_zur_C_partition/



  • Unmounten, in Gerät einbauen und booten. Jetzt ist das alte originale NT des Geräteherstellers wieder auf der SSD, aber mit einer einwandfrei formatierten Partition. Bei Geräten mit einer Partition ist der Vorgang nun abgeschlossen. Es ist anzuraten, von der komplettierten SSD/CF Karte noch ein Image zu ziehen für den Fall dass die Karte beschädigt oder durch die Auslagerungsdatei durchgewetzt wird.

  • Für Geräte mit mehreren Partitionen (z.B. FSP): Das originale WinNT bootet, aber es wird sich über die fehlenden Partitionen beschweren. Im Falle des FSP über fehlende Auslagerungsdatei und die Software wird ihre Runtimepfade auf D: nicht finden. Daher mit Maus und Tastatur booten und die startende Software mit Taskmanager (Ctrl+Alt+Del) abwürgen.

  • Programm WINDISK.EXE ausführen und die zusätzlichen Partitionen anlegen und mit NTFS formatieren.

  • SSD nochmal an die Linuxmaschine hängen, alle Partitionen mounten, C: auf Fileebene mit rm leeren (wer weiß was sich in diversen Configs verstellt hat weil die anderen Partitionen nicht gefunden wurden) und dann alle Partitionen mit den Originalfiles beladen.

  • In Gerät einbauen und testweise Booten. Damit ist der Vorgang auch für Geräte mit mehrere Partitionen abgeschlossen. Die obere Anmerkung mit dem Image ziehen nach erfolgter Arbeit gilt natürlich hier auch.




Fazit:

  • SSD/HDD AUSSCHLIESSLICH mit Linux bearbeiten, niemals mit anderen Betriebssystemen in Kontakt bringen
  • Auch auf Linux nur die Kommandozeilentools verwenden und nicht aus Bequemlichkeit mit die GUI arbeiten
  • Bevor man irgendwas tut, immer als erstes von der HDD ein Vollbackup als 1:1 Image ziehen und auch die Daten der Partition(en) auf Fileebene kopieren. (Kann auch durch nachträgliches mounten des gezogenen Images über Loopback-Device erfolgen). Zum Image erzeugen ebenfalls nur "dd" verwenden


Diese Anleitung sollte für alle Plattformen aus der Zeit funktionieren. Wie bereits erwähnt, ist bei DOS (UPD, UPL) oder DOSRMX (FSEA, FSEB, ZVR, etc. mit lila Rand ums Display) mit einer einfachen, schnellen 1:1 Kopie des Images nicht mit Problemen zu Rechnen. Ebenso sollten wiederum etwas neuere Systeme ebenfalls keine Probleme verursachen. Es dürfte sich wirklich um eine Besonderheit der NTFS/HAL Implementierung dieser WinNT Generation handeln.

Es war, obgleich nach zwei Tagen erfolgloser Arbeit doch etwas frustrierend, am Ende eine interssante Aktion. Sowas ist mir im Zweifel aber immer noch lieber als einen Hardwarefehler in so einer Maschine suchen zu müssen. Es sei hier auf den FSIQ Reparaturbericht verwiesen, bei dem der Analyzer jedoch noch glimpflich davon kam.

Besonderer Dank geht an Michael Herzog OE6MHE für sein WinNT "Basisrezept".


(C) 2024 Ing. Christoph Baumann, OE2BCL

Alle Angaben ohne Gewähr.
Ich übernehme keine Verantwortung für die Richtigkeit der hier gezeigten Inhalte sowie für Schäden, Folgekosten o.ä.
durch die hier beschriebenen Informationen!
Arbeiten an elektrischen Geräten aller Art dürfen nur von sachkundigen Personen durchgeführt werden!
Impressum