]>
CompactFlash(CF)カードはIDEファームウェア的に 「リムーバブル ディスク」属性を持つことが多く、 CF-IDE変換してIDEバスに接続しても 複数パーティションが切れなかったりといった制限がつきます。 このためCF上への新規インストール時には 単一パーティションでないとインストーラがパーティションを認識してくれません。
インストール後であれば atapi.sys の
NonRemovableMedia
値を細工
することで固定ディスク扱いにできますが、
これを新規インストール時に行う方法を示します。
$Keywords: atapi.sys, NonRemovableMedia, SETUPREG.HIV, mshdc.inf, removable disk, local disk, multiple partition $
$Id: W2kRmvInst.html,v 1.5 2011-08-18 14:08:39+09 kabe Exp $
インストールメディア中のI386\
の加工が必要なので、
まずI386\
をハードディスクなりにコピーします。
必要ならService PackのStreamlining (サービスパック統合) を
済ませておきます。
こういった各種加工のために、すでにハードディスクなどで稼動している
Windows 2000 環境が必要です。(XPでも可?)
I386\SETUPREG.HIV
は レジストリ ハイブ ファイルで、
テキストモードセットアップの最中はこのファイルがレジストリとして使われます。
この中の NonRemovableMedia
値は未設定なので、
例えば以下のスクリプトを使って設定します。
rem Add (replace) NonRemovableMedia value of atapi.sys config rem in I386\SETUPREG.HIV installation file rem requires: REG.EXE reg load HKLM\setupreg setupreg.hiv reg add HKLM\setupreg\ControlSet001\Services\atapi\Parameters /f /v NonRemovableMedia /t REG_MULTI_SZ /d "SILICON POWER\0FLASH CARD\0Flash Card\0TRANSCEND\0 " reg unload HKLM\setupreg attrib -h setupreg.hiv.LOG del setupreg.hiv.LOG |
I386\
ディレクトリで実行します。
HKLM\SYSTEM\CurrentControlSet\Enum\IDE\DiskDeviceID\NNNN
の FriendlyName
値を拾えば大抵は大丈夫と思われます。
regedt32.exe
から
手動で可能です。
(Windows 2000のregedit.exeでは、ハイブのロードやREG_MULTI_SZの編集が
できないことに注意)
GUIモードでのatapi.sysや pciide.sys のインストールを担当する mshdc.inf を改造します。 このファイルはテキストモード終了後の最初のGUIセットアップ中と、 新規のIDEデバイスが検出された際に使われます。
I386\MSHDC.IN_
をexpand.exe で解凍するか、
既存の %windir%\inf\mshdc.inf
を
I386\MSHDC.INF
としてコピーします。
I386\MSHDC.IN_
は消すかリネームかで除去します。
MSHDC.INF
を改造します。[atapi_parameters_AddReg]
セクションに
NonRemovableMedia
値を追加している
場所があるので、以下のように修正します。
;; BUG BUG BUG: need to port these to the setup hive
[atapi_parameters_AddReg]
....
HKR, Parameters, NonRemovableMedia, %REG_MULTI_SZ%, \
"SILICON POWER", \ ;# Silicon Power CF cards
"FLASH CARD", "Flash Card", \ ;# pqi CF cards
"TRANSCEND", \ ;# Transcend CF cards
" ", \ ;# A-DATA CF cards
"Kingston Technology DataPak 340 ", \
"SunDisk SDP5A-10 ", \
....
|
なお、dosnet.inf や layout.inf や txtsetup.sif の改造は必要ありません。 MSHDC.INF を圧縮して MSHDC.IN_ に変換する必要もありません。 インストーラが非圧縮ファイルを拾ってくれます。
あとはwinnt.exe (winntus.exe) なり winnt32.exe なりを使って インストールを開始します。 CD-ROM起動しかできない機械では、適宜カスタム起動CD-ROMを焼いてください。
(SETUPREG.HIVの確認) あらかじめ DOS からCF上に複数のパーティションを作っておき、 テキストモードセットアップのインストール先パーティションの選択で、 2つめ以降のパーティションを正しく認識しフォーマットできるようであれば、 SETUPREG.HIV の改造は成功しています。
mshdc.inf を改造すると、Microsoftのドライバ署名が無効になるので、 GUIセットアップ中に無効なドライバ署名のダイアログが出ます。 [はい(Y)]で先に進めます。
(mshdc.infの確認)
GUIセットアップが終了し、通常の起動ができれば mshdc.inf の改造は
成功しています。
改造失敗かつパーティションを複数切っていると、
INACCESSIBLE_BOOT_DEVICE
の
ブルースクリーンで止まってしまいます。
再加工・再インストールするか、
別のWindowsから \WINNT\system32\config\system のレジストリハイブを
ロードし、NonRemovableMedia値を加工
すればとりあえず起動できます。
起動できたら、エクスプローラで「ローカル ディスク」の表示を確認します。
NonRemovableMedia値はatapi.sys管轄下のデバイスすべてに有効なので、 固定扱いにしたカードは IDE接続・PCMCIA接続に関係なく 「ローカル ディスク」扱いになります。 PCMCIA経由接続の活線挿抜はちゃんとできるので問題にならないとは思います。
新しいCFカードを購入して固定ディスク化したい際は、 NonRemovableMediaに FriendlyName値を書き加えてやれば 固定ディスクとして認識されます。
が、直接レジストリのNonRemovableMediaを加工すると、 新規IDEデバイス認識時 (PCMCIAアダプタ経由など) にレジストリ値が mshdc.inf から読み込まれて上書きされるので、 手動でいじった値は最初の1回しか使われません.
ので、NonRemovableMediaを加工したらmshdc.infもあわせて加工しておきましょう。
PCMCIAアダプタ経由でCFカードを接続した際など、
mshdc.inf管轄のドライバ
("PCMCIA IDE/ATAPI コントローラ"など)の署名が無いよと警告ダイアログが出ます。
書き換わっているのは mshdc.inf だけで atapi.sys は無加工なのですが、
無視して[はい(Y)]で進めましょう。
本来であればこういった更新は ドライバディスケット(テキストモードで[F6]で読ませるもの) で 可能なはずで、実際テキストモードセットアップは 以下の TXTSETUP.OEM を使ったドライバディスケットで 複数パーティション認識が可能です。
が、改造してディスケットに入れた mshdc.inf はMicrosoftの署名なしと扱われて デフォルトのmshdc.infが優先されるため、GUIセットアップ以降に無効にされてしまいます。
無改造のCD-ROM起動での修復セットアップや回復コンソールから読ませる分には 役に立つので、覚えておくとよいでしょう。
Windows XP の atapi.sys
では NonRemovableMedia 機能が削られているので、
そのままではこのテクニックが使えません。
レジストリに設定の残骸は残っていますが、使われていません。
マイクロドライブ用フィルタのほうが楽そうですが、新規インストール時に フィルタドライバの導入は困難です。(普通の方法では出来ないのでは)
一応、インストールの最中に Windows 2000版の atapi.sys
に
交換することで新規インストールは可能です。
Windows XP では atapi.sys
は CAB ファイル中に潜っているうえ、
ドライバ署名とWFPが邪魔をするので結構めんどくさい:
STOPエラー
で起動できません
STOPエラー
が出たあと再起動、とか