第6章 起動USBメモリを作る

WinPE起動USBメモリを作るには

USBメモリはコンパクトなサイズで、容量もかなり大きく、値段も手頃ということで、かなり普及している。また最近のBIOSは、USBメモリからの起動に対応しているものがほとんどになってきているので、CD-Rの代わりにUSBメモリからWinPEをレスキューツールとして起動したいと考える方も多いと思う。

実はExplorerなどのファイラーから見ると、CD-Rから起動するWinPEも、USBメモリから起動するWinPEも、中身のファイルは全く同じに見える。

ではどこが違うのかというと、起動関係の部分である。この部分はファイル形式ではないので、ファイラーからは見えないのだ。CD-RやUSBメモリのセクタに直接データが書き込まれている。

CD-R版WinPEを作る場合は、oscdimg.exeを使って、-bオプションでetfsboot.comを指定してisoファイルを作った。この操作によって、CDのブート規格であるEl Toritoに適応したブートセクタが(我々が意識しないうちに)書き込まれていたのだ。

USBメモリ版WinPEの場合には、diskpartというコマンドを使って、まずUSBメモリを初期化する。ここで言う初期化というのは、パーティションの作成、そのパーティションのアクティブ化(起動始点領域と指定すること)、そしてフォーマットすることの総称である。ただしXPなどのdiskpartではUSBメモリを認識できないので、Vista/Server2008/7あるいはWinPEのdiskpartを使う必要がある。この方法で初期化することによって、WinPEを起動できるUSBメモリの下地ができるのだ。その後にこのUSBメモリに必要なファイルを書き込めばよい。これはExplorerでもできるし、XCOPYコマンドを使っても良い。

ところで、このコーナーでのWindows XPでの推奨環境はVirtualPC2007上でWin Server2008を起動してWinPEを作ることだったから、ここで一つ問題が生じる。VirtualPC2007のゲストOSからでは接続してあるUSBメモリを認識できないのだ。VMWare/VirtualBoxといった仮想PCであれば接続されているUSBメモリを認識させることができるが、VirtualPC2007では不可能である。よってXP環境の方は一旦CD-R起動のWinPEを作り、ホストコンピュータをそのWinPEで起動しておいて、USBメモリを初期化する必要がある。もしくは【PeToUSB】というソフトを使う方法もある。

Vista以降のOSをお使いの方は、そのホストOS上でコマンドプロンプトを起動し、USBメモリを初期化すればよい。

あなたのOS USBメモリの初期化方法
XP 先にCD-R版のWinPEを作っておき、そのCD-Rでブートして、WinPE上で行う。
またはPeToUSBを利用する。
Vista/7 OS上で直接行う。

使用可能なUSBメモリの要件

容量は最低256MBのものが必要だと思う。128MBではギリギリで厳しい。カスタマイズしていろいろなものを追加すれば、その分容量は大きくなるので、512MB、あるいは1GBのものが必要になるだろう。

なお、MicroSD(HC)などのメモリカードと専用メモリリーダーの組み合わせなどをUSBメモリの代わりに使うこともできる。ただしマルチタイプのリーダーで、PCにつなぐと4つくらいドライブが割り当てられるタイプのものは、BIOS次第だが、起動媒体として認識されにくくなると思う。

一般的にUSBメモリの場合は、CD-Rよりも、PCというかBIOSを選ぶ。つまり起動できない場合が多い。汎用性・確実性を重視するのならば、CD-R版WinPEをお勧めする。

diskpartを使ったUSBメモリのフォーマット

これまた@ITにすばらしい記事があるので、参考にリンクしておく。

Windows PE 2.0のブータブルUSBメモリを作成する

まず、Vista/Server2008/7、あるいはWinPEが動作するPCにUSBメモリを接続しておく。このUSBメモリはWinPE起動専用になるので、中に保存してあるデータは消失してしまう。もしも必要なデータがあれば、あらかじめ退避しておくこと。

次に、コマンドプロンプトを管理者モードで起動する。

そして下図の順序で、赤線で示したコマンドを実行していく。パソコンが返すコメントが下と同じものになることを確認しつつ、1つずつ確実にコマンドを進めていく。特に緑色の文字で書いた部分は、間違えると他のHDDなどの媒体を初期化してしまうので、慎重の上にも慎重に行うこと。

diskpartコマンド

最後のbootsect.exeのコマンドは、Microsoft公式ヘルプにもないし、他の解説サイトにも書いていないが、当方の実験の結果、これをやっておくと認識が良くなることが確認できた。bootsect /nt60 はVistaや7互換のブートセクタを書き込むコマンドだ。Windows AIKをインストールしてある環境では、図で示したディレクトリにbootsect.exeが存在しているが、WinPEで起動した場合にはbootsect.exeは含まれていない。必須ではないのでやらなくても良いが、もしもやりたければ、あらかじめCD-R版WinPE作製時に、(imagex.exeを含ませたのと同じ方法で)mountフォルダ内にコピーしておけば良い。最後のドライブ名を間違うと、これも大変なことになる。list volumeで確認したドライブ名を入力すること。(上の例ではh:のところ)

別法: PeToUSBを使ったUSBメモリの初期化

diskpartを使わない方法として【PeToUSB】というソフトを使う方法がある。XPや2000でも動作するし、diskpartのようにコマンドをたくさん打つ必要がないのも魅力だろう。ただし、2GB以下のUSBメモリでないと駄目なようだ。

1.USBメモリを接続しておいて、PeToUSBを起動する。赤線を引いた所が、USBメモリのドライブ名になっていることをしっかりと確認する。下図のような設定して、Startボタンを押す。

PeToUSB

USB Removableのラジオボタンにチェックが入っていて、初期化したいUSBメモリ以外の機器を接続しておかなければ、まず正しいドライブが選ばれると思う。しかし一応マイコンピュータとかを見て、ドライブ名が間違っていないことを確認するべきである。間違うと取り返しがつかないことになるからだ。

2.前項の最後のコマンドと同じく、

bootsect /nt60 h:

を実行する。h:の部分は実際には、あなたの環境でのUSBメモリを示すドライブレターを指定する。bootsect.exe自体はXPや2000上で動作するので、Windows AIKなどから抜き出しておけば良い。このコマンドを実行することによって、bootmgから起動するブートセクタが書き込まれるのだ。

必要なファイルのコピー

上記のUSBメモリの初期化を行うと、ExplorerではUSBメモリは空っぽに見える。このなかに、ISOフォルダ以下のフォルダ、ファイルをそのままコピーすれば良い。ISOフォルダをコピーしてはダメだ。ISOフォルダを開いて、Ctrl+Aで全て選択しておいてからコピーすれば良い。ISOの直下の階層が、USBメモリではルートになる必要があるからだ。参考までに、ISOフォルダの構成を再掲しておく。

ISO
├ boot
│ ├ fonts
│ │ ├ chs_boot.ttf
│ │ ├ cht_boot.ttf
│ │ ├ jpn_boot.ttf
│ │ ├ kor_boot.ttf
│ │ └ wgl4_boot.ttf
│ ├ bcd
│ ├ boot.sdi
│ ├ bootfix.bin
│ └ etfsboot.comEFI
│ └ microsoft
│    └ boot
│       ├ fonts
│       │ ├ chs_boot.ttf
│       │ ├ cht_boot.ttf
│       │ ├ jpn_boot.ttf
│       │ ├ kor_boot.ttf
│       │ └ wgl4_boot.ttf
│       └ bcdsources
│ └ boot.wim bootmgr

第5章で使ったバッチファイルを使いたければ、oscdimgのコマンドは不要なのでカットする。(行頭に::を付けても良い。コロン2つだ。こうしておくとその行はコメントと解釈され、実際には実行されなくなる。) そのかわり

xcopy %WinPEDir%\iso\*.* /cherky f:\

という1行を同じ場所に加えておけば、自動的にコピーが行われる。ただし、f:\は実際には、あなたの環境でのUSBメモリに割り当てられたドライブ名にする必要がある


<目次へ> <前のページへ> <次のページへ>