(click for English)
hawk.ro / stories / Citirea harddiskului ST-225 - partea a doua

Citirea harddiskului ST-225 - partea a doua

Click pentru prima parte

Programul (rawhdd)

Desi poate exista computere care pot:

eu nu am asa ceva. Insa, in cele mai multe cazuri harddiskul poate fi citit prin apeluri BIOS sub DOS. Pentru asta am scris "rawhdd".

Disponibil aici. Trebuie compilat cu Turbo C (sub DOS), disponibil de la Embarcadero (necesita inregistrare gratuita).

Utilizare:

rawhdd [-d=disc] [-c=cilindri] [-h=capete] [-s=sectoare] <fis_dest>
Singurul parametru necesar este fis_dest - fisierul destinatie. Denumirea acestuia trebuie sa respecte limitarea DOS "8.3" - nume de maxim 8 caractere si maxim 3 caractere extensie, fara spatii. Parametrii optionali sunt:

Atentie: Fisierul destinatie va fi suprascris in cazul in care exista. De asemenea, rawhdd creaza (sau adauga la) un fisier numit rawhdd.log in care apare un jurnal textual al operatiunilor de citire (similar cu ce apare pe ecran).

Inainte de a incepe operatiunile, rawhdd va prezenta geometria harddiskului (cilindri, capete, sectoare) - detectata sau introdusa prin parametri in linia de comanda, precum si fisierul destinatie si ofera posibilitatea de a renunta.

Pentru citire

Se presupune ca: harddiskul poate fi citit prin BIOS iar computerul este capabil sa booteze DOS si sa fie conectat la o retea locala. De asemenea se presupune ca cititorul este familiarizat cu mediul DOS.
Eu prefer un server Novell (puterea obisnuintei) dar este posibila utilizarea unui sistem Linux ca server de fisiere utilizand EtherDFS. Pe client acesta necesita doar packet driver si un mic program TSR. Are totusi o mica problema: se blocheaza la unele operatiuni (de pilda cand se ruleaza TCC - compilatorul Turbo C). Totusi, rawhdd compilat in prealabil functionaza fara probleme.

Executabilul rawhdd poate fi copiat fie pe volumul (sistemul de fisiere) partajat (Novell, DFS sau orice altceva) sau pe discheta. Se booteaza computerul de pe disketa si se mapeaza serverul. Desigur, volumul mapat trebuie sa aiba destul spatiu liber pentru a primi imaginea harddiskului, dar intrucat vorbim de harddiskuri MFM, aceasta nu ar trebui sa reprezinte o problema.

Se trece pe volumul destinatie ("pe retea") si se ruleaza rawhdd.

H:\HOME\HAWK\WORK\C>rawhdd test.hdd
HDD Imaging program. Checking HDD...
WARNING: BIOS table cyls: 615; INT 13h,8 cyls: 613
Will read: 615 cylinders, 4 heads, 17 sectors
Will write to: test.hdd
Possible geometry mismatch (see warning above)
Proceed at your own risk!
Press ENTER to continue or any other key to abort
ENTER
CH 0,1 OK
CH 0,2 OK
CH 0,3 OK
CH 1,0 OK
CH 1,1 OK
CH 1,2 OK
CH 1,3 OK
CH 2,0 OK
......
CH 613,2 OK
CH 613,3 OK
CH 614,0 OK
CH 614,1 OK
CH 614,2 OK
CH 614,3 OK
Done.

H:\HOME\HAWK\WORK\C>

Exemplu de rulare sub qemu (conectat la server Novell)

Se poate intampla ca tabela pentru parametrii discului (DPT) din memoria computerului si apelul functiei BIOS INT 13h,8 sa raporteze geometrii diferite ale discului. Programul foloseste preferential valorile din DPT (si afiseaza o atentionare), dar aceste valori pot fi modificate folosind parametrii din linia de comanda. Imi amintesc ca am citit undeva (dar nu mai stiu unde) ca o diferenta de 1 cilindru (sau, mai rar, 2) intre aceste valori este destul de probabila si ca in acest caz valoarea din DPT este corecta. Exact asta s-a intamplat aici: pe computerul real diferenta e doar 1 cilindru si rawhdd nu o raporteaza, dar foloseste valoarea din DPT. Sub qemu, diferenta e mai mare (2 cilindri), de unde si atentionarea.

Leagana-l!

Un scurt film arata operatiunea de citire si leganarea pomenita in prima parte. Asteriscurile de pe ecran reprezinta erori (urmate de reincercari) de citire, punctele reprezinta sectoare citite, CH n,m OK inseamna ca pista n (sub capul m) a fost citita dintr-o bucata, fara erori.

Click pentru a vedea clipul la vimeo

Publicat 2019-03-09 de Mihai Gaitos - contacthawk.ro