HDDからWinPEをブートする
ここ1週間ほどモンモンと悩んでいたのはWindows PEをリムバーブルディスク(もしくはUSBメモリ)からブートするのができなかったこと。
HDDからのWinPEのブートは2段階で試してみた。
内蔵HDDからのブート | ⇒それ程問題なく実現 |
外部HDD(もしくはUSBメモリ)からのブート | ⇒これをやりたいが未実現 |
WinPEの性格から考えると外部HDDやUSBメモリに格納しておいて、トラブル時にマシンに接続してそこからブート、修復作業をするというのが一番使い勝手がいいかと思う(USBブートできないマシンではCDブートかPXEブートになるが。)そこで、WinPEをHDからブートする方法を模索してみた。
■ 内蔵HDDから立ち上げる
先ずは、CDからWinPEを立ち上げて、内蔵HDDにWinPEを「インストール」し、そこから立ち上げることから検証してみた。これは、若干の試行錯誤はあったが、WinPEnoブートシーケンスを追っていって難なく実現できた。(あとから分かったのだが、Microsoft自身もその方法を公開していた。「チュートリアル : Windows PE をハード ディスクからブートする」当たり前だが、私が試行錯誤した方法とほとんど同じだった。)
ただし、内蔵HDDからWinPEが立ち上がっても何も嬉しいことはない。WinPEマシンなんてお遊びにはいいかも知れないが使い道はない。(唯一、カスタマイズしたWinPE環境を構築してイメージファイルを作成するのには使えるかも。RAMディスクベースのWinPEでは直接ディスクイメージを作成できないので。)
余り役に立たないかも知れないが、一応、忘れないためにメモしておく。先ずは、潰しても構わないHDDを持ったマシンを使ってCDブートでRAMディスクベースのWinPEを立ち上げて、そこで作業する。(以下、コマンドの手順だけを書いて、特に必要なければ、マシンからのメッセージは書かない。)
X:\windows\system32>diskpart ⇒HDDを初期化するためにdiskpartを起動する DISKPART> lis dis ⇒HDDのリストを確認 DISKPART> sel dis 0 ⇒WinPEをインストールするHDDを指定 DISKPART> cle ⇒HDDの初期化 DISKPART> cre par pri ⇒プライマリ・パーティションの作成 DISKPART> for fs=ntfs label="WINDOWS_PE" compress ⇒フォーマット DISKPART> act ⇒パーティションのアクティベーション DISKPART> ass letter=C ⇒Cドライブとして割り当て DISKPART> exi X:\windows\system32>D: ⇒WinPEのCDドライブへ移行 D:\>imagex /apply SOURCES\BOOT.WIM 1 C:\ ⇒WinPEのファイルシステムをHDDへ展開 D:\>copy BOOTMGR C:\bootmgr ⇒bootmgrをHDDへコピー D:\>mkdir C:\Boot ⇒Bootフォルダの作成 D:\>C: C:\>bcdedit /createstore C:\Boot\BCD ⇒BCDの新規作成 ⇒ローダエントリの作成 C:\>bcdedit /store C:\Boot\BCD /create /d "Windows PE" /application OSLOADER エントリ {87654321-1111-2222-3333-0123456789ab} は正常に作成されました。 C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} device boot C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} osdevice boot C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} systemroot \Windows C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} path \Windows\System32\winload.exe C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} detecthal Yes C:\>bcdedit /store C:\Boot\BCD /set {87654321-1111-2222-3333-0123456789ab} winpe Yes ⇒ブートマネージャの登録 C:\>bcdedit /store C:\Boot\BCD /create {bootmgr} /d "Boot Manager" C:\>bcdedit /store C:\Boot\BCD /displayorder {87654321-1111-2222-3333-0123456789ab} ⇒確認 C:\>bcdedit /store C:\Boot\BCD /enum all Windows ブート マネージャ
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
これでHDDはらWinPEがブートできるようになる。
■ 外部HDDから立ち上げる
USB経由で外部HDDやUSBメモリ(以下、外部メディア)からブートする検証をした。
外部メディアへのWinPEのインストールは、上の内蔵HDDへのインストールと全く同じ手順でOK。
ブートすると、ブートローダが起動してカーネルが起動するところまでは進むのだが、ブルースクリーンが出てきてしまった。「STOP: 0x0000007B」というメッセージが出ている。
A problem has been detected and windows has been shut down to prevent damage to your computer. If this is the first time you've seen this stop error screen, restart your computer. If this screen appears again, follow these steps: Check for viruses on your computer. Remove any newly installed hard drives or hard drive controllers. Check your hard drive to make sure it is properly configured and terminated. Run CHKDSK /F to check for hard drive corruption, and then restart your computer. Technical information: *** STOP: 0x0000007B (0x80399BB0, 0xC0000034, 0x00000000, 0x00000000)
ネットで調べてもそれらいしい情報は殆どないし、MSのホームページでも該当しそうな次の2つしかなかった。
- STOP 0x0000007B::INACCESSIBLE_BOOT_DEVICE "USB CD-ROMデバイスを使って、WinPE CD-ROM...."
- 使用する Windows PE 2.0システムとAMD Barcelonaプロセッサを再起動するとき....
しかし、1番目のパッチはどうもPEに直接当てるものではないし、また、随分古い。2はAMDのBarcelonaプロセッサ(クアッドコアOpteron)で発生するらしいが、InspironはAMDだがBarcelonaではないので、違うっぽし、他のIntelマシンでも同様の現象がでたので、これではないだろう。念のためにPEのイメージファイル(WINPE.WIM)にパッチを当てようと試みたが、
C:\Temp>peimg /import=Windows6.0-KB942813-v3-x86.cab C:\winpe_x86\mount Windows 用プレインストール環境イメージ セットアップ ツール Copyright (C) Microsoft Corporation. All rights reserved. パッケージ C:\Temp\Windows6.0-KB942813-v3-x86.cab を追加しています このパッケージは、指定された Windows PE イメージには適用されません。Windows PE専用 に設計されたオプションのコンポーネント パッケージまたは言語パックをインポート していることを確認してください。このエラーは、パッケージが、別のアーキテクチャま たは別のバージョンの Windows PE 用のものである場合に発生することもあります。 PEIMG は、状態コード 0x800f081e で操作を完了できませんでした。
というメッセージを出してパッチが当たらない。
ブートローダで無事カーネルは動き出しているようで、このメッセージはカーネルが(UNIX風に言えば)パニックを起こしていることになる。ひょっとするとWindows系のカーネルはUSBデバイスからのブートができないのだろうか? ライセンスにうるさいMicrosoftのことだから、WindowsをUSBメモリとかに入れて、あちこちのマシンでブートされてはたまらない、とか考えているのかも。内蔵HDD(=つまりIDEインタフェース)では問題なく立ち上がるが、同じHDDをUSBで外付け接続すると立ち上がらない。
ということで取りあえずは断念。まぁ、CDブートとPXEブートはできるので、まぁいいか、ということにした。