【成功】X68KのHD・MOサルベージ作戦の記録

WS2016-02-07_10_45_44

とりあえず、HDDのイメージ化に成功したので成功した方法の結論から先に書いておく。

一応、以下の記事の続きです。

成功した方法

結論から言ってしまうと、CygwinのddコマンドでHDDをイメージ化することができた。

mount -f //.physicaldrive2 /dev/xyz
dd if=/dev/xyz of=x68.img

途中でエラーになった。

kumacchi@umbrella ~
$ dd if=/dev/xyz of=X68.img
dd: `/dev/xyz’ の読み込みエラー: Input/output error
153474+0 レコード入力
153474+0 レコード出力
78578688 バイト (79 MB) コピーされました、 266.732 秒、 295 kB/秒

kumacchi@umbrella ~

1セクターのサイズは512byteだったので、出力された78578688byteから次の様にセクターを求める。

78578688/512 =153474 sector

$ dd bs=512 skip=153475 if=/dev/xyz of=X68-2-2.img
dd: `/dev/xyz’ の読み込みエラー: Invalid argument
519007+0 レコード入力
519007+0 レコード出力
265731584 バイト (266 MB) コピーされました、 884.217 秒、 301 kB/秒

kumacchi@umbrella ~

実際153474からバックアップするとエラーになるので1プラスして153475からバックアップするとうまく行った。 Invalid agumentが出ているのが気になるがそれでも一応出来たようだ。

copy /b X68.img + zero512.bin + X68-2-2.img x68k.hds

結果できたファイルをコマンドプロンプトからcopyコマンドで結合した。読み込めずにスキップした512byteについては、0で埋めた512byteのバイナリファイルをバイナリエディタで作成した。zero512.binというのがそれである。

ファイルなんか作らなくてもコマンドでできそうな気がするが、わからなかったのでべたなやり方でやった。

これを、X68000エミュレータのXM6でSCSIドライブとして起動した。やり方を忘れていたので若干苦労した。

イメージ化についてはこれだけである。ここにたどり着くのにかなり苦労した。

次は、MOのイメージ化だ・・・。MOドライブが届いたら挑戦する。

HDDイメージ化の詳細

ここからはX68000のハードディスクドライブのイメージ化への道のりを詳細に記していく。要点は前の項目でまとめたので、ここからは記録なので必要ない人は読み飛ばしてOK。

前日、HDDのイメージ化に失敗したと書いた。しかし諦めきれずに、HDDのサルベージ業者のサイトを見たりしていたがX68KのHDDを復旧してくれそうな感じではない。それに高そう。諦めかけていたが、とりあえずMOだけでも復旧しようとMOドライブの中古ををamazonで購入した。届くのを待っている。

で、なんとかできないかと考えたりいろいろ調べていたら、デバイスは認識してるんだしGetDriveでもしかして吸えるんじゃないかと思った。昔GetDriveについては調べていたが、今回はまだ試していなかった。linuxでddすることを中心に考えていたためだ。linuxでddできなければきっとGetDriveでもダメだろうという考えからだ。

参考:GetDrive

まあ、一応やってみようと、また、荷物をひっくり返し、HDD(SEAGATE ST3390N)を引っ張りだし、SCSIボードを再度搭載し、フラットケーブルで接続。Windows XPを起動した。

で、getdriveの説明書を見ながらやってみた。これでダメなら諦めようと・・。

getdrive 0 4000 x68k.img

すると、驚いたことにイメージ化が始まった。

一瞬やったー!思ったが大きな間違いだった。

作成されたイメージファイルは3GB超だったwww。HDDは340MBしか容量ないのに。

getdriveの説明書の使い方例に一部間違いがあり、2000で200MBという記載があったために間違えたが、10で10MBとの記載もあり正誤性が無いがこちらが正しいのだろう。

で、340MB以上のイメージができたので装置番号の指定も間違っていることが判明。やっぱいダメかと思う。

一応、装置番号は接続順らしいので、ディスクの管理で0から数えて2番めなので2としてやってみた。

getdrive 2 4000 x68k.img

すると、SCSIのハードディスクが懐かしいガチャガチャ音とともに駆動しイメージ化が始まった。

「まじか!!!」

マジで感動して興奮した。

流石昔のHDD、さっきの0番の装置より読み出し速度が遅い。

たまに引っかかりながらも吸い出しは続く。1MBずつ読み出されイメージ化が進んでいく。

このまま、340MB正常にイメージ化されることを心底祈りながら様子を見守る。

が、しかし、74MBあたりでガチャガチャ音がして、finishedした。

何度かトライしたが、同じ所で停止した。

どうやらここまでの様だ。

DiskExplorerで中身を覗いてみる。確かにHuman68Kだ。読み出せている。感動した。20年近く前に見ることができなくなったものを再び目にすることができた。

参考:DiskExplorer

しかし、この先もなんとか読み出したい。なんとか方法はないかと調べる。

GetDriveにはスキップなどのオプションは全く無いようだ。良いツールなのにもったいないね。

不良セクターだと思われたのでこれを修復できないかと考えた。本当は参考サイトのようにlinuxでddコマンドで吸い出して不良セクタはスキップできるのだがこれは失敗したので無理だ。

参考:X68kのSCSIハードディスクを吸い出した – What will be done tomorrow?

HDDの不良セクター修復ツールを探し始める。最初はseagateの純正のツール「SeaTools for Windows」を試した。

WS2016-02-05_14_30_04

デバイスマネージャは一応HDDが認識されている。

 

WS2016-02-06_16_20_02

参考:SeaTools | Seagate

WS2016-02-06_16_19_43

SeaTools for Windowsで一応ハードディスクの情報を表示しておいた。これが後でセクターサイズを調べる時役に立った。

WS2016-02-06_16_22_46

チェックは失敗した。

WS2016-02-06_16_27_14

修復を試みてみた。

WS2016-02-06_16_30_44

修復は失敗した。詳細はこんな感じ。純正ツールでも修復できない。。これは詰んだのか?と思った。

他の修復ツールといえば、HDD regeneratorとHDAT2がが有名。これらについて調べてみる。HDD regeneratorは読めるまで何度もトライして読めたらその情報で上書きしてデータの修復を試みる本当に修復するツール。(なんか昔のディスクコピーツールを思い出す。)

HDAT2は不良セクターを正常なセクターに置き換えるのでデータは消えてしまう。

そうなるとやっぱりHDD Regeneratorを使いたくなるのが人情というものだが、無料版では1セクターしか修復できない。

とりあえずHDAT2を試すことにする。公式からisoイメージをダウンロードしてCDに焼いてそれで起動してみた。ちゃんとSCSIドライバも選べて実際ちゃんと認識した。

テストしてみるとものすごくたくさんエラーが出る。エラーの時になるbeep音が五月蝿い。CTRL+Sでとめることができる。音を止めるとチェック速度も早くなる。とにかく全体的に不良セクターだということはわかった。

しかしこれでは、修復したら何も残らないではないかと、そう考えた。ヘタしたらHDDが再起不能になってしまうかもしれない。ddさえ使えれば・・・。

とりあえず、今度は、HDD Regeneratorをためしてみることにする。いろんなサイトを見るとブートFDやブートCDを作ってるので同じようにブートCDを作成してCDカラーブートしてみたが、HDD RegeneratorはCDブートからのSCSIデバイスに対応してないらしい。

検索してみるとFAQにSCSIデバイスに対応しているとあるのだが・・・。これらを調べまくったりいろいろやってるうちに時間は過ぎていく。

もしかしたら、HDAT2をCDブートした後にHDD Regenerator(以下HDDR)のCDに差し替えてコマンドラインから起動すればSCSIデバイスを認識するんじゃないかと思いやってみたが、HDDRはなんだか特殊なことをやっていたCDの中身は空に見えるようになっている。改造対策だろう。

そういうわけで失敗。疲れ果てて眠りにつく。なんとかできないと考えながら・・・。

参考:HDAT2/CBL Hard Disk Repair Utility

参考:「HDAT2」の使い方 – PCと解

転機

夜中に眠りから覚めた。また、どうにかできないものかとコーヒーを飲みながら考える。

WS2016-02-07_05_23_42

HDDRの起動画面に「Click here to repair physical bad sectors on damaged drive srface directly under Windows [XP /Vista / 7 / 8] とある。まあ、クリックしてみた。

WS2016-02-07_05_24_01

なんだかよくわからないけど、ちゃんとST3390Nを認識してるしなんかできるんじゃね? 「Stert Process」とかいきなり修復が始まりそうで何か危険なものを感じるけど・・・。となかなか「Start Process」を押せなかった。何度も「Return Back」や「Exit」を押した。

しかし、もうどうしようもないので、先に進んでみた。

WS2016-02-07_05_24_15

なんかPrescanとかある、どっかで、PrescanもNormalも変わらないと書いてあったようなのを見た気がしたのが脳裏を横切る。で1でPrescanしてみた。

WS2016-02-06_19_35_36

プレスキャンしてみたところ、HDDRではごく一部だけbad sectorであることがわかった。HDAT2ではかなりの数のバッドセクターが検出されていたがHDDRではバッドセクターは一部だけであった。その代わりほとんど「D」delays detectedであるが、HDAT2ではバッドセクターであるが、HDDRではバッドセクターとまではみなさないらしい。

良い状態ではないが。

しかしどこにもリペアがないなーやっぱりCDでブートしないとダメなのかなーとまたドツボにはまって検索したりしてCDブートでSCSIを認識させる方法がないかを探しまくるが見つからない。

見落としていた。

実はNormal Scanの方を選択すればリペアの選択肢があったのだ。いろんなサイトにFDやCDブートしか書いてないのでそれに惑わされていた。

WIndows上からScanとRepairがOSのドライブでなければできるらしい。

何の気なしにNormal Scanを選んだときに気がついた。

というか、2.Normal Scan <with / without repair>を良く見たときに、あれwithとwithout repairがあるじゃんと思ったわけである。英語がよくわからないのでしょうがない。

WS2016-02-07_05_21_49

HDDRのVersion Info

WS2016-02-07_05_24_15

最初の画面から選ぶといろいろ表示できる。

WS2016-02-06_19_36_47

4のShow Statisticsを選ぶと表示されるHDDの状態。ほとんど「D」と状態は良くないが「B」のbad sectorsは少ない。この時点では1個なのか複数あるのかわからなかった。

WS2016-02-07_05_25_14

Normal Scanを選んで進んだ画面から1のScan and repairを選択して修復を試みようかと思ったが、思い悩む。

WS2016-02-07_05_30_53

もどって、3.List all sectorsを選ぶとすべてのセクターの情報がリストされることがわかった。SECTOR 153416のあたりで幾つかのバッドセクターがあると表示されている。

意を決してScan and repairをやってみる。

WS2016-02-07_05_35_22

WS2016-02-07_05_36_15

例の場所でガシガシHDDから音がして修復を試みているようだが、上のような無情な画面が表示される。

「The process is terminated because of limitation of the demo version」

「The hard drive contains RECOVERABLE bad sectors」

「To complete the process, take advantage of the full version」

「つまり、リカバリ可能なバッドセクターがあるけど、続きはお金を払ってね!!」ということらしい。

WS2016-02-07_05_37_18

「B」は「R」に変わってリペアされたらしい。

製品版を買おうかと思ったが1万円以上する。これには悩む。本当に修復できるのなら吝かではないが、もしも復旧できなかったらドブに捨てることになる。

一応1セクターはリペアできたようなのでGetDriveしてみたがやっぱり同じ場所で停止した。リペアできてないじゃん!!いや他にもバッドセクターがあるのかもしれない。そう思った。

 

FDブートなら再起動で1セクターずつリカバリできるらしいが、SCSIを認識しないのでそれはむり・・・うーん。なかなか、うまくいかないものだ。また、SCSIをCDブートから認識させる方法を探すたびに出たりする。

再度リカバリしようとしても、製品版買ってねの画面になってしまう。

実際どれだけのセクターがバッドセクターなのか知りたいと思った。

一旦HDDRをアンインストールすれば再度リペアができるのではないかと思った。

アンインストールして再度インストールするとまた、リペアすることができた。

 

WS2016-02-07_06_03_45

うまくキャプチャできてないが、要するにセクターを指定してチェックやリペアができるのでこれでどのセクターが壊れてるのかを調べてみた。

31 sector 153416 74 mb some bad sectors in next 0 mb
32 SECTOR 162560 <79 Mb> – delay

the process is terminated becouse of limitation of the demo version

The process is terminated because of limitation of the demo version

153416-153474
       153475
153476-162560
153475-153476
153475-153476
153474-153476

メモりながらセクターの値を変えてチェックしていった結果、壊れているセクターは153474セクターだけだということが判明。しかし、リペアされたはずなのにGetDriveは失敗する。製品版なら修復できるのだろうか?

HDAT2なら修復できるのではないかと考え全体をリペアすると問題が出そうだが、バッドセクターが判明した今、そのバッドセクターに限ってリペアすればなんとかなるのではないかと考えた。

実際やってみたが、結果はダメだった。なんか、Write Protect Errorとか訳のわからないエラーだった。

まあ、これなら、HDDRでも復旧は無理だったろう。無駄金を払わずに済んだ。純正のSeaTools for Windowsで修復が不可能だったのは伊達ではないようだ。

しかし、ここで完全に詰んでしまった。

転機2

なんとかddする方法があれば、しかしカーネルパニックしてしまうのがオチである。

なやんだ・・・・。

Cygwinでなんとかddできないのだろうかと考えた。GetDriveみたいに装置番号で指定して吸い出せるツールが他にもないのだろうかと探しもした。

Cygwinは数日前に再度インストールしてあったが、デバイスを見分ける方法がわからなくて放置していた。

ddみたいな何かを探していたときに見つけたサイトが下記。ここに答えがあった・・・。

検索:Windowsのddみたいな何か。 – isihara@るるる.おーぐのぺーじ

ここに答えがあるとあったので、下記見に行ってみたが、英語なので良くわからない。しかしやるだけやってみたところ、ちゃんんとddでST3390Nが反応した。ガリガリ行ってる。画面には何も出ないが、ファイルが作成してサイズが増えていく。ちゃんと吸い出しているようだ。すごいよ!Cygwin!。今までCygwinなんてUNIXもどきなだけで使えないと甘く見てました。すいません!。

参考:Re: dd under CygWin

 

今、Cygwin ddで検索すると、下記のような記事も見つけた。もしかすると参考になったかもしれない。

CygwinのddでUSBメモリのMBRを読み書きする – wltの日記

cygwin でCD-ROMを吸い出す.cygwin dd でCD-ROMイメージ化 – それマグで!

 

ただ-bオプションが使えなかった。使えなくても大丈夫なのかなーと思ったが大丈夫な様だ。

そして、やはり、同じように、74MBのところで停止した。

WS2016-02-07_08_09_41

しかし、ddコマンドは指定の場所から読み込むことができる。

最初は参考にしたサイトのように1024byteで計算してスキップしたが、調べてみるとセクターサイズが512byteだったので512byte損するので512byteでスキップするセクター数を再計算して吸出しなおしたところうまく行った。

そういうわけで、無事HDDのイメージ化が成功した。後は、最初に書いたように一つのファイルに結合した。

WS2016-02-07_09_20_48

 DiskExplorerではうまく中身を見ることができなかったが、(使い方がよくわかってないのと、一部バッドセクターを0で埋めているのでそのせいかとおもったので)

XM6でSCSIとして起動したところうまく起動した。しかしエラーに成った。

AUTOEXEC.BATでHSCSIをコメントにしたところ大丈夫な様だ。

まあ他にも演算モジュールがなくてエラーに成ったりするがうまく読み込めた内容だ。普通にコマンドラインでFLOAT2と打てば大丈夫だけど、FLOATSWがうまく動いてないようだ。今となってどういう意図でそういうことをしているのかも良くわからない。

おいおい調べたい。

追記:2016/02/11

HDAT2でSCANした時の画像が出てきたので貼っておく。

P1180810_R

まあ、HDAT2だとものすごいバッドセクターの数になってしまったわけです。これだと修復をすると再起不能になりそうな気がしたわけです。しかし、一部破損していたとはいえ、この状態で良く吸い出せたなーと思います。

タグ : , , , , ,