PE Builderを僕はサーバのバックアップに使っているんだけど、ネットワークインターフェイス用ドライバをインストールするのが面倒だったり、まあてっとり早くバックアップを作成するならUSBストレージだろう。なんて思いまして。
というわけで今回はPE Builderで作成したイメージからUSBデバイスを扱えるようにしましょう。
プラグインのダウンロード
LunarCal
http://lunarcal.org/WinPE/WinPE.html
まずここから”USB1394.zip”をダウンロードします。
ファイルを解凍して、ディレクトリはとりあえず”USB1394″で良いでしょう。
解凍したディレクトリの中に”usb & 1394 User Reg Extract.bat”というBATファイルがあるのでこれを実行します。
・・・ん?実行出来ませんね。
教えてGOOのlonewolfさんの書き込みにヒントがありました。質問した方は理解していないようですが。
レジストリにキーエントリがないと無視されるのでエラーは表示しませんが、テキストファイルが作成されません。
自分のPCに装備されているデバイスにあわせてbatファイルを編集してください。
元のファイルをコピーしてバックアップを取ってから実行してください。
以下は私の環境で実際に編集して作成したBartPEプラグインです。
regedit -e "tt.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\1394" regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\SBP2" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\SCSI" copy /A tt.txt+t1.txt > nul はデバイスがなかったのでレジストリに存在しないので5行削除しました。 regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\STORAGE" のt1.txtをtt.txtに変更 regedit -e "tt.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\STORAGE" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB" の間にある copy /A tt.txt+t1.txt > nul を削除して上書き保存して実行しました。
なるほど、先人は偉大ですね。実際にこの通りBATファイルを修正してみましょう。
今更ながら知ったのですがRegeditにはオプションスイッチがあったんですね。
regedit /l:[system.dat] /r:[user.dat] /e [export_file] [registry_path]
こんな感じらしいです。
で、lonewolfさんの書き込みを元に”usb & 1394 User Reg Extract.bat”を修正するとこんな感じになります。
@echo off @echo USB IEEE1394 Plugin ver 2.3 @echo Extracting USB and IEEE1394 user Registry ... @echo All required entries will be placed into file "usb&ieee1394.reg" @echo Use this file in the USB IEEE1394 plugin. @echo ...extracting... @echo. if exist t1.txt del t1.txt if exist tt.txt del tt.txt regedit -e "tt.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\STORAGE" regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USB" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\USBSTOR" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\V1394" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10DE&DEV_0067&SUBSYS_1C06147B&REV_A4\3&13c0b0c5&0&10" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10DE&DEV_0067&SUBSYS_1C06147B&REV_A4\3&13c0b0c5&0&11" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10DE&DEV_0068&SUBSYS_1C06147B&REV_A4\3&13c0b0c5&0&12" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\PCI\VEN_10DE&DEV_006E&SUBSYS_1C06147B&REV_A3\3&13c0b0c5&0&68" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\dmio" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\ftdisk" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_ARP1394" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_DMADMIN" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_DMBOOT" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_DMLOAD" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_DMSERVER" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_FASTFAT" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_FILEDISK" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_MOUNTMGR" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_NTMSSVC" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_PARTMGR" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_RPCSS" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_SSDPSRV" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\LEGACY_VOLSNAP" copy /A tt.txt+t1.txt > nul regedit -e "t1.txt" "HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Enum\Root\SYSTEM\0000" copy /A tt.txt+t1.txt > nul copy tt.txt "usb&ieee1394user.reg" > nul if exist t1.txt del t1.txt if exist tt.txt del tt.txt @echo Finished extracting registry entries... pause
これを実行したところ、”usb & 1394 User Reg Extract.bat”のカレントディレクトリに先ほどは作成されなかった”usb&ieee1394user.reg”が無事作成されました。
ビルド作業
ビルドを行ったところ、エラーが表示されました。僕はIEEE 1394デバイスを使わないのでこのファイルが無いですよとエラーが出てしまうみたいです。
“USB & 1394 Plugin.inf”の中に
C:\WINDOWS\system32\drivers\sbp2port.sys=4,,1
という表記があるのでこれをコメントアウトしてしまう。
;;C:\WINDOWS\system32\drivers\sbp2port.sys=4,,1
Windows XP SP2のCDがあればI386\SP2.CAB\sbp2port.sysからコピーしても多分動きます。sbp2port.sysはインターネット上で検索してもダウンロード出来るみたいです。(試していませんが)
とりあえず使えるかどうか試してみたのは周りにろくなUSBデバイスが無かったので
・IPODシャッフル(古い方)
・SDカードリーダ
というサンプルになりにくいものだったんですが、普通に認識しました。
まあ2種類ともWindows汎用ドライバで認識するからOKですかね。
追記@2007.03.02
別環境でこのプラグインを使ってみたら、不足しているファイルがあります。みたいな警告が結構出たんだけど、全て不足していたファイルはWindows XP SP2のインストールCDの中から見つけられました。