2014.12.01:cmdのコマンドを間違えると言う大失態をしてしまいました('Α`) 修正しました。

「dddi.bat」という自動化ツールと 「UsbBootWatcher」というレジストリ監視ツールを使って、Windows7をUSBブート可能にしちゃう方法の紹介です。

従来から知られている複雑な手順をほぼ自動化したモノで、かなりサクっとUSBブート化が可能です(といっても何をしているのかを理解するのはかなり難しいです)

USB化の手順紹介リンク

以下は、従来から知られている、Windows7をUSBブートさせる方法です。
Windows7をUSBブートする方法
非常に面倒な手順が必要で、かなりの知識と労力が必要です。

今回は、これを自動化した手順を紹介しています。

自動化手順リンク(英文)

 1. The making of the integrated ISO file /bootable CD/DVD/BD
 2. The making of 2048[sct] aligned /2^n[GB]normalized partitions
 3. The making of USB bootable system for Windows 7 (OEM_SLP) / PE3.x

リンク先は英語で解説されています。
「3.」の部分が実際にUSBブート化する手順です。
「1.」と「2.」はUSBブート化した際の各問題に対応できる手段の確保と、パフォーマンス等の最適化が目的になっている、との事です。

「とりあえず試して見たい」と言う場合は、「3.」の項目だけを試しても、Windows7のUSBブート化は可能です。

 

 

と言うことで、このページでは「3.」の項目だけを試し、Windows7がUSBブート化できるかどうかを検証しています。

注意事項

  • この手順は、既にPCにインストールされた状態のWindows7をコピーして、それを元にUSBブート化します。
  • コピー元のマシンで運用することが想定されています。
    複数のPCでUSBメモリを使いまわすような用途は想定されていません。
  • OSのライセンスが「OEM_SLP」の場合のみ、ライセンス認証が発生しません。
    (それ以外のライセンスの場合、ライセンス認証が必要になります)

最低限必要なもの・用意するもの

  • Windows7がインストールされたパソコン
     ・USBブートが可能なこと。
     ・OSのバックアップを取る余裕があること。
     ・実際に運用するならばOSのライセンスが「OEM_SLP」であること。
      WindowsのUSBブート
      ▲クリックで拡大
      管理者権限でコマンドプロンプトを起動し、
      cscript c:\windows\system32\slmgr.vbs -dlv
      と入力するとライセンスの種類が確認できます。
    ※OEM_SLPは、インターネットにも電話にも繋がず、BIOSとDVDの情報のみで認証できるライセンスです(メーカー製PCなどがこのパターン)。
  • 外付けのUSBストレージ
     ・Windows7をインストールできる容量があること。
     ・フォーマットしても問題ないこと。
  • Windowsシステムをバックアップ・リストアできるツール
     ・EaseUS DiskCopy  (サイト内解説※MBR専用/GPT未対応)
     ・Paragon Backup & Recovery  (サイト内解説)
    などが有名。
    追記: MiniTool Partition Wizard Home EditionでもOKとの事。
  • UsbBootWatcher
    ダウンロード (ページ内を UsbBootWatcher.zip で検索して見る)
    常駐型のレジストリ書き換えプログラム。USBドライバの読み込み順などを監視して、USBブート化の為に変更したレジストリが元に戻るのを防ぐツール。
  • dddi.bat
    ダウンロード(テキスト形式)
    今回のキモ。
    Windows7のUSBブート化の手順を自動化するもの。

実行する前の注意

私はWindowsのライセンス認証が良く分かっていないので、このページではその辺が投げっぱなしです。
本気でUSBブート化を試みる人はその辺を自分で調べてから行ってください。
質問されても答える知識がありません。

手順1

「EaseUS DiskCopy」のクローンや、
「Paragon Backup & Recovery」のバックアップとリストア
などを利用して、外付けUSBストレージに Windowsシステムのクローンを作成する。

チェックポイント
※バックアップする際は、パーティション単位でバックアップする。
※Paragon の方がパーティションサイズの変更操作が楽。
※この時点では、まだUSBブートは不可能な状態です。
※事前にシステムをバックアップしておくことを強く推奨

私用のメモ
私用のメモ
▲クリックで拡大

検証に使ったPC・・・Dynabook R731(OEM _SLP)

手順
「Paragon Backup & Recovery」を使い、
  1. Cドライブの内容をDドライブ(同じPC内)にバックアップ
  2. バックアップをFドライブ(USB外付け)にリストア。
※隠しドライブをバックアップに含めたら、上手く起動しなかった。

 

手順2

コピー元PCのCドライブに、任意のフォルダを作成する。
そのフォルダに 解凍した「UsbBootWatcher」と「dddi.bat」を保存する

自分用メモ
「UsbBootWatcher」と「dddi.bat」を保存した図
「UsbBootWatcher」と「dddi.bat」を保存
▲クリックで拡大
保存先のフォルダはテキトーにCドライブ直下の「aaa」とした

 

UsbBootWatcherの保存
UsbBootWatcherの保存
▲クリックで拡大
x86、amd64、両方のフォルダをそのまま置いた

 

手順3

管理者権限のコマンドプロンプトで「dddi.bat」を実行する。

dddi.batの実行例
(以下、UsbBootWatcherとdddi.batの保存先が「C:\aaa」、USBドライブが「D:\」の場合)
 ・cd c:\aaa (カレントディレクトリ変更)
 ・dddi -d C: (Cドライブから情報収集)
 ・dddi -i D: (Dドライブへ情報の移転&UsbBootWatcherのインストール)
と入力する。
※以下、クリーンショットを取るために、Dynabook R731ではなくVMwareで操作をしています。

自分用メモ

cd c:\aaa と入力
cd c:\aaa
▲クリックで拡大
保存先のフォルダはテキトーにCドライブ直下の「aaa」とした

 

dddi -h と入力
dddi -h
▲クリックで拡大
ヘルプが表示される。

dddi -d C: と入力
dddi -d c:
▲クリックで拡大
インストール情報がC:\aaaフォルダに集められる。

フォルダを確認
フォルダを確認
▲クリックで拡大
C:\aaaフォルダにWindowsフォルダが作成され、その中に色々なファイルやフォルダが集められていた。

dddi -i D: と入力
dddi -i D:
▲クリックで拡大
ライセンスがOEM_SLPではない場合は、
「それでも良いか? 本当にこの作業を進めるか?」
など色々聞かれるので「Y」キーを押す。

USBドライブ(Dドライブ)にインストールが始まる
USBドライブにインストールが始まる
▲クリックで拡大
集められたインストール情報がDドライブにインストールされる。
しばらく待っていると終わる。

 

※ここで対象システム(USBデバイス)がUSBブート可能に改変されます。
※UsbBootWatcher自体もコピー先(USBドライブ)のシステムに自動でインストールされます。
※コピー元のCドライブには改変は加えられません。

手順4

対象システムにUSBデバイスを繋ぎ、USBブートさせる。
上手く起動すれば成功。

私用のメモ。

検証に使った Dynabook R731 は、USBストレージから起動できないタイプだった
Dynabook R731
▲クリックで拡大

仕方が無いので、外付けHDDを別PC(デスクトップPC)につなげて見ました。
USBからの起動に成功しました
WindowsのUSBブート
▲クリックで拡大

ただし、多くのドライバは未インストール状態。
WindowsのUSBブート
▲クリックで拡大

そして、(予想はした事だけど)認証が必要な状態。
WindowsのUSBブート
▲クリックで拡大

しばらくすると、デスクトップは真っ暗に
WindowsのUSBブート
▲クリックで拡大

 

なるほど、これは確かにサクっとUSBブート化できそうだ、と確認したものの、USBデバイスを(知人のPC含め)複数のPC間で使いまわしは難しい・・・。
となると、私の場合ちょっと面白い用途が思い浮かばないなあ・・・(^_^;
ということで検証おわり。

 

 

自身の環境で試してみて、「これは使えそうだ」と判断できた場合は、最初に紹介したリンク先の
 1. The making of the integrated ISO file /bootable CD/DVD/BD
 2. The making of 2048[sct] aligned /2^n[GB]normalized partitions
あたりをじっくり試してみると良いかと思います。
また、2ch以下スレッドでWindowsのUSBブートに関する情報交換がされています
 USBブート Windows系システム用 - Windows板 [転載禁止](c)2ch.net
 http://peace.2ch.net/test/read.cgi/win/1416409524/

このページの内容は以上です。

あとがき

これ以上快適なブート環境を得ようと思うと、ちょっと私の手には余るような手順で、これ以上の検証は見送ることにしました。
またコメント欄などで質問を頂いても答えられそうにないこと、ご了承ください。

おまけ、補足

この記事を紹介するにあたり
コメント欄で色々とアドバイスを頂いています。
(アドバイスを頂いているページはこちら)

リンク先について
 1. The making of the integrated ISO file /bootable CD/DVD/BD
 2. The making of 2048[sct] aligned /2^n[GB]normalized partitions
 3. The making of USB bootable system for Windows 7 (OEM_SLP) / PE3.x

 

(1) 問題の検出や、問題発生時に対応できるよう入念な準備
(2) パフォーマンス等の最適化などのため、入念なパーティション設計
(3) USBブート可能なシステムの作成

のように対応します。

- 各問題に対応できる手段を既に確保している
- パフォーマンス等の最適化には、あまりこだわらない

という前提であれば、(1), (2) をとばして、(3) から試験的に実施することも可能です。

$ 4.  Make USB bootable system for Windows 7 (OEM_SLP) / PE3.x
http://hp.vector.co.jp/authors/VA053879/usbboot.htm#sect4

#1 USBデバイスにWindowsシステムのクローンを作成 (まだブート不可能な状態)
#2 ワークディレクトリに UsbBootWatcher を解凍
#3 ワークディレクトリで "dddi.bat" を実行 (対象システムをブート可能に改変する)
#4 対象システムからUSBブートさせる

※事前にシステムをバックアップしておくことを強く推奨します。

 

 

レジストリ設定の変更には、ネット上の情報で SSD などのフラッシュデバイスに有効とされている内容が含まれます。

- 起動時の自動デフラグの停止
- アイドル時の自動デフラグの停止
- アクセス日時更新の停止 (Windows7 ではデフォルトで停止)
- シャットダウン時の仮想メモリ解放の停止
- カーネルの物理メモリへの常駐
- プリフェッチ系の停止
- BSoD (死のブルースクリーン) 発生時の自動的な再起動の停止 (STOPエラーを確認可能にするため)
EWF (Enhanced Write Filter) には対応していません。

 

> あと、OEM_SLPでなければ、別システムに繋ぎなおす度に再認証がかかっちゃいますよね?(^_^;

 

多分そうでしょう。本ツールには、アクティベーション対応機能は実装していません。
OEM_SLP 以外の場合に、実行を継続するか否か問い合わせる機能のみ実装しています。
OEM_SLP 以外のアクティベーション対応については、公に書けないので、某キーワードでネット検索するなどして、
独力で対応していただくことになるでしょう。

試験的な確認を行うだけなら、LANケーブルを抜くなどネット接続を禁止して実験してみるというのは...

 

補足:

本ツールは、ディスティネーションパーティション以外のシステムに変更を加えません。
ディスティネーションパーティションとして、ソースパーティション (例えば実行中のシステム) と同じドライブ文字を指定した場合を除き、
ソースパーティションのシステムに変更を加えません。

仕組みを理解すれば、対象システムや手順など、使い方には様々な応用/バリエーションが考えられると思います。


注意点:

OEM_SLP 以外のライセンスで動作するか未確認です。
リムーバブルデバイスとして認識されるUSBデバイスでの動作には、問題が発生する可能性があります (ネット上の情報、未確認) 。
VHD (Virtual Hard Disk) 上で動作するか未確認です。
Windows8 以降で動作するか未確認です。
Windows XP では動作しません ("reg.exe" コマンドの機能に多くを依存しているため) 。

 

"dddi.bat" は「管理者: コマンド プロンプト」で実行します。
下記は、"dddi -d ..." を実行時の画面出力例です。

C:>dddi -d c: > dddi.log
Please wait for several minutes patiently.
エラー: 指定されたレジストリ キーまたは値が見つかりませんでした
;;/ Error Retry: "MatchingDeviceId" assumed to be "pci\ven_1033&dev_0194"
Check "windows\" for Device class Drivers DisInstalled.
Check "dddi.log" for dddi.


このような場合、"dddi.log" をノートパッドなどのエディタで開き、
"Error Retry" を検索すると、もう少し詳しい情報が得られるかもしれません。

版数ありのレジストリキーが見つからずに「エラー」が発生したので、
版数なしのレジストリキーで "Error Retry" したケースです

 

レジストリ設定の変更には、ネット上の情報で SSD などのフラッシュデバイスに有効とされている内容が含まれます。

- 起動時の自動デフラグの停止
- アイドル時の自動デフラグの停止

- アクセス日時更新の停止 (Windows7 ではデフォルトで停止)
- シャットダウン時の仮想メモリ解放の停止
- カーネルの物理メモリへの常駐 (カーネルのページングの禁止: カーネルには仮想メモリを使用しない)
- プリフェッチ系の停止


フラッシュデバイスではないHDDの場合、「プリフェッチ系の停止」を行わない方が、パフォーマンス的に有利かもしれません。
これらの変更内容を一括して無効にするには、クロスインストール直前で次の4つのレジストリ設定ファイルを削除します。

windows\reg.mod\_S_SOFTWARE.reg
windows\reg.mod\_S_SYSTEM.reg
windows\reg.mod\_X_SOFTWARE.reg
windows\reg.mod\_X_SYSTEM.reg


例えば、ワークディレクトリで、次のような手順になるでしょう。

rd /s /q windows
dddi -d d: > dddi.log
dir windows\reg.mod\_?_S*.reg
del windows\reg.mod\_?_S*.reg
dddi -i e: >> dddi.log


設定を個別に変更する場合は、レジストリ設定ファイルを直接編集する必要があります (レジストリ内容の知識が必要) 。

 

USBブート出来ないPCの場合

 

ノートPCのシステムで、USB HDDが認識されている状態で "dddi.bat" を適用済であれば、
"Plop Boot Manager" からUSBブートできないか、試してみる方法もあります。

The making of the integrated ISO file / bootable CD/DVD/BD
http://hp.vector.co.jp/authors/VA053879/bootcd.htm#sect1_1

- Plop Boot Manager 5.0.14 (USB 3.0 supported) (freeware)
http://www.plop.at/en/bootmanager/download.html

Plop / Elmar Hanlhofer - Boot Managers (2)
http://www.plop.at/en/bootmanagers.html
> USB boot without BIOS support (UHCI, OHCI and EHCI)

 

もし余裕があれば Case #2

#1 デスクトップPCにUSB HDDを接続。
#2 デスクトップPCを内部システムでブート。
#3 デスクトップPCのこのシステムで、USB HDDが認識されていることを確認 (コンピューターの管理、デバイスマネージャー等) 。
#4 デスクトップPCのこのシステムを、USB HDDにコピー (またはバックアップ後リストア)
#5 説明の都合上、デスクトップPCのシステムのドライブ文字を (D:) 、USB HDDのドライブ文字を (H:) と仮定(読み替えて下さい) 。
#6 デスクトップPCで "dddi -d D: > dddi.log"
#7 デスクトップPCで "dddi -i H: >> dddi.log"
#8 USB HDDのシステムでUSBブートできるか試行。

もし、ノートPCのシステムを、デスクトップPCの内蔵ディスクにコピーして、動作可能になった実績のあるシステムがあれば、
その動作可能になったシステムをUSB HDDにコピーし、デスクトップPCで "dddi.bat" を適用すれば、
USBブート可能になるかもしれません (異なるマシンのシステムをベースにしているので、可能性は低いと思います) 。

内蔵ディスクにコピーしても動作可能にならないような、異なるマシンのシステムであれば、
そのシステムに対して "dddi.bat" を適用しても、USBブートしないか、USBブートしても動作可能にはならないと思われます。

 

各システムや、収集された関連情報は、次のようにハードウェアに対応づけられている (依存している) と考えられます。

 

ソースパーティションのシステムから収集された関連情報
↓↑
ソースパーティションのシステム
↓↑
各システムが動作可能なハードウェア (PC)
↓↑
ディスティネーションパーティションのシステム

 

同一マシンの外付けUSBデバイスからUSBブートして、マルチブートを実現することなどを想定しているので、
"Windows To Go" のように、同一システムを複数PC間で動作させることを前提とするような用途には向きません。

ただ、各ハードウェアごとに収集した複数の関連情報をまとめて持ち運び、それらを手動で切り替えて使用することは可能だと思います。

 

> 以前
> http://home.catv.ne.jp/ss/user/yukata/windows7USBboot.html
> を試した時は、2回位は起動できた記憶があるのですが、すぐに起動しなくなっちゃったんですよね(^_^;
> 別PCに繋ぎなおした時か、ドライバをインストールした後か、その辺で起動不能になりました。

 

このサイトでも、UsbBootWatcher の作者も、ドライブを動的に複数のPCにつなぎかえるような使われ方は、
想定していないのではないかと思われます。

それには、デバイスドライバ一式やレジストリ一式を複数管理する手段と、それらを切り替える手段が必要かもしれません。
システムにかなり手を加えることになるだろうと思います。

 

 

必ずしも同一システムでなくてもよいという条件であれば

 

>複数のPC環境で使いまわせたら便利だな・・・と思ったのですが、
> ちょっと難しそうですね(^_^;
>起動しなくなったPCや、ウィルス感染したPCのメンテやバックアップ用途に面白いかな、と思ったのですが、、、そういう用途は従来どおりLinuxのLiveCD/USBかWindows to Goで行おうと思います。

同一のUSB HDDを複数のPC環境で使いまわしたいけれども、そのUSB HDDからブートさせるのは、
必ずしも同一システムでなくてもよいという条件であれば、
従来からのマルチブートのテクニックと "dddi.bat" を組み合わせて実現可能です。

例えば、2つのPC (デスクトップPC、ノートPC) で、同一のUSB HDDを使いまわしたい場合、
USB HDDを3つのパーティション (B0, B1, B2) に分割することを考えます。

- パーティションB0: USBブート可能にしたデスクトップPCシステム専用 (64GB程度?)
- パーティションB1: USBブート可能にしたノートPCシステム専用 (64GB程度?)
- パーティションB2: 複数のPC環境で使いまわすデータ専用 (残りの容量)

#1 デスクトップPCでUSB HDDを認識させたシステムを、USB HDDのパーティションB0へコピー。
#2 デスクトップPCで "dddi.bat" を、USB HDDのパーティションB0へ適用。
#3 ノートPCでUSB HDDを認識させたシステムを、USB HDDのパーティションB1へコピー。
#4 ノートPCで "dddi.bat" を、USB HDDのパーティションB1へ適用。
#5 マスタブートマネージャや、パーティションブートマネージャの構成 (設定) を変更。
(パーティションB0と、パーティションB1の、どちらからもブートできるように設定)

- USB HDDをデスクトップPCに接続した時は、パーティションB0からブートさせる。
- USB HDDをノートPCに接続した時は、パーティションB1からブートさせる。
- システムがクラッシュした場合に備え、システム専用パーティションにデータは保存しない。

 

Plop Boot Manager のインストール方法や、起動方法は多種多様

 

> >Plop Boot Manager
> なるほど、
> 先にCDブートして、そこからUSBブートを・・・というツールなのですね。
>私の場合、「何らかの原因でCDブート出来なくなった場合の緊急手段としてUSBからブーとする方法を確保しておきたい。」という気持ちが強い

"Plop Boot Manager" のインストール方法や、起動方法は多種多様です。
"Plop Boot Manager" をマスタブートマネージャとして、HDDのMBR (Master Boot Record)にインストール可能です。

他のマスタブートマネージャを使っているなどの理由で、
"Plop Boot Manager" をマスタブートマネージャにはしたくない (MBRにはインストールしたくない) という場合は、
他のブートマネージャを経由して起動させるチェインロードも可能なようです。

参考:

Plop Boot Manager 5.0 - Overview of install/start modes
http://www.plop.at/en/bootmanager/startmodes.html
> Hard disk installation
> Start from other boot managers

Plop Boot Manager 5.0 - Install to the hard disk MBR (Master Boot Record)
http://www.plop.at/en/bootmanager/mbrinstall.html

Plop Boot Manager 5.0 - plpbt.bin - LiveCD and other ways to start the Boot Manager
http://www.plop.at/en/bootmanager/plpbt.bin.html

USBブート非対応BIOSでもできるUSBブートに挑戦: とある暇人の飛耳長目
http://hiji-chomoku.seesaa.net/article/268031805.html

PLoP Boot Manager(USBブート非対応PC用起動ディスク) - Palm84 某所の日記
http://d.hatena.ne.jp/palm84/20080816/1218896213

その他 参考リンク


Windows TIPS:Windows 7/8のインストールUSBメモリを作る(WiNToBootic編) - @IT

Plop Boot Manager その1 -USBブートに対応していないPCでUSBからブートする - Ubuntu kledgeb