]> Installing Windows 2000 on CompactFlash: using NonRemovableMedia entry

▼コンパクトフラッシュ カード を固定ディスク扱いにして Windows 2000を新規インストールする▼

CompactFlash(CF)カードはIDEファームウェア的に 「リムーバブル ディスク」属性を持つことが多く、 CF-IDE変換してIDEバスに接続しても 複数パーティションが切れなかったりといった制限がつきます。 このためCF上への新規インストール時には 単一パーティションでないとインストーラがパーティションを認識してくれません。

インストール後であれば atapi.sys の NonRemovableMedia 値を細工 することで固定ディスク扱いにできますが、 これを新規インストール時に行う方法を示します。

[CFカードと変換アダプタ]

$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でも可?)

SETUPREG.HIVを改造

I386\SETUPREG.HIVレジストリ ハイブ ファイルで、 テキストモードセットアップの最中はこのファイルがレジストリとして使われます。

この中の NonRemovableMedia値は未設定なので、 例えば以下のスクリプトを使って設定します。

リスト. SETUPREG.HIV設定 (setupreg.cmd)
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

mshdc.infを改造

GUIモードでのatapi.sysや pciide.sys のインストールを担当する mshdc.inf を改造します。 このファイルはテキストモード終了後の最初のGUIセットアップ中と、 新規のIDEデバイスが検出された際に使われます。

なお、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経由接続の活線挿抜はちゃんとできるので問題にならないとは思います。


事後のNonRemovableMedia加工時は、mshdc.infも更新!

新しいCFカードを購入して固定ディスク化したい際は、 NonRemovableMediaに FriendlyName値を書き加えてやれば 固定ディスクとして認識されます。

が、直接レジストリのNonRemovableMediaを加工すると、 新規IDEデバイス認識時 (PCMCIAアダプタ経由など) にレジストリ値が mshdc.inf から読み込まれて上書きされるので、 手動でいじった値は最初の1回しか使われません.

ので、NonRemovableMediaを加工したらmshdc.infもあわせて加工しておきましょう。


問題点

[デジタル署名が見つかりませんでした] PCMCIAアダプタ経由でCFカードを接続した際など、 mshdc.inf管轄のドライバ ("PCMCIA IDE/ATAPI コントローラ"など)の署名が無いよと警告ダイアログが出ます。 書き換わっているのは mshdc.inf だけで atapi.sys は無加工なのですが、 無視して[はい(Y)]で進めましょう。


ドライバディスク用TXTSETUP.OEM

本来であればこういった更新は ドライバディスケット(テキストモードで[F6]で読ませるもの) で 可能なはずで、実際テキストモードセットアップは 以下の TXTSETUP.OEM を使ったドライバディスケットで 複数パーティション認識が可能です。

が、改造してディスケットに入れた mshdc.inf はMicrosoftの署名なしと扱われて デフォルトのmshdc.infが優先されるため、GUIセットアップ以降に無効にされてしまいます。

無改造のCD-ROM起動での修復セットアップや回復コンソールから読ませる分には 役に立つので、覚えておくとよいでしょう。


Windows XPでは?

Windows XP の atapi.sys では NonRemovableMedia 機能が削られているので、 そのままではこのテクニックが使えません。 レジストリに設定の残骸は残っていますが、使われていません。

マイクロドライブ用フィルタのほうが楽そうですが、新規インストール時に フィルタドライバの導入は困難です。(普通の方法では出来ないのでは)

一応、インストールの最中に Windows 2000版の atapi.sys に 交換することで新規インストールは可能です。 Windows XP では atapi.sys は CAB ファイル中に潜っているうえ、 ドライバ署名とWFPが邪魔をするので結構めんどくさい:


かべ@sra-tohoku.co.jp