LBA_TOOLマニュアル
■Disk Salvage tools - for FAT16/FAT32 (E-IDE HDD保守ツール集)
Copyright(C) 1998-1999 by Toshiaki Matsuda
Version 2.0 の一部を先行リリース(1999-3-21)
バージョンアップ(1999-08-08)
サルベージツールの一環として、E-IDE(HDD)の保守ツールを開発しました。
拡張INT 13hを使ってLBA(Logical Brock Address)セクターにアクセスします。
やっと8GBを超えるHDDの、復旧をサポートできました(^^;
今回、リリースするプログラムは以下のものです。
・LBA_TEST.EXE Ver1.3 (E-IDE HDDのリードテスト)
・LBA_SAVE.EXE Ver1.1 (E-IDE HDDの特定セクターの保存)
・LBA_PAT.EXE Ver1.2 (E-IDE HDDの特定セクターPatch)
・LBA_SRCH.EXE Ver2.3 (E-IDE HDDの情報収集ツール)
・LBA_COPY.EXE Ver1.4 (E-IDE HDD のイメージコピー)
・LBA_DUMP.EXE Ver1.0 (E-IDE HDD のセクターダンプ)
■ツールの使える条件
基本的には、Windowsの起動フロッピーで立ち上げてフロッピーから実行して下さい。
文中に出てくるINT 13h BIOSから見えるHDD#は、HDD#1--->80h、HDD#2--->81h
HDD#3--->82h、、、となります。これを確認するには、">FDISK /STATUS"を実行すれ
ば判ります。
--------------------------------------------
A:\>FDISK /STATUS
ハードディスクドライブの状態
ディスク Drv Mバイト 空き 使用
1 9664 100%
C: 9664
2 697 1 100%
D: 696
3 2063 49 98%
4 2014 100%
5 216 100%
E: 218
(1 Mバイト=1048576 バイト)
--------------------------------------------
それから、M/BのBIOSが拡張INT 13hに対応している事と、HDDがLBAアクセスに対応し
ている事が条件になります。HDDは、ほとんど問題にならないと思いますが、
拡張INT 13hに対応していないM/Bも、まだ在る様です。
ただし、M/BのBIOSが対応していなくても、WindowsのDOS窓からは、拡張INT 13hをDOS
インターフェースがエミュレーションしてくれるのでこのツールを使う事は可能です。
■LBA_TEST.EXE Ver1.3
E-IDE HDDに対してリードテストを実施します。
引数は次のものが使用できます。
・HDD#"80"〜"87" INT 13h BIOSから見えるユニット番号を指定します。
指定がなければ、最初のHDD(#80h)が指定された事になります。
・リードテストするアドレスを16進数で、"/A:nnnn-nnnnn"で指定できます。
・通常は、126セクター単位でセクターを読み取りますが、"/S"オプションが指定され
るとエラー発生時に、1セクター単位での読み取りモードに移行し、より細かくエラ
ー発生アドレスを特定する事ができます。
・エラーログを、テキストファイルに保存するには"/L:log-file" で指定します。
この時、ログファイルはフロッピー(A:ドライブ)作成されますので、フロッピーから
実行してください。
<実行例>
A:\>LBA_TEST 80
HDD Read test for LBA Ver 1.3 Copyright(C) 1999 by Toshiaki Matsuda
現在日時:Sun Mar 21 13:57:35 1999
指定されたHDD#:80h
拡張INT 13hから見えるパラメータ:19650CYL-16HED-63SEC
総物理セクター数:12E3BE0h
読み取り中セクター:5C0Ah
■LBA_SAVE.EXE Ver1.1
E-IDE HDDの特定セクターを読み取って、ファイルに保存します。
Patchする元データを取得したり、遠隔から障害診断を行うのに有効です。
引数はINT 13hから見える、HDD#を指定します。
<実行例>
A:\>LBA_SAVE 80
HDD Imege Save for LBA Ver 1.1 Copyright(C) 1999 by Toshiaki Matsuda
保存する論理セクターアドレスを入力(HexDecimal):0
保存するセクター数を入力(Decimal):1
読み取り中セクター:0h
セクター情報を保存するファイル名を入力して下さい:MBR.IMG
拡張INT 13hを使ってセクターをファイルに保存しました。
■LBA_PAT.EXE Ver1.2
E-IDE HDDの特定セクターをPatchするツールです。Patchする前に、そのセクターの
情報をファイルに保存します。また、Patchするイメージデータは予め作成する必要が
あります。
引数はINT 13hから見える、HDD#を指定します。
<実行例>
A:\>LBA_PAT 80
HDD Patch for LBA Ver 1.1 Copyright(C) 1999 by Toshiaki Matsuda
Patchする論理セクターアドレスを入力(HexDecimal):0
Patchするセクター数を入力(Decimal):1
読み取り中セクター:0h
セクター情報を保存するファイル名を入力して下さい:MBR.BAK
拡張INT 13hを使ってセクターをファイルに保存しました。
Patchイメージファイル名を入力して下さい:MBR.PAT
書き込み中セクター:0h
正常にPatch処理を終了しました。
■LBA_SRCH.EXE Ver2.3
E-IDEのHDDの全てのセクターを読み込んで、"."と".."の在る論理セクターと、そこに書
かれているアドレス、その他BPB、FSINFO、$MFT、拡張パーティーションテーブルのア
ドレスを報告します。また、マスターブートレコードに書かれているパーティーション
テーブルと、拡張パーティーションのリンクマップ内容も表示します。
このツールは、FATファイルシステムのボリューム修復において、絶大な威力を発揮し
ます。見る人が見れば、この情報だけでこのボリュームが元々どのような確保をされて
いたか、判断する事ができ、BPBやルートディレクトリーの修復も、このログだけか
ら行う事が可能です。
Ver2.0よりログ採取の機能をつけました。
"A:\>LBA_SRCH 80 SRCH.LOG (Enter)" のように、引数を INT 13hから見えるHDD# と
ログファイル名を指定します。
<実行例>
A:\>LBA_SRCH 83 LBA_LOG.TXT
Infomation Search for LBA Ver 2.3 Copyright(C) 1999 by Toshiaki Matsuda
指定されたHDD#:83h
物理パーテーション#1:
Boot標識: 0 パーテーション種別: 5
スタートアドレス: 1CYL-0HED-1SEC エンドアドレス: 1022CYL-63HED-63SEC
スタート論理アドレス: FC0h 総セクター数: 3EE080h
拡張INT 13hから見えるパラメータ:0CYL-0HED-0SEC
総物理セクター数:3EF040h
Search Address:35A6h
↑
アドレスがインクリメントして最終アドレスまで実行(<ESC>で中止)
<ログファイルの解析>
Infomation Search for LBA Ver 2.3 Copyright(C) 1999 by Toshiaki Matsuda
**Inquiry Infomation** (ドライブの拡張INT 13hで取得されたパラメータ)
Search Unit BIOS # 83h
Device Parameter:0CYL-0HED-0SEC
Max Sector address = 003EF03Fh
**MBR Infomation** (MBRのパーティーション情報)
Partition#1 Boot:00 Id:05
Start adr:0001CYL-000HED-01SEC End adr:1022CYL-063HED-63SEC
Logical adr:00000FC0h All Sectors:003EE080h
**Ext_Partition:00000FC0h Infomation** (拡張パーティーション情報)
Partition#1 Boot:00 Id:06
Start adr:0001CYL-001HED-01SEC End adr:0254CYL-063HED-63SEC
Logical adr:0000003Fh All Sectors:000FA041h
Partition#2 Boot:00 Id:05
Start adr:0255CYL-000HED-01SEC End adr:0508CYL-063HED-63SEC
Logical adr:000FA080h All Sectors:000FA080h
(省略)
**Search Infomation** (セクターの検索情報)
0000003F---BPB(FAT32)
00000040---FSINFO
00000045---BPB(FAT32)
00000046---FSINFO
0000005F---FAT32
0000082E---FAT32
00000FC0---EX_PT
00000FFF---BPB(FAT16)
00001000---FAT16(?)
000010FA---FAT16(?)
00001214---00000002---00000000
00001FD9---00000003---00000000
00001FE1---00000004---00000003
↑ ↑ ↑
| | |
| | 親ディレクトリー".."のクラスタアドレス
| |
| 自ディレクトリー"."のクラスタアドレス
|
拡張INT 13hから見える論理アドレス
今までは、サブディレクトリーのアドレスのみ検索していたが、どうせディスク全体
を読みにいくのだから、極力多くの情報を集めるように検索ルーチンを追加した。
表示するパターンは、以下の8つで、かなり解析しやすくなった。ボリュームの自動
修復は、このLBA_SRCHのログを読んで実行する予定です。
・EX_PT ---------拡張パーティーションテーブルが在ったと思われるセクター
・BPB(FAT32) ----FAT32のBPBが在ったと思われるセクター
・FSINFO --------FAT32のFSINFOが在ったと思われるセクター
・BPB(FAT16) ----FAT16のBPBが在ったと思われるセクター
・BPB(NTFS) -----NTFSのBPBが在ったと思われるセクター
・$MFT ----------NTFSの $MFTか $MFTMirrorが在ったと思われるセクター
・FAT32 ---------FAT32のFATの先頭が在ったと思われるセクター
・FAT16(?) ------FAT16のFATの先頭が在ったと思われるセクター。(?)付なのは、他の
セクターに比べて、確度が低い為。
(セクターの先頭4Byteが F8FF FFFFhのセクターを表示)
■LBA_COPY.EXE Ver1.4
E-IDE HDDのイメージコピーを行うツールです。正規リリース版で、修復モードコピー
(エラーが起った時に、セクター単位でコピー)をサポートしました。
なお、引数は次のものが使用できます。
・HDD#の指定は必須です。例えば、 "80-81"の様な引数を与えた場合
コピー元:HDD#80 -->コピー先:HDD#81となります。
・アドレス指定 "/A:nnn-nnnn" により、特定のセクターアドレス範囲をコピーします。
・ディフォルトでは、コピー先の書きこみで read & verify after writeを行っていま
すが、"/nv" オプション(no verify)によって省略が可能です。インストール等、ハ
ードの故障が無い状態で高速にコピーする場合等に有効です。
・エラーが発生したアドレス処理で、読み取りできなかったセクターのコピー先に
ALL 00H のデータを書き込みたい場合に "/z" オプションを付けます。"/z"オプショ
ンが無い場合には、読み取りできなかったセクターアドレスについては、コピー先の
ディスクに対して何のデータも書かれません。
<実行例>
A:\>LBA_COPY 84-81
HDD Image Copy for LBA Ver 1.4 Copyright(C) 1999 by Toshiaki Matsuda
現在日時:Sun Mar 21 14:07:17 1999
マスターHDD#:84h
拡張INT 13hから見えるパラメータ:216CYL-64HED-32SEC
総物理セクター数:6C000h
ワークHDD#:81h
拡張INT 13hから見えるパラメータ:1416CYL-16HED-63SEC
総物理セクター数:15C780h
ドライブのイメージコピーを実施します。
準備ができたら、<Enter>を押してください。<ESC>で中止。
コピー中セクター:E46h
■LBA_DUMP.EXE Ver1.0
E-IDE HDD の論理セクターアドレスをダンプするツールです。
任意アドレス指定と、連続したアドレスを指定してダンプする事ができます。
引数は、拡張INT 13h BIOSから見える HDD#を指定します。
<実行例>
A:\>LBA_DUMP 80 (Enter)
HDD dump sector for LBA Ver 1.0 Copyright(C) 1999 by Toshiaki Matsuda
ダンプする論理セクターアドレスを入力(HexDecimal):3F (Enter)
ダンプ・セクター:0000003Fh
0000: EB 58 90 4D 53 57 49 4E - 34 2E 31 00 02 08 20 00 .X.MSWIN4.1... .
0010: 02 00 00 00 00 F8 00 00 - 3F 00 FF 00 3F 00 00 00 ........?...?...
0020: BF 64 9C 00 10 27 00 00 - 00 00 00 00 02 00 00 00 .d...'..........
0030: 01 00 06 00 00 00 00 00 - 00 00 00 00 00 00 00 00 ................
0040: 80 00 29 D5 0B 1C 38 4E - 4F 20 4E 41 4D 45 20 20 ..)...8NO NAME
0050: 20 20 46 41 54 33 32 20 - 20 20 FA 33 C9 8E D1 BC FAT32 .3....
0060: F8 7B 8E C1 BD 78 00 C5 - 76 00 1E 56 16 55 BF 22 .{...x..v..V.U."
0070: 05 89 7E 00 89 4E 02 B1 - 0B FC F3 A4 8E D9 BD 00 ..~..N..........
0080: 7C C6 45 FE 0F 8B 46 18 - 88 45 F9 38 4E 40 7D 25 |.E...F..E.8N@}%
0090: 8B C1 99 BB 00 07 E8 97 - 00 72 1A 83 EB 3A 66 A1 .........r...:f.
00A0: 1C 7C 66 3B 07 8A 57 FC - 75 06 80 CA 02 88 56 02 .|f;..W.u.....V.
00B0: 80 C3 10 73 ED BF 02 00 - 83 7E 16 00 75 45 8B 46 ...s.....~..uE.F
00C0: 1C 8B 56 1E B9 03 00 49 - 40 75 01 42 BB 00 7E E8 ..V....I@u.B..~.
00D0: 5F 00 73 26 B0 F8 4F 74 - 1D 8B 46 32 33 D2 B9 03 _.s&..Ot..F23...
00E0: 00 3B C8 77 1E 8B 76 0E - 3B CE 73 17 2B F1 03 46 .;.w..v.;.s.+..F
00F0: 1C 13 56 1E EB D1 73 0B - EB 27 83 7E 2A 00 77 03 ..V...s..'.~*.w.
----- MORE ----- (任意のキー押下で続きを表示)
0100: E9 FD 02 BE 7E 7D AC 98 - 03 F0 AC 84 C0 74 17 3C ....~}.......t.<
0110: FF 74 09 B4 0E BB 07 00 - CD 10 EB EE BE 81 7D EB .t............}.
0120: E5 BE 7F 7D EB E0 98 CD - 16 5E 1F 66 8F 04 CD 19 ..}.....^.f....
0130: 41 56 66 6A 00 52 50 06 - 53 6A 01 6A 10 8B F4 60 AVfj.RP.Sj.j...`
0140: 80 7E 02 0E 75 04 B4 42 - EB 1D 91 92 33 D2 F7 76 .~..u..B....3..v
0150: 18 91 F7 76 18 42 87 CA - F7 76 1A 8A F2 8A E8 C0 ...v.B...v......
0160: CC 02 0A CC B8 01 02 8A - 56 40 CD 13 61 8D 64 10 ........V@..a.d.
0170: 5E 72 0A 40 75 01 42 03 - 5E 0B 49 75 B4 C3 03 18 ^r.@u.B.^.Iu....
0180: 01 27 0D 0A 49 6E 76 61 - 6C 69 64 20 73 79 73 74 .'..Invalid syst
0190: 65 6D 20 64 69 73 6B FF - 0D 0A 44 69 73 6B 20 49 em disk...Disk I
01A0: 2F 4F 20 65 72 72 6F 72 - FF 0D 0A 52 65 70 6C 61 /O error...Repla
01B0: 63 65 20 74 68 65 20 64 - 69 73 6B 2C 20 61 6E 64 ce the disk, and
01C0: 20 74 68 65 6E 20 70 72 - 65 73 73 20 61 6E 79 20 then press any
01D0: 6B 65 79 0D 0A 00 00 00 - 49 4F 20 20 20 20 20 20 key.....IO
01E0: 53 59 53 4D 53 44 4F 53 - 20 20 20 53 59 53 7E 01 SYSMSDOS SYS~.
01F0: 00 57 49 4E 42 4F 4F 54 - 20 53 59 53 00 00 55 AA .WINBOOT SYS..U.
ダンプ・セクター:0000003Fh
+,-,a,<Enter>,<ESC>:
入力プロンプトでは、
+ :論理セクターアドレスのインクリメント
- :論理セクターアドレスのデクリメント
a :論理セクターアドレスの再入力
<Enter> :同じセクター内容の再表示
<ESC> :ダンププログラムの終了
<新作コーナーへ戻る>
<ホームへ戻る>