Amiga-Festplatten mit Linux auslesen

Beim Aufräumen des Kellers fand ich meinen Amiga 500 und auch einen GVP Impact Series II SCSI-Hostadapter. Darin befand sich eine Fujitsu M2611SA Festplatte. Nach etwa 25 Jahren hatte ich sie völlig vergessen und fragte mich, was darauf gespeichert war. Lass mich dich also auf eine Abenteuerreise mitnehmen, wie man alte Amiga-Festplatten auf modernen Linux-Rechnern rettet.

Das Amiga-Ökosystem war schon immer sehr SCSI-freundlich. Commodore brach diese Tradition erst mit den letzten AGA-Modellen, bei denen sie aus Kostengründen auf den IDE-Bus umstiegen. Die Amiga-Community hat diese Änderung nie gebilligt, und viele Turbokarten, die für diese Rechner verkauft wurden, waren ebenfalls mit einem SCSI-Hostadapter ausgestattet. Der SCSI-Bus war viel schneller als der IDE-Bus. Außerdem konnte ein einziges Flachbandkabel bis zu sieben SCSI-Geräte verbinden, während der IDE-Bus nur zwei Geräte zuließ.

Heute erweist sich diese SCSI-Affinität jedoch als Problem. SCSI war bei Consumer-PCs nie ein Thema, daher gibt es keine SCSI-zu-USB-Adapter auf dem Markt (ich wünschte, es gäbe welche), und SCSI-Karten für den PCIe-Bus sind sehr teuer. Ich habe immer noch eine Adaptec SCSI-Karte in meinem Schrank, die ich vor vielen Jahren gekauft habe, aber sie ist für den alten PCI-Bus. Zum Glück gibt es PCI-zu-PCIe-Adapter auf dem Markt, sodass ich diese alte Karte in meinem Computer wiederverwenden konnte. Der Kartenstapel sieht abenteuerlich aus, aber für ein paar Stunden Betrieb zur Datensicherung reicht es.

Die große Frage ist: Kann ein moderner Linux-Rechner überhaupt Amiga-formatierte Festplatten lesen?

Amiga-Festplatten mounten

Ja, kann er. Es scheint, dass es unter den Linux-Kernel-Entwicklern viele Amiga-Fans gibt. Der Amiga verwendet ein anderes Partitionstabellenschema als PCs, aber wenn du Glück hast, erkennt dein Linux die Amiga-Partitionen trotzdem und bietet sie z. B. als /dev/sdg1 an. Dann musst du die Partition nur noch über mount einhängen.

Bei Fedora hat es allerdings nicht funktioniert, also musste ich etwas mehr tippen. Zuerst musste ich die Offsets der einzelnen Partitionen herausfinden. Dafür kann GNU Parted verwendet werden, da es in der Lage ist, Amiga-Partitionstabellen zu dekodieren:

# parted /dev/sdg
GNU Parted 3.3
Using /dev/sdg
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) u
Unit?  [compact]? b
(parted) p
Model: FUJITSU M2611S (scsi)
Disk /dev/sdg: 45078528B
Sector size (logical/physical): 512B/512B
Partition Table: amiga
Disk Flags:

Number  Start   End        Size       File system  Name  Flags
 1      52224B  45078015B  45025792B  affs1        DH0   boot

(parted) q

Es gibt also nur eine Partition auf der Festplatte. Sie beginnt beim Offset 52224 und ist in Amiga FFS formatiert. Zum Glück können die meisten Linux-Distributionen dieses Dateisystem standardmäßig mounten. Das Start-Offset wird benötigt, um die Partition einzuhängen. Ich mounte sie auch read-only (schreibgeschützt), um sicherzustellen, dass ich meine kostbaren alten Daten nicht versehentlich ändere oder lösche.

mount -o ro,offset=52224 -t affs /dev/sdg /mnt/

Et voilà:

# ll /mnt/
drwx------. 1 root root    0 Apr 16  1997 C
drwx------. 1 root root    0 Jun 11  1994 Devs
-rw-------. 1 root root 1233 Apr 16  1997 Devs.info
drwx------. 1 root root    0 Apr 16  1997 Fonts
drwx------. 1 root root    0 Apr 16  1997 L
drwx------. 1 root root    0 Apr 16  1997 Libs
drwx------. 1 root root    0 Feb 27  1992 Locale
drwx------. 1 root root    0 Apr 16  1997 Prefs
-rw-------. 1 root root 1238 Apr 16  1997 Prefs.info
drwx------. 1 root root    0 Apr 16  1997 S
drwx------. 1 root root    0 Apr 16  1997 Storage
-rw-------. 1 root root 1233 Apr 16  1997 Storage.info
drwx------. 1 root root    0 Jan  4  1992 System
-rw-------. 1 root root 1233 Apr 16  1997 System.info
drwx------. 1 root root    0 Feb 27  1992 Tools
-rw-------. 1 root root 1233 Apr 16  1997 Tools.info
drwx------. 1 root root    0 Jan  4  1992 Trashcan
-rw-------. 1 root root 1588 Apr 16  1997 Trashcan.info
drwx------. 1 root root    0 Feb  3  1992 Utilities
-rw-------. 1 root root 1233 Apr 16  1997 Utilities.info
drwx------. 1 root root    0 Apr 16  1997 WBStartup
-rw-------. 1 root root 1233 Apr 16  1997 WBStartup.info

Festplatten-Dumps

Da alte Festplatten ziemlich laut sind, könnte es eine gute Idee sein, zuerst den gesamten Inhalt zu dumpen und die Partitionen später zu retten. dd ist das klassische Tool zum Erstellen eines Dumps:

dd if=/dev/sdg of=amiga-hd.dd bs=512 status=progress

Später wird ein Loop-Device eine echte Festplatte simulieren:

losetup /dev/loop1 amiga-hd.dd

/dev/loop1 kann nun für parted und für mount verwendet werden.

Um das Loop-Device wieder zu entfernen:

losetup -d /dev/loop1

Smart File System

Zu Amiga-Zeiten war das Smart File System als Alternative zum ursprünglichen Fast File System sehr beliebt. Es war Freeware, es war viel schneller als FFS und es hatte sogar eine zustandslose Defragmentierung, die im Hintergrund lief.

Der Linux-Kernel unterstützt SFS nicht standardmäßig. Marek Szyprowski hat jedoch 2003 ein Kernelmodul implementiert, das (leider) nie das experimentelle Stadium verlassen hat und somit nie seinen Weg in die offizielle Reihe der unterstützten Linux-Dateisysteme gefunden hat.

Um es zu verwenden, musst du zuerst ein Linux mit einem 2.6.27-Kernel einrichten, zum Beispiel Fedora 10. Lade danach den Kernel-Patch herunter und kompiliere ihn zu einem Kernelmodul. Wenn du das geschafft hast, kannst du auch Amiga-SFS-Partitionen mounten. Ich konnte auf diese Weise alle Dateien von einer SFS-Partition wiederherstellen, obwohl es nicht viel Spaß gemacht hat.

PS: Leider enthielt die Festplatte, die ich gefunden habe, keine vergessenen Quellcodes oder andere Geheimnisse. Es war nur eine Standard-Amiga Workbench darauf und eine Kopie des Spiels Scorched Tanks.