WBFS-Wartung

Aus Wiiki
Wechseln zu: Navigation, Suche

Dieser Artikel befasst sich mit der Wartung und der Reparatur von WBFS-Partitionen.



Überblick


Eine WBFS-Partition ist ein logisches Laufwerk, welches als WBFS formatiert wurde. Da kein Betriebssystem (Windows, Linux, OS X,...) diese Art des Dateisystems kennt, stellen die Betriebssysteme auch keine Tools zur Wartung bereit. Unter Wartung versteht man u.a.:

Formatierung
Fast alle USB-Loader und WBFS-Manager können WBFS-Partitionen erstellen. Dabei wird der Inhalt einer Partition überschrieben und geht damit unwiderruflich verloren. Überschreibt ein WBFS-Tool nur den Header, dann besteht die Chance, Spiele wieder herzustellen.
Disk-Check
Ein Disk-Check wird von einigen Tools beherrscht. Die meisten überprüfen aber nur die Free-Blocks-Table, in der die freien Blocks markiert sind. Nur wenige Tools können auch Überlappungen feststellen.
Wiederherstellung von gelöschten Dateien
Die Wiederherstellung ist im Prinzip relativ einfach möglich. Jedoch sollten die wiederhergestellten Spiele noch verifiziert werden. (siehe nächsten Punkt).
Verifizierung von Spielen
Bei der Verifizierung werden die Prüfsummern, die sich auf jeder DVD befinden, mit berechneten Prüfsummern verglichen. So kann man die Unversehrtheit des eigentlichen Spieles bestimmen.
Defragmentierung
Spiele auf WBFS-Partitionen gelten aufgrund der Blöckgröße zwischen 2 und 16 MiB immer als defragmentiert. Daher ist auch kein Defragmentier-Tool notwendig (siehe »WBFS: Fragmentierung«).

Die folgenden Anleitungen basieren alle auf Wiimms ISO Tools, da sie die einzigen sind, die WBFS-Partitionen reparieren und gelöschte Spiele wiederherstellen können. Die Tools werden über die Kommandozeile[1] ausgeführt. Es existieren auch graphische Oberflächen[2] (GUI) für die Tools, mit denen sich einige der folgenden Kommandos ausführen lassen.

Analyse von Platten

Das Tool wwt aus Wiimms ISO Tools kennt das Kommando ANALYZE[3]. Dieses untersucht alle Festplatten auf WBFS-Partitionen. Dabei wird der WBFS-Header und auch Reste von Spielen gesucht. Daher hilft dieses Kommando auf der Suche nach funktionierenden und ehemaligen WBFS-Partitionen.

Beispiel einer Ausgabe
# wwt analyse --long

ANALYZE /dev/sda

ANALYZE /dev/sda1

ANALYZE /dev/sdc

ANALYZE /dev/sdc1

ANALYZE /dev/sdc2
------------------------------------------------------------------------------------
                    HD SECTORS  WBFS SECTORS   DISCS       (all values in hex)
           WBFS     total  sec  total    sec  max inode
NAME    magic vrs     num size   num    size  num size  ADDITIONAL INFORMATION
------------------------------------------------------------------------------------
HEADER:    ok  1 2e93bb82  200  ba4e  800000  1f4  a00  WBFS header scanning
INODE-TIM: ok  1 2e93bb82  200  ba4e  800000  1f4  a00  2013-06-24 16:01:33 n=500
INODE-CNT: ok  1  5d27770 1000  ba4e  800000  7fd 1000  2011-01-25 20:37:07 n=1733
DISCS:      -  0 2e93bb82  200  ba4e  800000  1f4  a00  67 disc header found
CALC  512:  -  1 2e93bb82  200  ba4e  800000  1f4  a00  calculation of init function
CALC 1024:  -  1 1749ddc1  400  ba4e  800000  3f4  c00   " but sector-size=1024
CALC 2048:  -  1  ba4eee0  800  ba4e  800000  7f4 1000   " but sector-size=2048
CALC 4096:  -  1  5d27770 1000  ba4e  800000  7fd 1000   " but sector-size=4096
------------------------------------------------------------------------------------
Einige Platten wurden entdeckt, und nur auf /dev/sdc2 (Linux Schreibweise von Platten) wurden WBFS-Daten gefunden. Es wurden 1 Header und 500 definierte WBFS-Inodes gefunden. Dazu wurden noch 1733 Fragmente gefunden und 67 echte Spielheader. Die CALC-Anzeigen werden nur wegen der Option --long ausgegeben und geben die maximalen Werte an, die man bei den 4 verschiedenen HD-Sektorgrößen erhalten würde.

Wichtig ist aber, dass /dev/sdc2 offensichtlich eine WBFS-Partition ist oder war und damit Objekt weiterer Reparatur-Versuche. Da sich die Gerätekennungen ändern, wenn man USB-Geräte aktiviert oder entfernt, sollte nach jeder Änderung das Kommando wwt ANALYZE aufgerufen werden, um mit der korrekten Partition weiterzuarbeiten. Anderenfalls besteht die Gefahr, dass eine falsche Partition bearbeitet. wird.

Formatierung mit Wiederherstellung

Der erste HD-Sektor mit üblicherweise 512 Bytes (vergleiche »WBFS: Technisches«) hat den folgenden Aufbau:

Magic
4 Bytes mit den Zeichen "WBFS" zur Erkennung
Geometrie
8 Bytes mit Angaben diverser Größen.
Slot-Tabelle
500 Bytes, die festlegen, ob ein definierter Speicherplatz durch ein Spiel belegt ist.

Nach diesen ersten 512 Bytes folgt eine Liste mit bis zu 500 Element, den sogenannten Slots. Für eine Spiel werden in jedem dieser Slots eine Kopie der ersten 128 Bytes der DVD sowie Zeitstempel und eine Tabelle mit den zugewiesenen Blöcken abgelegt.

Bei der Formatierung einer Partition als WBFS werden üblicherweise 2 Verfahren verwendet. Die einfache Methode beschreibt einfach den oben genannten ersten HD-Sektor mit den neuen Daten und löscht die Slot-Tabelle. Da sich die Geometrie-Daten aus der Partitionsgröße berechnen, sind die Daten praktisch immer identisch, egal wie häufig die Partition formatiert wird. Bei einer versehentlichen Formatierung durch diese Art lassen sich die Spiele wieder rekonstruieren. Dazu werden dann sie Slots mit analysiert und u.a. mit den ersten 128 Bytes der Spielekopie verglichen. Mehr Details folgen im nächsten Abschnitt.

Bei der zweiten Methode wird nicht nur der erste HD_Sektor überschrieben, sondern sämtliche Verwaltungsdaten. Bei einer so formatierten Partition ist das Wiederherstellen von gelöschten Spielen nicht mehr möglich.

Eine Formatierung ist übrigens nur dann notwendig, wenn der WBFS-Header überschrieben wurde und die Partition nicht mehr als WBFS-Partition erkannt wird.

Standard-Formatierung

Das Kommando für das Formatieren[4] mit Wiimms ISO Tools lautet:

wwt format /dev/sd98

Die Bezeichnung /dev/sd98 muss durch die richtige Bezeichnung ersetzt werden. Da die Formatierung eine bereits bestehende Datenpartition (z.B. FAT oder NTFS) komplett zerstört, zeigt die obige Kommandozeile sicherheitshalber nur an, was sie tun würde. Erst durch das hinzufügen von ---force wird die Formatierung tatsächlich ausgeführt:

wwt format /dev/sd98 --force

Diesen Befehl sollte man aber erst ausführen, wenn man sich ganz sicher ist.

Formatierung mit Reparatur

Der Reparatur-Modus wird aktiviert, indem der Kommandozeile die Option --recover zugefügt wird. Auch hier wird der Befehl erst durch die Option --force tatsächlich ausgeführt:

wwt format /dev/sd98 --force --recover

Die Ausgabe könnte z.B. so aussehen:

ANALYZE BLOCK DEVICE /dev/sdc2
FORMAT BLOCK DEVICE /dev/sdc2 [373 GiB, hss=512, wss=8 MiB]
 * 4 discs recoverd
   - slot #000 [SMNP01] New Super Mario Bros. Wii
   - slot #001 [RTYP01] Wii Schach
   - slot #005 [R64P01] Wii Music
   - slot #009 [RHAP01] Wii Play
 * Scan 4 discs in 500 slots.
 * Check for disc block errors.
 * Check free blocks table.

 * Summary of WBFS check: no errors found.

** 1 file formatted.

Wird eine WBFS-Partition als solche erkannt und ist noch lesbar, dann ist es besser, keine Formatierung vorzunehmen, sondern nur zu reparieren.

Gelöschte Spiele wiederherstellen

Das Tool wwt aus Wiimms ISO Tools kennt das Kommando RECOVER[5], welches gelöschte Spiele wiederherstellt:

wwt recover --auto

Die Option --auto gibt an, dass das Kommando selbständig nach WBFS-Partitionen suchen soll und das Kommando auf alle gefundenen WBFS-Partitionen anwenden soll. Möchte nur Spiele einer bestimmtem WBFS-Partition wiederherstelln, dann muss dann muss man die Gerätedatei direkt angeben, z.B.:

wwt recover /dev/sdc2

Das Kommando sucht im Management-Bereich nach WBFS-Inodes mit akzeptablen Daten. Dann kontrolliert es die Block-Liste auf gültige Blöcke. Diese Blöcke dürfen auch nicht von anderen Spielen belegt sein. Die ersten 128 Bytes des ersten Blocks müssen als 1:1 Kopie im WBFS-Inode vorliegen. Danach werden noch ein paar Daten, die sich auf jeder Wii-DVD befinden, kontrolliert. Schlägt keiner dieser Tests fehl, dann wird das Spiele wiederhergestellt.

Ein derartig wiederhergestelltes Spiel muss aber nicht zwangsläufig spielfähig sein. Es kann durchaus sein, dass auch Datenblöcke überschrieben wurden und somit falsche Daten enthalten. Hier kann eine Verifizierung der Daten helfen (siehe nächsten Abschnitt).

Spiele überprüfen

Ein Großteil der Daten eines Wii-Images ist verschlüsselt, mit Prüfsummen abgesichert und signiert (Details: »Wii-Image: Verschlüsselung und Prüfsummen«). Die Prüfsummen selbst sind auf dem Image abgelegt. Berechnet man die Prüfsummen neu und vergleicht sie mit den gespeicherten Prüfsummen, so kann man Block für Block überprüfen, ob die Daten korrekt sind. Da jedes Spiel anders verschlüsselt ist, können auch keine Verwechslungen mit anderen Spielen geschehen.

GameCube-Spiele sind übrigens weder verschlüsselt noch signiert. Daher können die auch nicht auf diese Art und Weise verifiziert werden.

Das Tool wwt aus Wiimms ISO Tools kennt das Kommando VERIFY[6], welches genau den gerade beschriebenen Test macht:

wwt verify --auto

Die Option --auto gibt an, dass das Kommando selbständig nach WBFS-Partitionen suchen soll und das Kommando auf alle gefundenen WBFS-Partitionen anwenden soll. Möchte nur Spiele einer bestimmtem WBFS-Partition wiederherstellen, dann muss dann muss man die Gerätedatei direkt via Option -p angeben:

wwt verify -p /dev/sdc2

Beide Kommandos überprüfen die Spiele. Da jedes Spiel entschlüsselt und jede Prüfsumme berechnet und verglichen werden muss, benötigt der Vorgang sehr viel Zeit.

Es besteht auch die Möglichkeit, einzelne Spiele zu prüfen, indem man die ID6 auf der Kommandozeile angibt:

wwt verify --auto RMCP01 RUUP01

Möchte man, dass defekte Spiele automatisch gelöscht werden, dann ergänzt man die Option --remove:

wwt verify --auto --remove

WBFS-Dateien und andere Images können übrigens mit dem wit Kommando VERIFY[7] überprüft werden:

wit verify a.wbfs b.wdf c.iso

Fußnoten

  1. Wiimms ISO Tools: Command Line
  2. Wiimms ISO Tools: graphische Oberflächen (GUI)
  3. Wiimms ISO Tools: Kommando wwt ANALYZE
  4. Wiimms ISO Tools: Kommando wwt FORMAT
  5. Wiimms ISO Tools: Kommando wwt RECOVER
  6. Wiimms ISO Tools: Kommando wwt VERIFY
  7. Wiimms ISO Tools: Kommando wit VERIFY