[archimedes] Re: Festplatten Bloecke direkt

  • From: Steffen Huber <steffen@xxxxxxxxxxxx>
  • To: archimedes@xxxxxxxxxxxxx
  • Date: Thu, 24 Oct 2019 12:56:52 +0200 (CEST)

Hallo Markus,

Markus Huber <info@xxxxxxxxxxxxxx> hat am 24. Oktober 2019 um 09:02 
geschrieben:

Hallo,
[snip]
Jetzt die Fragen: Welches Programm gibt es schon, daß mir alle Blöcke
der Festplatte gibt, oder nach einer Regel absucht und nur die Blöcke
dann speichert die ich möchte bzw. die der Regel entsprechen? Speichern
natürlich auf einer anderen Festplatte. Welches Programm könnte da
hilfreich sein? Es würde ja auch genügen die Blöcke zu finden. Das sind
vielleicht 100... denn auch die nicht gelöschten Strong Help Dateien
würden auf dem Weg ja "gerettet" werden.

Erste Aktion: Image der Platte ziehen. Geht am einfachsten mit Linux
oder Windows mit geeigneter Software (dd...). Nur zur Sicherheit.

Einfachste Möglichkeit dann: DiscKnight hat die Funktion, "leere Bereiche"
der Festplatte als Dateien zu speichern. Jedenfalls erinnere ich mich
daran..."Convert Free Space into Files" oder so hieß das.

Zweiteinfachste Möglichkeit: per Filecore die Sektoren direkt auslesen.
Habe ich neulich als Fingerübung für Floppies programmiert (ADFS::0.$
als Datei imagen):
REM > DiscRead
ON ERROR REPORT:PRINT " at line ";ERL:END

outfile$="HostFS::HostFS.$.Tools01/adf"
drive% = 0
bytes_per_sector% = 1024
number_of_heads% = 2
sectors_per_track% = 5
number_of_tracks% = 80

DIM data% bytes_per_sector%

outfilehandle% = OPENOUT outfile$

SYS"Hourglass_On"
SYS"Hourglass_Percentage",0
FOR track%=0 TO 79
  FOR heads%=0 TO 1
    FOR sector%=0 TO 4
      operation% = %00000001
      disc_address% = (drive% << 29) + ((track% * number_of_heads% + heads%) * 
sectors_per_track% + sector%) * bytes_per_sector%
      SYS"ADFS_DiscOp",,operation%,disc_address%,data%,bytes_per_sector%
      FOR i%=0 TO bytes_per_sector%-1
        BPUT#outfilehandle%,?(data% + i%)
      NEXT i%
      SYS"Hourglass_Percentage",(track% * 100 / 80)
    NEXT sector%
  NEXT heads%
NEXT track%
CLOSE#outfilehandle%
SYS"Hourglass_Off"
END

Bei einer Festplatte ist die Sketorgröße 512 Bytes, und ich glaube die
"disc address" ist einfach von 0 an durchnummeriert, man braucht also
die Umrechnung Kopf/Spur/Sektor nicht.

Dritteinfachste Möglichkeit: direkter Zugriff auf die Sektoren per
IDE oder SCSI (falls IDE-Platte: per USB-IDE-Adapter an RPi klemmen,
dann ist es aus RISC OS-Sicht SCSI) Block-Lese-Kommandos. IDE direkt
habe ich lange nicht mehr gemacht, müsste ich selbst nach Code suchen.
SCSI könnte ich direkt :-)

Gruß
Steffen

-- 
Steffen Huber LambdaComm System – Welcome to Trollinger Country
steffen@xxxxxxxxxxxx
Private homepage http://www.huber-net.de/
RISC OS Blog http://riscosblog.huber-net.de/

Other related posts: