ICC (IDE HDD Capacity Changer)

2005/03/23 更新

ダウンロード

ICC について



               ICC (IDE HDD Capacity Changer)   Ver.0.07a
                   Copyright (C) 2001-2005  K.Takata


1.はじめに

1.1. 概要
     IDE HDD の容量を変更します。(俗に言うファームウェア書き換え)
     例えば 4.25GiB (4.56GB) の壁がある PC-98 にそれを超える HDD をつな
    ぎ、そのうち 4.25GiB (4.56GB) だけを使うことができるようになります。
     IDE HDD の情報を表示するプログラム (IDEinf) も同梱しています。

    注意)
       実際には、ファームウェアそのものを書き換えているわけではありませ
      ん。ファームウェアのパラメータの一部を ATA の公開コマンドで変更し
      ているだけです。各 HDD ベンダーの独自コマンドで容量が制限されてい
      るような場合には、その容量制限を解除することはできません。


1.2. 容量の表記について
     この文章において、容量の表記として MiB, GiB といったものを用いてま
    すが、これは、それぞれ、1024^2 Bytes, 1024^3 Bytes を表しています。
    一方、MB, GB と書かれているものに関しては、一部を除いて、それぞれ、
    1000^2 Bytes, 1000^3 Bytes を表すものとします。
     ICC や IDEinf の出力するメッセージに関しては、Ver.0.06a までと同じ
    ように、1024^2 Bytes, 1024^3 Bytes を表しています。

    ・参考 URL
      http://physics.nist.gov/cuu/Units/binary.html
      http://www.linux.or.jp/JF/JFdocs/Large-Disk-HOWTO-3.html


2.動作環境
    ○DOS 版
      ・PC-98 および AT 互換機。
      ・Windows の DOS 窓では動きません。

    ○Win9x console 版
      ・Win95 OSR2, Win98, Win98SE の DOS 窓。


3.対応 HDD
     ATA/ATAPI-5 に対応している HDD ならば容量変更できるはずです。
    (古い HDD には使えません。予期しない動作をすることがあります。)


4.使用方法

4.1. 基本的な使用方法
     > ICC [<options>]
        <options>   -d<n>  : デバイスを変更する (default <n>=0)
                             Primary-Master   : <n>=0
                             Primary-Slave    : <n>=1
                             Secondary-Master : <n>=2
                             Secondary-Slave  : <n>=3
                    -v     : 揮発性(volatile)容量変更
                    -b     : BigDrive モード
                    -i     : デバイスの情報を表示するのみ
                    -h, -? : ヘルプを表示する

     標準では Primary-Master に接続された HDD の容量を変更するようにな
    っています。例えば Primary-Slave に接続した HDD の容量を変更したい場
    合は -d1 オプションを指定してください。
     標準では HDD の容量を変更すると HDD の電源を切っても容量変更は有効
    なままですが、-v オプションを指定した場合は、電源を切るまで(あるい
    はリセットボタンを押すまで)の間だけ有効となり、電源を切ると、変更前
    の容量に戻ります。不揮発性容量変更を行った後で、もう一度、不揮発性容
    量変更を行いたい場合は、一度電源を切る必要があります。揮発性容量変更
    の場合には、この制限はありません。
     -b オプションを指定すると、BigDrive (48bit LBA) モードになります。
    128GiB (137GB) 以上の HDD の容量を変更する場合は、このオプションを指
    定してください。(詳細は後述)
     -i オプションを指定すると、HDD の型番、最大容量、現在設定されてい
    る容量を表示するだけで、容量の変更は行いません。


     必要に応じて上記のオプションを指定して、ICC.EXE を起動すると、以下
    のような表示が出ます。

      Device: Primary-Master

      ModelNumber: "IBM-DADA-26480                          "
      Maximum Capacity (28bit LBA): 12685680 (6194MB)
      Current Capacity (28bit LBA): 8912760 (4351MB)

      non-volatile              ← -v を指定すると volatile と表示される

      Input new capacity [MB].
      >                                 ← ここに新しい容量を入力する

     これは Primary-Master に IBM-DADA-26480 (6.4GB) をつないだときの様
    子です。Maximum Capacity はドライブ自体の容量、Current Capacity は現
    在の容量です。容量は総セクタ数(LBA 数)と、MiB 単位で表示されていま
    す。(上記の例では 6194MB などと表示されていますが、実際には MiB 単
    位です。) このドライブは現在 4351MiB に容量を変更してあります。
     上のようなプロンプトが表示されたら MiB 単位の整数で新しい容量を入
    力してください。正常に容量が変更された場合は、"Capacity is changed."
    と表示されます。容量を入力し Enter キーを押すと、確認無しにすぐに容
    量が変更されますので、容量は注意して入力してください。
     容量入力の際に、8912760LBA などと後ろに LBA を付けて入力すると、セ
    クタ数で容量を指定することができます。ちなみにこの 8912760
    (65535*8*17) という値は、4.25GiB の壁がある PC-98 で扱える最大セクタ
    数です。(実際にはもう少し大きい値でもハングアップはしないのですが。)
     4GiB あるいは 4GB などと後ろに GiB または GB を付けて入力すると、
    GiB 単位で容量を指定することができます。(現バージョンでは GB, GiB
    のどちらでも GiB で指定されたものとして扱いますが将来的には変更され
    るかもしれません。)
     数値の後ろに LBA, GiB, GB 以外の単位をつけた場合は、すべて無視され、
    MiB 単位で容量が指定されたものとして扱います。
     Maximum Capacity として表示されている値と同じかそれより大きい値を
    入力するか、max と入力すると、全容量が使えるようになります。
     容量変更を中止する場合は、0 を入力するか、何も入力せずにリターンを
    押してください。あるいは Ctrl+C を押して強制終了させてください。


    注意)
       むやみやたらに不揮発性容量変更をしないようにしましょう。不揮発性
      容量変更をやりすぎると最終的には容量を変更できなくなってしまう可能
      性があります。
       不揮発性容量変更を行うと、その容量が HDD 内のフラッシュメモリ等
      に記録されると考えられますが、フラッシュメモリの書き換え回数には限
      度があります。(少ないものでは 100回程度、多いものでは 10万回ある
      いはそれ以上) そして限度を超えると正常に書き込みができなくなって
      しまいます。HDD の場合、どの程度書き換え可能なのかは分かりませんが、
      揮発性容量変更で済む場合には、それで済ませておいた方が安全でしょう。


4.2. BigDrive (48bit LBA) モードの使用法
     128GiB (137GB) 以上の HDD の容量を変更する際には -b オプションを指
    定して、BigDrive (48bit LBA) モードを使う必要があります。以下に
    160GB のドライブに対して、通常 (28bit LBA) モードで実行した時と、
    BigDrive モードで実行した時の表示例を載せます。

    ・通常モード
      > icc -i
      ModelNumber: "HDS722516VLAT20                         "
      Maximum Capacity (28bit LBA): 268435456 (131072MB)
      Current Capacity (28bit LBA): 268435455 (131071MB)
      Current Capacity (48bit LBA): 321672960 (157066MB)

    ・BigDrive モード
      > icc -i -b
      ModelNumber: "HDS722516VLAT20                         "
      Maximum Capacity (48bit LBA): 321672960 (157066MB)
      Current Capacity (28bit LBA): 268435455 (131071MB)
      Current Capacity (48bit LBA): 321672960 (157066MB)

     BigDrive に対応したドライブでは、このように Current Capacity とし
    て 28bit LBA での値と 48bit LBA での値の両方が表示されます。
     通常モードで実行した場合には、Maximum Capacity が 131072MiB と認識
    されているのが分かると思います。通常モードでは、1 〜 131072MiB まで
    の範囲でしか容量を指定することができません。容量として 131072MiB を
    指定するか、max と入力すると全容量(この場合は 157066MiB)が使えるよ
    うになります。
     BigDrive モードでは、Maximum Capacity の部分に 48bit LBA と表示さ
    れ、またドライブの容量が正しく認識されているのが分かると思います。
    BigDrive モードでは、例えば 140000MiB など、通常モードでは指定できな
    かった容量を指定できるようになります。Maximum Capacity に表示されて
    いる値と同じか大きい値を指定するか、max と入力すれば全容量が使えるよ
    うになります。

     通常モードで容量を制限したドライブは、通常モードで全容量を使用可能
    に戻すまでは、BigDrive モードで容量を変更することができません。また
    逆に、BigDrive モードで容量を制限したドライブは、BigDrive モードで全
    容量を使用可能に戻すまでは、通常モードで容量を変更することができませ
    ん。
     どちらのモードで容量を変更したか分からなくなった場合は、通常モード
    と BigDrive モードの両方で容量として max と入力してください。その後、
    必要に応じて再起動してから、自分の指定したい容量を指定し直してくださ
    い。

     なお、Win9x console 版では、BigDrive モードは使用できません。


4.3. 応用編1
     多くの PC-98(主に1997年 5月よりも前に発売された機種)は、4.25GiB
    超の HDD をつなぐと、メモリカウント後にハングアップしてしまいます。
    しかし最近は 4.25GiB 以下の HDD を入手することはかなり困難です。メー
    カもそれは同じようで、I-O DATA や NEC などでは 6GB クラスの HDD のフ
    ァームウェアを書き換えて 4GB クラスの HDD として販売している例もある
    ようです。この ICC を使えばそれを個人でできるわけです。ここではその
    実際のやり方を示します。
     まず、4.25GiB超の HDD に対応したマシンを持っている場合は、HDD を一
    度それにつないで ICC で 4351MiB 以下、LBA 数 8912760 以下に変更する
    だけです。難しいことは何もありません。(もちろん、このとき -v オプシ
    ョンを指定してはいけません。)
     では、4.25GiB超の HDD に対応したマシンがない場合は、どうしたらいい
    のでしょう。(普通につないだら ICC を起動できないわけですから。) そ
    のときは、以下の a) 〜 c) のいずれかの方法を試してみてください。

    a)   まず、システムセットアップメニューで内蔵固定ディスクを「切り離
        す」に設定してみてください。これでメモリカウント後にハングアップ
        しなければ、ICC で 4351MiB 以下に設定し、最後にシステムセットア
        ップメニューの設定を元に戻して完了です。(残念ながら多くの場合こ
        の方法ではダメなようですが。)
    b)  ジャンパピンで HDD を Slave に設定してみてください。こうすれば
       4.25GiB超の HDD をつないでもメモリカウント後にハングアップしない
       ようです。この場合は、ICC を -d1 オプション(Primary-Slave)を指定
       して起動して容量を変更し、作業終了後 Master に戻しておけばよいで
       しょう。
    c)   La10/S8 で試したときは a) の方法ではダメだったので、別の方法を
        試みました。まず、HDD を外した状態で DOS を起動させ、DOS が起動
        してから HDD をつなぎます。それから ICC を起動し 4351MiB 以下に
        変更します。ただし、La10 のように HDD の換装が面倒な機種では、こ
        の方法はそれなりに大変です。また、電源が入った状態で HDD をつな
        ぐという行為は本来想定された使い方ではないので何らかのハードウェ
        ア的な問題が起こる可能性があります。この方法を試すのは a), b) の
        方法が使えなかった場合のみにすることをお薦めします。


4.4. 応用編2
     最近、Melco の DBI-NGT シリーズを I-O DATA の UIDE-66 などにつない
    だら 4GB しか使えないという質問が FAQ となっていますが、これはもちろ
    ん DBI-NGT がいわゆるファームウェア書き換えで、4.25GiB 以下に容量制
    限してあるからです。ICC を使うことで、全容量を使えるようになるはずで
    す。容量を変更する場合は HDD を内蔵 IDE につないでください。ICC は
    UIDE-66 などにつながれた HDD は認識できません。
     全容量を有効にした場合、DBI-NGT を内蔵 IDE に接続しても使うことは
    できません。再び内蔵 IDE に接続して Advanced BIOS を使う場合は、4.2.
    の方法で 4.25GiB 以下に容量を戻してください。


4.5. 容量を変更した HDD の扱い
     ICC で容量を変更した HDD の扱いには十分に注意してください。特にそ
    の HDD を中古品などの形で他人に譲ったりする場合には気を付けてくださ
    い。DBI-NGT などの元々容量が制限されている HDD は、その制限されてい
    る容量に戻しておくべきでしょうし、ICC を使って自分で容量を制限したよ
    うな場合は、元通り全容量使えるように戻しておくべきでしょう。あるいは
    ファームウェアを書き換えて容量を変更したいうことを明示するようにして
    ください。(正確にはファームウェアそのものを書き換えているわけではあ
    りませんが。)


4.6. エラーメッセージとその対処法
     ICC を使ったときによく表示されると思われるエラーメッセージとそれに
    対する対処法を以下に示します。

    ・Time out. Device may not be conected.
       指定された接続先に HDD がつながっていないと思われます。HDD の接
      続および Master/Slave の設定を確認してください。

    ・Can't read native max address.
       HDD の最大容量が取得できなかったときに表示されます。おそらく、
      HDD が容量変更コマンドに対応していません。HDD が古すぎると思われま
      す。(HDD が容量変更コマンドに正式に対応しているかを調べるには、
      IDEinf を使ってください。)

    ・Can't set max address.
       HDD の容量を変更できなかったときに表示されます。不揮発性容量変更
      を行った後、リセットせずに再度容量を変更しようとすると、このエラー
      が表示されます。また、28bit LBA モードで容量変更してある HDD を
      48bit LBA モードで容量変更しようとした場合や、48bit LBA モードで容
      量変更してある HDD を 28bit LBA モードで容量変更しようとした場合に
      もこのエラーが表示されます。

    ・Illegal device number.
       -d オプションによるデバイス番号の指定が不正です。指定できるデバ
      イス番号は 0〜3 のみです。

    ・This program cannot be run in Windows.
       ICC は DOS 窓からは実行できません。DOS モードで実行してください。

    ・その他
       上記以外のエラーメッセージは、通常は表示されないはずです。表示さ
      れるとしたら、ハードウェア上の問題、あるいは ICC のバグが原因とし
      て考えられます。


5.IDE HDD 情報表示プログラム
     IDE HDD の情報を表示するプログラム(IDEinf)を同梱しておきました。

     > IDEinf [<options>] [<filename>]
        <options>   -d<n>  : デバイスを変更する (default <n>=0)
                             Primary-Master   : <n>=0
                             Primary-Slave    : <n>=1
                             Secondary-Master : <n>=2
                             Secondary-Slave  : <n>=3
                    -v     : 詳細な情報を表示する
                    -r     : <filename> からデータを読み込んで表示する
                    -h, -? : ヘルプを表示する
        <filename>  IDENTIFY DEVICE によって得られたデータを書き出す
                    ファイル名

     <filename> を指定すると、IDENTIFY DEVICE コマンドで得られた、デバ
    イスの情報が書かれた 512bytes のバイナリデータをそっくりそのまま、そ
    のファイルに書き込みます。(ただし、読みやすくするために、文字列が格
    納されている部分だけは上下バイトを入れ替えてあります。)
     -v を指定すると詳細な情報を表示します。表示される情報は1画面には
    収まりませんので、more コマンドを使うなり、リダイレクトでファイルに
    保存するなりしてください。
     -r と <filename> を同時に指定すると、<filename> からデータを読み込
    んで表示します。-r と -v は同時に指定可能です。-r を指定したときは
    Windows 上でも動作します。


    ・HDD が容量変更コマンドに対応しているかを調べる方法
       -v オプションを指定して IDEinf を実行してください。"Supported
      Commands" の欄に "Host Protected Area feature set supported" とい
      う表示があれば、その HDD は容量変更コマンドに正式に対応しています。
      (ただし、この表示がない場合でも、容量変更コマンドが使える場合もあ
      ります。そのため ICC では、HDD が容量変更コマンドに正式対応してい
      るかのチェックはあえて行っていません。)

       > IDEinf -v | find "Host"
      というように実行するのが手っ取り早いです。


6.更新履歴
    2001/02/12  Ver.0.00
        ・最初の公開バージョン。

    2001/02/16  Ver.0.01
        ・AT 互換機でも動くようにしたつもり。

    2001/03/16  Ver.0.02
        ・揮発性容量変更かどうかを表示するようにした。
        ・IDEinf で表示する情報を増やした。(ATA/ATAPI-6 に一部対応。)
        ・注意事項を修正。(重要)
        ・その他、細かい修正。

    2001/04/17  Ver.0.03
        ・IDEinf で保存したファイルを読み込んで情報を表示できるようにし
          た。
        ・ICC 本体の変更はなし。

    2001/12/23  Ver.0.03a
        ・ドキュメントを一部修正。
        ・ICC と IDEinf のバージョン表記の統一。(機能の変更はなし。)

    2002/07/30  Ver.0.04
        ・エラーメッセージを変更した。
        ・ドキュメントを一部修正。
        ・IDEinf で表示する情報を増やした。(ATA/ATAPI-7 に一部対応。)

    2002/10/31  Ver.0.05
        ・DOS 版と Win9x console 版を用意。それに伴い、ソースの OS 依存
          部分と非依存部分を整理し直した。
        ・DOS 版は、機能上の変更は無し。

    2002/12/04  Ver.0.05a
        ・ソース上の修正のみ。機能の変更は無し。

    2003/02/12  Ver.0.06
        ・DOS 版 で AT 互換機のウェイト方法を変更。
        ・Win9x console 版は、機能上の変更は無し。

    2003/08/25  Ver.0.06a(非公開)
        ・IDEinf で 48bitLBA の表示欄に 64bit 分のスペースを取ってあった
          のを修正。

    2003/09/06  Ver.0.06a
        ・ソースファイル上の変更のみ。

    2004/05/19  Ver.0.06b(非公開)
        ・WinNT 系のコマンドプロンプトを認識できていなかったのを修正。
        ・IDEinf で表示する情報を増やした。(ATA/ATAPI-7 rev.4b に対応。)

    2004/06/04  Ver.0.07
        ・BigDrive (48bit LBA) に対応。(ただし Win9x 版は非対応。)

    2005/03/23  Ver.0.07a
        ・ドキュメントの表記を少し修正。
        ・実行ファイルのバージョン表記は 0.07 のまま。


7.参考文献など
    ・Technical Committee T13  AT Attachment
      http://www.t13.org/
        d1153r18.pdf : ATA/ATAPI - 4 revision 18
        d1321r3.pdf  : ATA/ATAPI - 5 revision 3
        d1410r3b.pdf : ATA/ATAPI - 6 revision 3b
        d1532v1r4b ATA-ATAPI-7.pdf : ATA/ATAPI - 7 revision 4b (Vol.1)
        d1532v2r4b ATA-ATAPI-7.pdf : ATA/ATAPI - 7 revision 4b (Vol.2)
        d1532v3r4b ATA-ATAPI-7.pdf : ATA/ATAPI - 7 revision 4b (Vol.3)

    ・トランジスタ技術 Special No.45  PC98シリーズのハードとソフト
       CQ出版社    ISBN4-7898-3237-6    \1,553

    ・トランジスタ技術 Special No.67  パソコン周辺機器インターフェースII
       CQ出版社    ISBN4-7898-3259-6    \1,752

    ・UNDOCUMENTED 9801/9821 Vol.2 メモリ・I/Oポート編
      http://www.webtech.co.jp/company/doc/undocumented_mem/
        io_ide.txt : IDEインターフェース

    ・IDE HDD Capacity Changer Ver 0.91b1   by WildCat  (CHGCAPA.EXE)

    ・TECH I Vol.10  ATA(IDE)/ATAPIの徹底研究
       CQ出版社    \2,095
       この本は ICC の作成よりも後に出版されたので、ICC 作成の参考文献
      ではないのですが、これから ATA 関係のプログラムを作ろうと思う人の
      ために挙げておきます。

    ・ハードウェアデザインシリーズ 7  パソコン・アダプタの製作&応用
       CQ出版社    \1,714


8.注意事項、その他
    ・このプログラムはフリーソフトウェアです。
    ・このプログラムの著作権は作者である私 K.Takata(高田 謙)に帰属しま
      す。
    ・もしこのプログラムを使用することで HDD が壊れるなどの何らかの問題
      が発生しても作者は一切の責任を負いません。各自の責任で使用してくだ
      さい。
    ・アーカイブを変更しない限り配布/転載は自由です。
    ・このプログラムを営利目的で使用することを禁止します。
    ・ソースファイルの使用は個人的利用に限り自由です。このソースファイル
      を利用してシェアウェアや市販ソフトを作ることは一切禁止します。この
      ソースファイルを利用してフリーソフトを作った場合は、ソースを公開す
      ることを強く要求します。

        作者   : K.Takata(高田 謙)
        URL    : http://webs.to/ken/
                 http://homepage3.nifty.com/k-takata/

戻る

Copyright (C) 2001-2005 K.Takata