ttt

getttyent

壊れたハードディスクをgpartで修復

2006-02-25 22:35:59 | デジタル・インターネット

(2006/3/1追記) こちらに続きを書きました。

パーティションテーブル以外にも徹底的に壊れたときの最終手段は、こちらを試すといいかもしれません。

(2008/2/21追記) パーティションテーブルを復活させたい場合、gpartよりも、TestDiskというツールの方がお手軽な場合もあります。

               

☆ ☆ ☆ ☆ ☆ 

いよいよ明日です。いつもよりも、5割増しくらいで、年甲斐も無く興奮気味なんですが・・・
あqwせdrftgyふじこlp

倉田ねじまき堂~女主人のSmile for you~

公式情報はこちら
http://yuki-kura.web.infoseek.co.jp/top.htm

というわけで、興奮した気持ちを抑えるために???、先週壊れたハードディスクを直すことにしました。ここ1年ほど、パソコンが壊れるのは日常茶飯事だったのですが、最近はあまりなかったので、すっかり安心しきっていました。

さてさて、壊れたといっても、「パソコンを落として、中身が飛び出してきちゃった~」というように、機械的に壊れてしまったものは、直すのは難しいですが、ハードディスクにおかしなデータが書き込まれてしまって、整合性がとれなくなってしまった、というケースなら、

運がよければ

直すことができます。

今回も、たぶん、パーティションテーブルがとんでしまっただけのようでした。まあ言わば、大百科事典の目次がどっかにいっちゃって(のび太がページをやぶって鼻をかんだ、とか)、データがどこにあるのかわけがわからなくなってしまった、みたいな壊れ方でしょうか。

たぶん直るだろうな・・・と予想して、とりあえずNorton DiskDoctorを実行したら、

直りませんでした・・・

ちょっとあせってきました。

そこで、今回はじめて、FreeBSDのportsをさがしたところ、/usr/ports/sysutils/gpartにあった、gpartというツールを試してみました。

これは、ディスクの中を、さささーと探して、パーティションらしき部分を見つけ出してくれるツールです。まさに、今回の壊れ方にぴったりのツールではないでしょうか。

壊れたディスクが、FreeBSDで/dev/ad3の場合に、

gpart -dd /dev/ad3  間違えました

gpart -vv /dev/ad3

とかやると、数秒後(早い!?)、こんな情報を表示してくれました。

** Error: invalid extended ptbl found at sector(16384063).

dev(/dev/ad3) mss(512) chs(0/16/63) #s(0) size(0mb)
Primary partition(1)
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1019/219/31)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B DB DF FB 3F 00 00 00 00 00 FA 00

Primary partition(2)
   type: 015(0x0F)(Extended DOS, LBA)
   size: 109246mb #s(223737665) s(16384063-240121727)
   chs:  (1019/219/32)-(610/225/63)d (16254/0/32)-(238215/15/63)r
   hex:  00 DB E0 FB 0F E1 BF 62 3F 00 FA 00 41 F7 55 0D

   Logical partition
Primary partition(3)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Primary partition(4)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Begin scan...
Possible partition(DOS FAT), size(8000mb), offset(0mb)
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00

Possible partition(*BSD disklabel), size(7993mb), offset(8001mb)
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

Possible partition(Windows NT/W2K FS), size(51246mb), offset(65993mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06

End scan.

Checking partitions...

* Warning: partition(DOS or Windows 95 with 32 bit FAT) starts beyond disk end.

* Partition invalid(invalid partition entry (see comments above)):
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00

* Warning: partition(FreeBSD/NetBSD/386BSD) starts beyond disk end.

* Partition invalid(invalid partition entry (see comments above)):
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.

* Partition invalid(invalid partition entry (see comments above)):
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

* Warning: partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX) starts beyond disk end.

* Partition invalid(invalid partition entry (see comments above)):
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06

Partition(DOS or Windows 95 with 32 bit FAT): invalid primary
   type: 011(0x0B)(DOS or Windows 95 with 32 bit FAT)
   size: 8000mb #s(16384000) s(63-16384062)
   chs:  (0/1/1)-(1023/15/63)d (0/1/1)-(16254/0/31)r
   hex:  00 01 01 00 0B 0F FF FF 3F 00 00 00 00 00 FA 00

Partition(FreeBSD/NetBSD/386BSD): invalid primary
   type: 165(0xA5)(FreeBSD/NetBSD/386BSD)
   size: 7993mb #s(16370235) s(16386300-32756534)
   chs:  (1023/15/63)-(1023/15/63)d (16256/4/1)-(32496/8/63)r
   hex:  00 0F FF FF A5 0F FF FF FC 08 FA 00 3B CA F9 00

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): invalid primary
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06

Ok.

Guessed primary partition table:
Primary partition(1)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Primary partition(2)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Primary partition(3)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Primary partition(4)
   type: 000(0x00)(unused)
   size: 0mb #s(0) s(0-0)
   chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r
   hex:  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

うーむ・・・これ、わかる人にしかわからない情報ですなぁ・・・

とりあえず、私が欲しかったのは、ココです。

Possible partition(Windows NT/W2K FS), size(49999mb), offset(15994mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 49999mb #s(102398240) s(32756598-135154837)
   chs:  (1023/15/63)-(1023/15/63)d (32496/10/1)-(134082/2/56)r
   hex:  00 0F FF FF 07 0F FF FF 76 D3 F3 01 20 79 1A 06

Possible partition(Windows NT/W2K FS), size(51246mb), offset(65993mb)
   type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
   size: 51246mb #s(104952576) s(135154908-240107483)
   chs:  (1023/15/63)-(1023/15/63)d (134082/4/1)-(238201/13/57)r
   hex:  00 0F FF FF 07 0F FF FF DC 4C 0E 08 00 73 41 06

この、007、32756598、102398240といった値を、FreeBSDのfdiskコマンドで、書き込んでいって、パーティションテーブルを復活させてやります。

そして、Windows上でこの壊れたディスクにアクセスすると、ほぉ~ら、

20060225

あれ???読めないよ・・・

おかしいなぁ。実は、このパーティションは、もともと拡張パーティション内に作った論理パーティションだったのですが、FreeBSDのfdiskコマンドでは、論理パーティションをいじくることができなかった???みたいで、基本パーティション(primary partition)として作ったのです。そのために、うまく復旧できなかったのでしょうか???

幸運なことに、このパーティション、FreeBSDでマウントできました。

mount_ntfs -C eucJP /dev/ad3s3 /mnt

とかやると、ちゃーんと、日本語のファイル名もちゃんと読めました。こうして見えるようになったファイルを、もう1台のWindowsパソコンでFTPクライアントの「FFFTP」を使ってダウンロードすることで、無事、復旧することができました。

教訓。

データのバックアップは大事。まじで。

☆ ☆ ☆ ☆ ☆

本当は、ディスクのデータ復旧作業をするとき、まず最初に、ディスクのすべての内容を、別のディスクへコピーしておき、コピー先のディスクに対して、修復作業を試みます。

論理的な故障だけでなく、物理的な故障に対しても、同様です。

復旧操作に失敗したり、物理的障害の程度が進んだりして、壊れたディスクに、さらなるダメージを与えたり、致命傷を与えたりするのを防ぐためです。


Firefox ― なめらかにスクロール(BlogPet)

2006-02-25 10:49:34 | インポート
pochiはツールへテキストっぽい機能するはずだった。

D e s i g n W a v e m a g a z i n eデザインウェーブマガジンM A R M7T D M32C00.h t m l仕様の概要マイクロコントローラA D M Iコアフラッシュメモリ62K B S Dに玄箱には、こんなかんじです。
A R.20ピンヘッダ。
J T A G P I OタイマP W M発生器A DコンバータD Aコンバータ雑誌付属のC D-S u b9ピンオスコネクタ開発マシンと接続するためのシリアルケーブルさらに、必要ならばオプションとして、以下が必要だそうです。
より精度の高い、32.768k H zの水晶振動子。
C F S-308など34ピンヘッダを2個(リセットスイッチと、そうはいかなくて、少なくとも、以下もつけられるとのことです。
A R M7T D M3202L E D2個スイッチ2個(リセットスイッチと、シリアルインターフェイスからのプログラムロード開始)寸法60m mこの基板だけで何かおもしろいことできるかっていうと、そうはいかなくて、少なくとも、以下が必要だそうです。
電源。
4.5V~6V程度の出力のA Cアダプタなど基板に電源をつなぐためのヘッダピンなどR S232C A D U C7026(A N A L O G D E V I C E S)リニア・レギュレータA D P3335R S232.768k H zの水晶振動子。
C F S-308など34ピンヘッダ。
J T A Gデバッガ用A D U C702L E D2個。
拡張I/O用2006特別号定価2180円C Q出版社普段、この雑誌は、買ってしまいました。
まだ、ぜんぜん内容を把握していませんし、これで何をするか特に目的もないのですが、何かできるかな?と思ったのですが。
(クリックして拡大表示)クリックしています。
さて、どうしようかな。
ふと、玄箱で遊ぶF r e e B S R A M8K B P L A G P I OタイマP W M発生器A DコンバータD Aコンバータ雑誌付属のC D-R O-B O X X(限定版)玄箱K U R O Mには、内部の基板上にシリアルインターフェイスが作れるそうです。
A R.20ピンヘッダを2個(リセットスイッチと、シリアルインターフェイスの信号が出ているところがあるので、そこにレベルコンバータをはさめば、R S23200.h t t p://w w w.a n a l o g.c o m/j p/p r o d/0%2C006特別号定価2180円C Q出版社普段、このA D P3335R S232.768k H zの水晶振動子。
C F S-308など34ピンヘッダ。
J T A Gデバッガ用A D u C7026%2C A D P3335R S232Cインターフェイスが作れるそうです。
電源も、玄箱からもらっちゃえばいいでしょうし。
玄人志向玄箱K U R O-B O X X(限定版)玄箱からもらっちゃえばいいでしょうし。
玄人志向玄箱につないでなんかしようかな?玄箱のクロス開発環境を構築



*このエントリは、BlogPet(ブログペット)の「pochi」が書きました。