WinPE 2.x

2011年7月29日 (金)

WindowsPE での解像度変更

「WindowsPE 解像度」でググッて1ページ目に見当たらなかった(2011/07/26)ような気がするので今更感が溢れつつもメモ。
2年ぐらい前に調べた時のメモを元に書き起こしたので今は昔かも。

このページのPC用ページへGo! (モバイル用ページに辿り着いてしまった時用)

WindowsPE で解像度を変更する方法とりあえず4種類

  1. wpeinit.exe での初期化で変更 (32/64bit)
    WindowsPE環境初期化での解像度指定
    追加で入手すべきアプリケーション無し、ただし設定ファイルは新規作成
  2. 「 setres.exe 」 を使う (32bit)
    http://www.iansharpe.com/setres.php
    フリー
  3. 「 Display Changer 」を使う (32/64bit)
    http://12noon.com/
    個人利用、教育利用はfree、業務利用は US$499 (2011/07/26現在)
  4. 「 SetResolution.exe / SetResolution-x64.exe 」を使う (32/64bit)
    一次配布サイト、出所忘却、ローカルにあるファイルのタイムスタンプと朧気な記憶的には Windows7 beta2 の頃に拾ったもの

2.、3.、4. はそれぞれのアプリを WindowsPE 上でコマンドラインなりバッチなりから適当に実行してやれば良いだけなので入手リンク以外特にメモ無し。

よってここは『非Microsoft無し』かつ『とりあえず解像度を変えられれば良い』1.に関してのメモ。

wpeinit で解像度変更

基本は

>wpeinit -unattend=<設定を記述したxml>

となるので、少し楽をするためにこの一行分のコマンドを記述したバッチファイルと設定のxmlファイルのセットを用意。


というわけで WUXGA(1920x1200) の場合の例
wuxga.cmdwuxga.xml を作成

wuxga.cmd
wuxga.xml

※ 32bit/64bit (X86/AMD64) 共用のファイルにして使いまわしたいのでこの内容

これらのファイルをセットで WindowsPE の system32 などパスの通った適当な場所に保存。
同様に HorizontalResolution、VerticalResolution などを変更しつつ、デフォルト解像度に戻す用に svga.cmdsvga.xml 、他にも使いそうな解像度の設定を適当に作成。

以上の準備が済んでいる WindowsPE が起動したら、作成したファイルに応じてプロンプトから

>wuxga

などとしてやれば可能なら解像度が変更されるはず。
wpeinit.exe による初期化(ネットワークなども)が実行されるので瞬時の変更完了とはならない点に一応留意。

この方法での注意点は、wpeinit.exe を実行するということでその他の設定も含めて初期化されてしまい、変更をしている場合その辺の調整が必要な事、解像度の変更に失敗しても何も起きない事、など。初期化の様子は wpeinit.log が生成されているはずなので必要に応じ中を見てチェック。

wpeinit.log の例

 

低解像度のPC、ネットブックなどがなくて WindowsPE 利用時共通の最低解像度として例えば SXGA(1280x1024) が担保される状況なら、設定を記述した sxga.xmlsystem32 に保存したうえで Startnet.cmd

Startnet.cmd

のようにしておくと便利かも。

雑感

64bit環境を含めて色々便利に使うならおそらく「Display Changer」一択、WinPE だけでなく通常のWindows上(XP/7)でも便利。
「 Display Changer 」は 『dc.exe -max』で簡単に最大解像度に変更できるからといって、VMWare Player の中で実行中の WinPE で安易に『 -max 』指定すると『ごめんなさい、舐めてました』と謝る事になったのは良い思い出。
一方、当時の VirtualBox では大したことは無かった。

【2011/11/05:追記】
リンクの修正、タイポの訂正

【2012/02/23:追記】
リンク先の構成変更にともない Display Changer のページへのリンクをやめ、サイトトップへリンクの変更

【2012/05/01:追記】
なぜか自動生成されているモバイルページの方がググられやすい状況が発生してる為、PC用ページへのリンクを追加
「WinPE 解像度」「WindowsPE 解像度」と「Win PE 解像度」「Windows PE 解像度」 でググった結果が違う対策

| | コメント (0)

2009年5月 5日 (火)

PXEブートサーバーを Windows2003 付属のもので構成、他

当時(2008年春頃)探してみると意外と見つけにくかった、Windows 標準のものでPXEブート環境。そして、再構築しようとしてすっかり忘れていたので改めてメモ。
tftpd32 でのPXEブート環境を置き換え。言ってしまうと Windows2003 標準のものだけで PXE ブートさせるより、tftpd32 を利用したままの方が数倍楽だった(2008年夏頃の情報の入手性を鑑みて)。

お世話になったサイトなど

 

準備と方針

  • Windows2003 に標準で備わっているもので PXEブート環境を作る
  • DHCPサーバー兼PXEブートサーバーにする
  • RIS/WDS のような大げさな事はしない、WindowsPE 、memtest86+GAG 等をブートできれば OK
    • WindowsPE 他の組み合わせは PXELINUX(SYSLINUX) で選択可能にする
  • ファイルの置き場 d:\pxe を根っこにして d:\pxe\tftproot に主なファイルを配置
  • WindowsPE の wimファイル の準備(USBやDVD/CDなど)は予め済ませておく (こここのあたりGoogle先生 で)

まず、WindowsPE のみの PXEブート環境、その後 pexlinux で幾つかの PXEブート環境構築、という流れ。

WindowsPE を PXEブート 

まず WindowsPE だけの PXEブート。

tftpd の設定

tftpd は Windows2003 が持つ tftpd.exe を tftpd をサービスに登録し実行させる。
ファイルのputは受け付けないようにする (MS06-077)。

  1. tftpd.exe は
    C:\WINDOWS\system32\dllcache\tftpd.exe
    から取り出して適当な場所(C:\WINDOWS\system32 など)にコピーする
    個人的都合上 PXEブート 関連をひとまとめにしたいので d:\pxe にコピー
  2. tftpd をサービスに登録する際にスタートアップの種類を「自動」にし、ついでにサービスの開始をする場合、次のような感じで
    >sc create tftpd binPath= d:\pxe\tftpd.exe start= auto
    [SC] CreateService SUCCESS

    >net start tftpd
    tftpd サービスを開始します.
    tftpd サービスは正常に開始されました。
    (tftpd.exe へのパスは環境に合わせて適宜変更)
  3. tftpd.exe の設定を変更する為にレジストリ編集
    設定内容は次の3点
    • ルートディレクトリをデフォルトの c:\tftpdroot から d:\pxe\TFTProot に変更
    • putを受け付けないようにする (MS06-077)
    • 受け付けるクライアントのIPアドレスを限定(192.168.0.x)
    次の内容のレジストリファイルを結合するか、直接レジストリを編集


  4. tftpd サービスを再起動してレジストリ設定を反映させる

 

DHCPサーバーの設定 (WindowsPEのみ)

PXEブートさせるために DHCPサーバーへ設定すべき基本項目は次の4つ

オプション名 タイプ 設定値 備考
043 ベンダ固有情報 binary 01 04 00 00 00 00 ff -
060 PXEClient string PXEClient 新規作成
066 ブート サーバー ホスト名 string サーバー名 or サーバーIP -
067 ブートファイル名 string boot/pxeboot.n12 PXEブート時のF12押下不要

「 060 PXEClient 」を除いて他は既存の値を変更可能。唯一新規追加する必要のある 「 060 PXEClient 」は GUI で設定する時には DHCP MMCコンソールの 『規定のオプションの設定』から『追加』してから設定。
コマンドラインから一通り 設定すると次のような感じ。 DHCPサーバー兼PXEサーバーは 192.168.0.1 。

>netsh
netsh>dhcp
netsh dhcp>server 192.168.0.1
netsh dhcp server>add optiondef 60 PXEClient String 0 comment="for PXEブート"

コマンドを正しく完了しました。
netsh dhcp server>set optionvalue 60 STRING PXEClient

コマンドを正しく完了しました。
netsh dhcp server>set optionvalue 43 binary 010400000000ff

コマンドを正しく完了しました。
netsh dhcp server scope>scope 192.168.0.0
netsh dhcp server scope>set optionvalue 66 STRING 192.168.0.1

コマンドを正しく完了しました。
netsh dhcp server scope>set optionvalue 67 STRING boot/pxeboot.n12

コマンドを正しく完了しました。
netsh dhcp server scope>exit

コマンドプロンプトに次のようなものをコピー&ペーストすれば一気に設定可能

comment は適当に。MMCコンソールの GUI でチマチマ入力するより楽?

PXEブートのためのファイルを配置 (WindowsPEのみ)

ファイルの配置は次のような感じで

     
d:\pxe    
TFTProot   tftpd ルートディレクトリ
bootmgr.exe bootmgr
boot WindowsPE 関連置き場
fonts フォント (中にフォントファイルも)
bcd bcd
boot.sdi boot.sdi
pxeboot.n12 ネットワークブートプログラム
winpe21_x64.wim   WinPE2.1 x64 の wim
winpe21_x86.wim WinPE2.1 x86 の wim
winpe30_x64.wim WinPE3.0 x64 の wim
winpe30_x86.wim WinPE3.0 x86 の wim
           

ファイルはそれぞれ次の場所などから調達してコピー

  • ブートマネージャー
    bootmgr.exe
    WindowsPE のブートイメージ wimファイルの中など
    Windows\Boot\PXE
    からコピー
  • network boot program
    pxeboot.n12
    WindowsPE のブートイメージ wimファイルの中など
    Windows\Boot\PXE
    からコピー
  • WindowsPE イメージなど
    fontsフォルダ丸ごと、boot.sdi、各 wim ファイル
    WAIK の WindowsPE 作成作業環境の ISO フォルダの中など
    (作業フォルダ)\ISO
    からコピー
  • bcd
    通常のブータブルUFD/DVD/CD 用の bcd とはディレクトリ構造を若干変えているので配置に合わせて bcd を作り直し

    ブータブルUFD/DVD/CD の場合は通常次のように(それぞれ一行で)
    >bcdedit -store bcd -set <GUID> device ramdisk=[boot]\sources\pe30_x64.wim,{ramdiskoptions}
    >bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\sources\pe30_x64.wim,{ramdiskoptions}
    ramdisk=[boot]\sources\<wimファイル> のようになっているはずなので
    ここでのPXEブート用の配置に合わせて(それぞれ一行で)
    >bcdedit -store bcd -set <GUID> device ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}
    >bcdedit -store bcd -set <GUID> osdevice ramdisk=[boot]\boot\pe_x64.wim,{ramdiskoptions}
    ramdisk=[boot]\boot\<wimファイル> のようにして bcd を作成

    【2009/07/07、2009/08/14:追記】
    BCDストア 作成&編集で多少楽できるバッチファイルはこちら
    リンク先の前者が WinPE2.0 用で、追記された方が WinPE2.1/WinPE3.0 用
    リンク先のバッチファイルを使うには pxeブートに合わせて上記のような『 [boot]\sources 』⇒『 [boot]\boot 』の置換もお忘れ無く

 

実際に PXEブートさせて動作確認が取れれば WindowsPE のみの PXE ブート環境構築は完了。
 


PXELINUX で諸々 PXEブート

WindowsPE 以外も含めて諸々 PXELINUX でブートさせる。
ここで PEXLINUX から起動させるのは、とりあえず次の5種類。

  • WindowsPE
  • Memtest86+ : メモリテスト
  • Memtest86 : メモリテスト
  • GAG : グラフィカルブートマネージャー
  • GParted : パーティションエディタ

WindowsPE系は pxelinux ⇒ WindowsPE のブートマネージャー の2段階で起動。
PXELINUX の「す」の画面は少々寂しいので壁紙付きでメニューを出すようにする。
メモリテストが2つあるのは単なる気分、特に根拠無し。

 

準備

  • WindowsPE に関しては前述のとおり
  • PXELINUX(SYSLINUX) は download を辿ってこのあたりからダウンロード
    syslinux-3.80.zip
    • まず SYSLINUX に関するドキュメントに目を通しておくことをお勧め
    • Google で pxelinux.cfg/default のサンプルを幾つか把握しておくと作業が楽
  • PXELINUXのメニューの壁紙に使う適当な画像ファイルを 640x480 の .jpg か .png で用意
  • Memtest86+ の Pre-Compiled Bootable Binary をダウンロード
    memtest86+-2.11.zip
  • Memtest86 の Free Download から ISO image for creating bootable CD (Windows - zip) をダウンロード
    memtest86-3.5.iso.zip
  • GAG のwebサイトの File download から辿ってダウンロード
    gag4_10.zip
  • GParted のwebサイトの Downloads から Stable か Testing を適当に選んで iso ではなく zip の方をダウンロード
    とりあえず Stable の gparted-live-0.4.4-1.zip

 

DHCPサーバーの設定 (PXELINUX で諸々)

DHCPサーバーへ設定すべき基本項目は次の4つ。前述からの変更点は 067 のブートファイル名のみ。

オプション名 タイプ 設定値 備考
043 ベンダ固有情報 binary 01 04 00 00 00 00 ff -
060 PXEClient string PXEClient -
066 ブート サーバー ホスト名 string サーバー名 or サーバーIP -
067 ブートファイル名 string pxelinux.0 拡張子は必ず .0

コマンドプロンプトに次のようなものをコピー&ペーストすれば一気に設定可能、

変更を加えたら DHCPサーバーサービスを一応再起動させておく。

 

PXEブートの設定(PXELINUXの設定)

PEXLINUX で選択させるのはとりあえず WindowsPE 、Memtest86+ 、Memtest86 、 GAG 、GParted の5種類でファイルの配置は次のような感じ。

     
d:\pxe    
TFTProot   tftpd ルートディレクトリ  
boot WindowsPE 関連置き場
fonts フォント (中にフォントファイルも)
bcd bcd
boot.sdi boot.sdi
startrom.0 pxeboot.n12 をリネームしたもの
winpe21_x64.wim   WinPE2.1 x64 の wim
winpe21_x86.wim WinPE2.1 x86 の wim
winpe30_x64.wim WinPE3.0 x64 の wim
winpe30_x86.wim WinPE3.0 x86 の wim
gparted GParted 関連置き場
initrd1.img initrd1.img
vmlinuz1 vmlinuz1
pxelinux.cfg PXELINUX の設定ファイル置き場
default PXELINUX の設定ファイル
memdisk PXELINUX でFDイメージ起動などで利用
pxelinux.0 PXELINUX の bootstrap program
vesamenu.c32 PXELINUX のグラフィカルメニュー用
wall.png PXELINUX のメニュー壁紙
bootmgr.exe WindowsPE の bootmgr
GAG.dsk GAG のディスクイメージ
memtest86 Memtest86 本体
MEMTEST86+ Memtest86+ 本体
 
 
httpd のドキュメントルートなど
filesystem.squashfs http で適切にアクセス可能な場所に置く
           

 

個別には次のように用意&配置。

WindowsPE 系

  • ブートマネージャー
    bootmgr.exe
    WindowsPE のブートイメージ wim の中など
    Windows\Boot\PXE
    からコピー
  • network boot program
    startrom.0 (pxeboot.n12)
    WindowsPE のブートイメージ wim の中など
    Windows\Boot\PXE
    から pxeboot.n12 を startrom.0 にリネームしてコピー (拡張子は必ず .0 に)
  • WindowsPE イメージなど
    fontsフォルダ丸ごと、boot.sdi、各 wim ファイル
    WAIK の WindowsPE 作成作業環境の ISO フォルダの中など
    (作業フォルダ)\ISO
    からコピー
  • bcd
    PXEブートのディレクトリ構造に合った bcd があればそれをコピー、無ければ bcd を作り直し
  • PXELINUX 用の設定の一例

 

Memtest86+

メモリテストその1。

  • Memtest86+ の Pre-Compiled Bootable Binary (ver.2.11)をダウンロードして解凍
  • 取り出したファイル memtest86+-2.10.bin を MEMTEST86+ にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

Memtest86

メモリテストその2。

  • Memtest86 の Free Download の圧縮された iso イメージ ISO image for creating bootable CD (Windows - zip) をダウンロードして解凍
  • isoイメージから取り出したファイル MEMTEST を memtest86 にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

GAG

グラフィカルなブートマネージャー GAG 。

  • GAG のwebサイトの File download から辿ってパッケージ(ver4.10)をダウンロードして解凍
  • 取り出したファイル disk.dsk を GAG.dsk にリネームして TFTProot にコピー
  • PXELINUX 用の設定の一例

 

GParted

パーティション操作用に GParted 。
GParted のwebサイトで PXEブート に関しての説明を Live CD/USB/PXE あたりから辿って GParted Live on PXE server に目を通しておく 。一部のファイルは http で利用するので注意。

  • GParted のwebサイトの Downloads から Stable か Testing を適当に選んで zip の方をダウンロードして解凍
  • vmlinuz1 と initrd1.img を TFTProot\gparted にコピー
  • filesystem.squashfs は httpd 経由となるので適切に利用可能な場所にコピー
    例えばd:\www\filesystem.squashfs のように細かいことを気にせずドキュメントルートに置いてまず動作確認をとるのが簡単。
  • PXELINUX 用の設定の一例

 

PXELINUX 系

PXELINUX は download を辿ってこのへんからダウンロードした syslinux-3.80.zip を解凍する。ドキュメントは doc の中、メニューに関しては com32/menu/MANUAL、など結構散在している感。
ファイルの準備に関しては、

  • memdisk 、pxelinux.0 、vesamenu.c32、はそれぞれ次の場所あたりにあるので確保して TFTProot にコピー
    • memdisk/memdisk
    • core/pxelinux.0
    • com32/menu/vesamenu.c32
  • 壁紙は 640x480 の .png か .jpg で用意、ここでは wall.png を TFTProot にコピー

設定ファイル default は pxelinux.cfg の中に新規作成。

  • 壁紙を持つ
  • 番号をメニューのラベルにする
    例)
    LABEL 1
    menu label ^1. Windows PE

上記2点を考慮して default を作成すると内容は次のような感じ。

default

 

実際に PXEブート させて動作確認が取れれば とりあえず PXE ブート 環境構築は完了。
 

壁紙を用意した説明を書いて画像が無いのもアレなので実際に PXEブート させると次のような感じ。

Pxeboot

特に珍しい点も凝ったこともPXEブート故の特別なことも無く、メニューの数字で選択するか上下キーで選択して起動開始。
(このエントリでの説明より画面のメニューが多いのは説明を書くのが面倒だったから・・・)

雑感

当時(2008年春頃)調べた時には『 PXE boot Windows 』などでググっても Windows2003 Server 付属もので PXEサーバー を構築するという情報になかなか辿り着けなかった。振り返ってみると『 PXEClient 060 Windows 』なら比較的簡単に到達できたという結果。キーワードを知って検索するのと知らずに検索するのは大違い、というのを思い知ったのが懐かしい。

 

【補足】

【2009/07/07:追記】

  • 参考サイト(tftpd32の時お世話になったサイト)が復活していたのでURLにリンクを張る
  • 抜けていた参考サイト(TechNet)を追加
  • memtest86 のサイトが復活していたので辿るべきファイルを追加編集
  • BCDストア の編集用バッチファイルのあるエントリへのリンクを追加

【2009/08/14:追記】

  • 少し不親切だった bcd 編集用バッチファイルへのリンクの説明を補充

| | コメント (0) | トラックバック (0)

2008年2月22日 (金)

{ramdiskoptions} の罠???

軽くハマッたのでメモ。
Vista SP1 版というか Windows Server 2008 版の WindowsAIK での罠。
ものは Windows Vista SP1 および Windows Server 2008 用の自動インストール キット (AIK) から入手
マニュアル中に AIK1.1、WindowsPE 2.1 との記述がごく一部に散見されるのでこの更新版をそれぞれ WAIK1.1、WinPE2.1 と呼称し、旧版を WAIK1.0、WinPE2.0 と呼称。

bcdストアを編集して複数のwimイメージをマルチブートさせていた所、罠に落ちる。

なぜかこうなる、メニューの項目が同じになってしまう、ここでは全て『Ramdisk options』。

Winpe21menu1

{ramdiskoptions} のエントリは存在すると全部その description に引きずられてしまう様子。
WAIK1.1 のヘルプや bcdedit のコマンドラインヘルプを眺めたものの、記述の方法が変わったとも何なのかわからず???

当面の回避策をトライ&エラーで模索した結果

  1. ルートに存在する bootmgr を WAIK1.0 (WinPE2.0) のもの(2006/11/02 01:53   438,840 bytes)に差し替え
    PXEブートの場合も同様にやはり bootmgr.exe を WAIK1.0 (WinPE2.0) のもの(2006/11/02 18:51   417,896 bytes)に差し替え
  2. WAIK1.1 オリジナルのBCDストアの Windows Setup な {default} エントリをコピーして編集しなおし
  3. {ramdiskoptions} エントリを普通に作成した後、description のみ削除する
    >bcdedit /store bcdストア /deletevalue {ramdiskoptions} description

WinPE2.0、WinPE2.1 への依存というより bootmgr(bootmgr.exe) への依存が大きい模様。
とりあえず上記のどれかの方法で期待値の状態、WinPE2.0 の時の状態、に。

Winpe21menu2

1. はWAIK1.0から離れられないのとなんとなく気持ちが悪く、2. は一度やったら次はやりたくないので、個人的には 3. を採用。

【2008/02/23:追記】
BCDストア編集作業を多少楽にするバッチファイル微修正版

ググっても類例、解決方法、バグとも情報そのものに到らず。。。

何か読み落としているだけな気がしつつも
{ramdiskoptions} に対しての正式な対応方法、ご存じのかた是非とも教えてくださいませ。

| | コメント (0) | トラックバック (0)

2007年11月25日 (日)

WinPE2.0 (WindowsAIK で マルチwimイメージ & DOSブート なUSBメモリ作成)

Windows AIK がらみ、WindowsPE2.0 というよりむしろ bcdedit.exeレジストリ編集に関してのメモ、

  • USBメモリブートで複数のWinPE2.0イメージを選択起動できるようにする
  • そこはかとなく WindowsRE と DOS も選択起動可能にする
  • WindowsPE のコマンドプロンプトを初めから 9999行 のバッファで
  • WindowsPE でも CapsLock と 左CTRL を入れ替え

が、趣旨。
WinPE2.0 (Windows AIK) とか WinPE2.0 & DOS 2in1 ブータブルUSBメモリ など重複ばかりなのは気にせず、ほぼ全部入りメモ。
短縮したいので、Windows Automated Installation Kit (Windows AIK) は WAIK、USBメモリ は WAIK のマニュアルに倣って UFD (USB Flush Device) 、Windows Recovery Environment を Windows RE としたり WinRE としたり。

参考にしたサイトなど

調達 & 準備物

  1. Windows AIK
    ダウンロードセンターの (旧版) Windows 自動インストール キット (AIK) から入手。
  2. UFD
    USBメモリ
    150MB 前後の wimイメージ を切り替えることになるので最低でも 512MB
    eSATA HDD なら大きくて速くて幸せかも
  3. Windows Vista インストールメディア
    WindowsRE を試すなら必要

以下、あると便利

  1. Windows Vista
    WindowsPE2.0 な環境で代替可能ではあるものの Vista があった方が楽。
    手持ちが Vista Business 64bit 版 しか無いので微妙に不便。
  2. VirtualPC 等の仮想環境
    このへん VirtualPC というか VirtualPC 2007 日本語版 からゲット。
    x64 な WinPE2.0 環境も試すには VMware とか。
    直接 UFD を編集する事も多いのであまり使わないかも。
  3. 既存のWinPE2.0
    元があれば一から作るよりは早いので

WinPE2.0 としてのブータブルUSBメモリ作成

まず、WAIK のインストールと WinPE2.0 のブータブルUFD を作成。

WAIK のインストール

  1. ダウンロードセンターからダウンロードしてきた *.img ファイルを DAEMON Tools でマウント (CDに焼くのは面倒なので)
  2. readme.rtf は事前によく読む
    ドキュメントは多少アップデートされている⇒ダウンロードセンター US
  3. 32bit XP SP2 なら必要に応じてWAIK の CD にある HOTFIX\WINDOWSXP-KB914882-X86-JPN を適用 & 再起動
    KB926044 も。
  4. WAIK をインストール
    WAIK の CD の Autorun に任せたり STARTCD.EXE を実行したりして、必要に応じて .NET framework2.0 と MSXML6.0 Purser を入れながらセットアップ
  5. ヘルプの
    [Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド]
    から
    • 「Windows PE をカスタマイズする」
      → 「Windows PE イメージを構築する」と
    • Windows PE をカスタマイズする
      → Windows PE のチュートリアル
      → チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する

    は少なくとも目を通してから作業開始

作業場所は d:\winpe\x86 にしたいので、予め d:\winpe を作成しておく

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする為に以下のように実行 (x86 の場合)
    >copype x86 d:\winpe\x86

  3. コピーが完了したら
    >imagex /apply winpe.wim 1 mount
    のように基本的な作業環境を展開

    カレントディレクトリと作業ディレクトリが一致していなければパスはフルパス指定する
    >imagex /apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mount
    のようにする(上を一行で)
    ここからカレントディレクトリが d:\winpe\x86 である事を前提にして相対パスでの場合のコマンド例

  4. パッケージの確認
    >peimg /list mount
    日本語版 Windows AIK では日本語環境がインストール済みなのが分かる

  5. パッケージの追加
    >peimg /install=WinPE-Scripting-Package mount
    な感じで順次追加

    英語版 Windows AIK で日本語言語パックと日本語WMIパッケージをインストールするには、各パッケージをインポートしてからインストール
    >peimg /import=e:\WINPE_LANGPACKS\X86\JA-JP\LP.CAB mount
    >peimg /import=e:\WINPE_LANGPACKS\X86\JA-JP\WINPE-WMI_JA-JP.CAB mount

    >peimg /install=Microsoft-Windows-WinPE-LanguagePack-Package mount
    >peimg /install=WinPE-WMI-Package mount
    WAIKの言語パックを利用する場合、 e: がWAIKのインストールCDの時は上のような感じで(それぞれ一行で)

  6. 必要なパッケージの追加が完了したら再確認
    >peimg /list mount

  7. パッケージ追加作業の確認が済んだら固める準備
    >peimg /prep mount
    を実行

  8. ドライバの追加
    >peimg /inf=..\drv\sata_ahciVista32\nvstor32.inf mount
    な感じで必要に応じて順次追加 (上を一行で)
    d:\winpe\drv\sata_ahciVista32 に置いたahci ドライバを相対パス指定で追加している例。

  9. WinPE2.0環境を起動直後から101キーボード配列で利用する時には以下も実行
    >peimg /lang=ja-JP /layerdriver=1 mount
    106キーボード配列に戻したい時は /layerdriver=6 で再実行

    日本語IME (IME10)を利用したい時には Microsoft KB926181 を参照

  10. boot.wim 再作成
    >imagex /boot /capture mount ISO\sources\boot.wim "MyPE"
    上を一行で

  11. 確認用 isoイメージ の作成
    >oscdimg -n -betfsboot.com ISO MyPE.iso

    相対パスだと分かりにくさ倍増なので絶対パスでの記述も参考までに
    >oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\MyPE.iso
    上を一行で

  12. 動作確認
    VirtualPC や VMWare で生成した ISOイメージ をマウントして起動
    おかしな事になっていなければWinPE2.0のイメージが完成

    作成した ISOイメージ は DVD(もしくはCD) に焼いておくと何かの時に便利

  13. UFD こと USBメモリ を準備
    Vista上、もしくは WinPE2.0 環境(DVD/CDなどからブートしたWinPE2.0)で 以下のように。 ( XP で diskpart を実行してもUSBリムーバブル系は選択できないので)
    >diskpart
    DISKPART>list disk
    DISKPART>select disk 1
    DISKPART>clean
    DISKPART>create partition primary
    DISKPART>list partition
    DISKPART>select partition 1
    DISKPART>active
    DISKPART>format fs=fat32 label=flash
    DISKPART>assign
    DISKPART>exit
    基本は上のパターン
    disk 番号の確認と partition の確認はその都度しておいた方が無難

  14. 作成している WinPE2.0 イメージである ISO 配下のファイルとフォルダを全て UFD にコピーする
    ここまでの手順の流れなら d:\winpe\x86\ISO の下にあるファイルとフォルダ

  15. USB Flash Device からのブート順位を適切に設定した PC で WinPE2.0 が起動可能か確認する

マルチブート用 wimイメージ の準備

せっかくなので x64 なイメージを少しカスタマイズしつつ作成してみる

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする為に以下のように実行 (x64 の場合)
    >copype amd64 d:\winpe\x64
  3. x86 も x64 も 1. から 10. までのステップは基本的に同じなので省略
    ドライバの追加は x64(amd64) 用になるので注意

  4. レジストリのカスタマイズ
    これが目標の一つ
    CapsLock と 左Ctrl を入れ替える 』 と 『 プロンプトのバッファサイズを増やす
    のサンプル
    1. レジストリエディタを起動する
    2. HKEY_LOCAL_MACHINE を選択 (ハイブの読み込み可能位置で適当に)
    3. ファイル ⇒ ハイブの読み込み で
      d:\winpe\x64\mount\Windows\System32\config

      SYSTEM
      を指定して名前を pesystem とする (名前が重複しないように任意)
    4. 同様に
      ファイル ⇒ ハイブの読み込み で
      d:\winpe\x64\mount\Windows\System32\config

      DEFAULT
      を指定して名前を peuser とする (名前が重複しないように任意)
    5. CapsLock と 左Ctrl を入れ替えを行う
      [HKEY_LOCAL_MACHINE\pesystem\ControlSet001\Control\Keyboard Layout] までたどる
      新規のバイナリ値で "Scancode Map" を以下を追加
      00,00,00,00,00,00,00,00,
      03,00,00,00,3a,00,1d,00,
      1d,00,3a,00,00,00,00,00
      インポートさせるなら以下の内容のファイル (ハイブの読み込み位置には注意!!)

    6. プロンプトのバッファサイズを増やす
      画面バッファとコマンドのヒストリを増やしたいので次の変更
      [HKEY_LOCAL_MACHINE\peuser\Console] までたどる
      新規の dword値 で以下になるように追加
      "ScreenBufferSize"=dword:270f0050
      "HistoryBufferSize"=dword:00000064
      "NumberOfHistoryBuffers"=dword:00000008
      インポートさせるなら以下の内容のファイル (ハイブの読み込み位置には注意!!)

    7. レジストリの編集作業が完了したら読み込んだハイブ
      [HKEY_LOCAL_MACHINE\pesystem]
      [HKEY_LOCAL_MACHINE\peuser]
      を選択してそれぞれ
      ファイル ⇒ ハイブのアンロード
      でアンロードを必ず実行する

  5. 起動直後にプロンプトのウィンドウを3つとメモ帳を開きたいので startnet.cmd をちょこっと編集
    オリジナルは d:\winpe\x64\mount\Windows\System32\startnet.cmd

    と、極めてシンプルなバッチファイル

    プロンプトの画面バッファの値を強制的に上書きとプロンプトのウィンドウとメモ帳を出したいので次のように


    何か追加したいときや別のバッチを呼びたい時はこのファイル startnet.cmd を適宜編集

  6. boot.wim 再作成
    >imagex /boot /capture mount ISO\sources\boot.wim "MyPE x64"
    上を一行で

  7. 仕上がり具合を UFD や VMWare などで確認しておく

 

複数のPEイメージを選択起動 : bcdeditでブートメニュー編集

XP や 2003 で作業をする場合 bcdedit.exe は ja_JP な bcdedit.exe.mui とセットでパスの通った同じ場所にコピーしておくと多少作業がしやすい。
日本語版 WAIK を利用していれば、それぞれ D:\winpe\x86\mount\Windows\System32\bcdedit.exe と D:\winpe\x86\mount\Windows\System32\ja-JP\bcdedit.exe.mui などを利用。


準備

  1. UFD を取り付けドライブレターを確認
    以降ここでは G: とする
    念のために BCDストア のある g:\boot をコピーしておくと吉
  2. 追加したい wim を適当な名前に変えて UFD にコピーする
    1. まず boot.wim を mype64.wim にリネーム
    2. 続いてmype64.wim を g:\source へコピー
  3. プロンプトの準備
    必須ではないけれど、変更していないと不便なので。
    1. プロンプトの「規定値」もしくは「プロパティ」を選択
    2. オプションで
      • バッファサイズ を 100 に
      • バッファ数 を 8 に
      • 簡易編集モード にチェックが入っていなければ チェック
    3. レイアウトで
      • 画面バッファのサイズの高さを 9999 に
    4. プロンプトを短くするために
      >prompt $g

bcdedit でブートメニュー編集

【2008/02/09:追記】
BCDストア編集作業を多少楽にするバッチファイルはこちら

 

  1. BCDストアに {ramdisktoptions} オブジェクトを作成する
    基本は次
    >bcdedit /store BCDストア /create {ramdiskoptions} /d "Ramdisk options"
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdidevice partition=Drive
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    それぞれ一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /create {ramdiskoptions} /d "Ramdisk options"
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice boot
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdipath \boot\boot.sdi
    それぞれ一行で

  2. BCDストアに新しいブート アプリケーション エントリを作成作成する(★1)
    基本は次を一行で
    >bcdedit /store BCDストア /create /d "メニュー項目表示" /application OSLOADER
    実行すると ID (GUID) が生成される

    実際には次のような感じで GUID が生成される
    >bcdedit /store g:\boot\bcd /create /d "MyPE x64" /application   OSLOADER
    エントリ {12345678-abcd-1234-abcd-123456789abc} は正常に作成されました。

  3. 生成された GUID を元に WinPE2.0 wimイメージ用のエントリを作成する(★2)
    エントリの作成は基本的に以下ような感じで
    >bcdedit /store BCDストア /set {GUID} device ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} path \windows\system32\boot\winload.exe

    >bcdedit /store BCDストア /set {GUID} osdevice ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} systemroot \windows

    >bcdedit /store BCDストア /set {GUID} winpe yes

    >bcdedit /store BCDストア /set {GUID} detecthal yes
    それぞれ一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   device ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   path \windows\system32\boot\winload.exe

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   osdevice ramdisk=[boot]\sources\mype64.wim,{ramdiskoptions}

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   systemroot \windows

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   winpe yes

    >bcdedit /store g:\boot\bcd /set {12345678-abcd-1234-abcd-123456789abc}   detecthal yes

  4. 作成したエントリをブートメニューに追加する(★3)
    末尾に追加する場合基本は次
    >bcdedit /store BCDストア /displayorder {GUID} /addlast
    一行で

    実際には次のような感じで
    >bcdedit /store g:\boot\bcd /displayorder {12345678-abcd-1234-abcd-123456789abc}   /addlast

  5. 3つめ、4つめの wimイメージを追加する際には、★1から★3を適切に設定しながら繰り返す
    メニューのタイムアウトやらデフォルトのブート設定やら細かな設定も合わせて行う。。。

 

WindowsRE な wimイメージを作成(抽出)して追加

msdn blog の ここ から。
WindowsVista インストールメディア の boot.wim のボリューム2 に WindowsRE が含まれているので WinPE-SRT-Package に代えて利用。

【2008/02/05 追記】
Vista SP1 版の WAIK のヘルプに上記に相当する内容が追加されている

Windows PE ユーザーズ ガイド

Windows PE をカスタマイズする
⇒ Windows PE のチュートリアル
⇒ チュートリアル : Windows RE イメージを作成する

イメージの展開場所は d:\winpe\winre64 とし、Vista のインストール DVD は e:\ にあるとする。
以上をふまえてざっくり

  1. boot.wim を展開
    >imagex /apply e:\source\boot.wim 2 d:\winpe\winre64

  2. 設定ファイル winpeshl.ini を作成し system32 へ保存。
    winpeshl.ini

    今回の場合 d:\winpe\winre64\Windows\system32\winpeshl.ini に

  3. イメージを固める、次のような感じで
    >imagex /boot /capture winre64 winre.wim "WindowsRE x64"
    上を一行で

  4. UFD にwimイメージをコピーし、BCDストアを編集 ざっくり以下のような感じ
    >bcdedit /store BCDストア /create /d "WindowsRE x64" /application OSLOADER
    エントリ {GUID} は正常に作成されました。

    >bcdedit /store BCDストア /set {GUID} device ramdisk=[boot]\sources\winre.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} path \windows\system32\boot\winload.exe

    >bcdedit /store BCDストア /set {GUID} osdevice ramdisk=[boot]\sources\winre.wim,{ramdiskoptions}

    >bcdedit /store BCDストア /set {GUID} systemroot \windows

    >bcdedit /store BCDストア /set {GUID} winpe yes

    >bcdedit /store BCDストア /set {GUID} detecthal yes

    >bcdedit /store BCDストア /displayorder {GUID} /addlast
    状況に応じて読み替えつつそれぞれ一行で

DOSの追加

ついでにDOSブートも仲間入り。
DOSのブートセクタファイルを dos.bss とした場合、 ざっくり以下のような感じで

>bcdedit /store e:\boot\bcd /create /d "DOS boot - Windows98SE -" /application BOOTSECTOR
エントリ {GUID} は正常に作成されました。

>bcdedit /store e:\boot\bcd /set {GUID} device boot
>bcdedit /store e:\boot\bcd /set {GUID} path \dos.bss
>bcdedit /store e:\boot\bcd /displayorder {GUID} /addlast

それぞれ一行で

DOSのブートセクタ採取は WinPE2.0 & DOS 2in1 ブータブルUSBメモリ の手順で。

 

現時点(2007年11月25日 21:42:22) でその他雑感

この使い方で WindowsRE と呼んで良いのか疑問はのこるものの、iamgex でパーティションサイズを変えつつ復元するときには、役に立つ場合があるのは事実。

プロンプトのバッファサイズの変更は起動後に逐一変える手間が省けるので地味に役立つ。

それと Beta の時には WAIK で提供していたのだから WinPE-SRT-Package を WAIK から削るな、と言っておきたい。

GUI な VistaBootPROEasyBCD も UFD のBCDストアに対しては編集できなかったのは計算外...
そのうち編集できるようになって欲しい。。。

時間対効果を考えると BartPE 、 VistaPE に比べてどれだけのアドバンテージが。。。

【補足&訂正&お詫び】

  • 2007/12/19
    >bcdedit /store BCDストア /set {ramdiskoptions} ramdisksdidevice partition=Drive
    の実例を間違えていたので訂正

    誤)
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice partition boot
    正)
    >bcdedit /store g:\boot\bcd /set {ramdiskoptions} ramdisksdidevice boot

    今日(2007/12/19)、GUID 入力(コピペ)が面倒でバッチファイル作成していて気がついた。。。
  • 2008/02/09
    ひとつ上で言及しているバッチファイルはこちらでリンクと注記も本文に追加
  • 2008/02/09
    プロンプトの画面バッファが上手く機能していなかったことに気がついたのでレジストリを強制的に上書きするように startnet.cmd に追加 (出来たような記憶もあるんだけど???)

 

| | コメント (1) | トラックバック (0)

2007年1月 4日 (木)

WinPE2.0 & DOS 2in1 ブータブルUSBメモリ

こちらの続きのようなもの。
DOS 起動と WinPE2.0起動の USBメモリ を使い分けは少々面倒。
という訳で、合体、2in1 ブータブルUSBメモリ 。

自分の blog であるにも関わらず行きつ戻りつするのが我ながら面倒くさいので全部入りメモ。
短縮したいので、Windows Automated Installation Kit (Windows AIK) は WAIK、USBメモリ は WAIK のマニュアルに倣って UFD (USB Flush Device) としばらく呼称。

調達 & 準備物

  1. Windows AIK
    ダウンロードセンターの (旧版) Windows 自動インストール キット (AIK)から
    • 必要システムとして「Windows XP SP2 (KB926044 適用済み) 」とあるのが気になるが、相変わらず何処にあるのか分からない……。
      [2007/01/29 追記]
      KB926044 が公開されていた。問い合わせてゲットする類のQFE
      http://support.microsoft.com/kb/926044
      これでようやくKB926044の正体が判明
  2. dd
    Windows 環境で作業を完結したいので、Windows版の dd を
    http://www.chrysocome.net/dd
    から最新の dd-0.4beta5.zip を入手。
  3. sysLinux
    http://syslinux.zytor.com/
    download から辿って新しめの物 syslinux-3.31.zip を入手
  4. 『DOS の sys コマンドが利用可能なブータブル FD/CD/UFD などの何か』
    もしくは以下のファイル三つ
    • IO.SYS
    • MSDOS.SYS
    • COMMAND.COM
    ここでの DOS は個人的に Windows98SE のモノを利用。
    生粋の PC-DOS 2000 と WinPE2.0 の組み合わせの選択肢も取りえたものの、sysLinux動作保障外のFAT32で使いたいので、素直に手持ちの Windows98 SE ベースのブータブルCDを利用。

以下、あると便利なので利用

  1. Windows Vista
    今ならまだ RC1 ぎりぎり入手可能かもしれない?
    とりあえず、まだRC1使いまわし
    【補足】プロンプトを使うときは『管理者として実行』が往々にして必要
  2. VirtualPC 等の仮想環境
    WinPE2.0 の仕上がり確認には isoイメージファイルでそのまま確認した方が早い。
    VirtualPC2007 は RC がリリース(2007/01/02)されていたので MicrosoftConnect からゲット
    2GB越えのWinPE2.0 iso というモノを作る訳でもないのでVirtualPC2004でも特に支障はないはず
    (700MB 程度メモリを割り当てられるとかなり快適、1.5GB まで増やして良かったと思える瞬間)

WinPE2.0 としてのブータブルUSBメモリ作成

まず、WAIK のインストールと WinPE2.0 のブータブルDVD を作成。
ブータブルCDにすると、やたら唸って五月蝿い事になりやすいのでブータブルDVDで作成するのがお勧め。

WAIK のインストール

  1. ダウンロードセンターからダウンロードしてきた *.img ファイルを DAEMON Tools でマウント (CDに焼くのは面倒なので)
  2. readme.rtf は事前によく読む
  3. 必要に応じてWAIK の CD にある HOTFIX\WINDOWSXP-KB914882-X86-JPN を適用 & 再起動
  4. WAIK をインストール
    WAIK の CD の Autorun に任せたり STARTCD.EXE を実行したりして、必要に応じて .NET framework2.0 と MSXML6.0 Purser を入れながらセットアップ
  5. ヘルプの
    [Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド]
    から
    • 「Windows PE をカスタマイズする」
      → 「Windows PE イメージを構築する」と
    • Windows PE をカスタマイズする
      → Windows PE のチュートリアル
      → チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する
    に目を通して作業開始

作業場所は d:\winpe\x86 にしたいので、予め d:\winpe を作成しておく

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする為に以下のように実行
    >copype x86 d:\winpe\x86
  3. コピーが完了したら
    >imagex /apply winpe.wim 1 mount
    のように基本的な作業環境を展開

    カレントディレクトリと作業ディレクトリが一致していなければパスはフルパス指定する
    >imagex /apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mount
    のようにする(上を一行で)
    ここからカレントディレクトリが d:\winpe\x86 である事を前提にして相対パスでの場合のコマンド例
  4. パッケージの確認
    >peimg /list mount
    日本語版 Windows AIK では日本語環境がインストール済みなのが分かる

  5. パッケージの追加
    >peimg /install=WinPE-Scripting-Package mount
    な感じで順次追加

    英語版 Windows AIK で日本語言語パックと日本語WMIパッケージをインストールするには、各パッケージをインポートしてからインストール
    >peimg /import=q:\WINPE_LANGPACKS\X86\JA-JP\LP.CAB mount
    >peimg /import=q:\WINPE_LANGPACKS\X86\JA-JP\WINPE-WMI_JA-JP.CAB mount

    >peimg /install=Microsoft-Windows-WinPE-LanguagePack-Package mount
    >peimg /install=WinPE-WMI-Package mount
    WAIKの言語パックを利用する場合、 q: がWAIKのインストールCDの時は上のような感じで(それぞれ一行で)

  6. 必要なパッケージの追加が完了したら再確認
    >peimg /list mount
  7. パッケージ追加作業の確認が済んだら固める準備
    >peimg /prep mount
    を実行

  8. WinPE2.0環境を起動直後から101キーボード配列で利用する時には以下も実行
    >peimg /lang=ja-JP /layerdriver=1 mount
    106キーボード配列に戻したい時は /layerdriver=6 で再実行

    日本語IME (IME10)を利用したい時には Microsoft KB926181 を参照

  9. boot.wim 再作成
    >imagex /boot /capture mount ISO\sources\boot.wim "MyPE"
    上を一行で

  10. 確認用 isoイメージ の作成
    >oscdimg -n -betfsboot.com ISO MyPE.iso

    相対パスだと分かりにくさ倍増なので絶対パスでの記述も参考までに
    >oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\MyPE.iso
    上を一行で

  11. 動作確認
    VirtualPC でできあがった ISOイメージ をマウントして起動
    おかしな事になっていなければWinPE2.0のイメージが完成

    作成した ISOイメージ は DVD(もしくはCD) に焼いておく

  12. UFD こと USBメモリ を準備
    Vista上、もしくは WinPE2.0 環境(DVD/CDなどからブートしたWinPE2.0)で 以下のように。 ( XP で diskpart を実行してもUSBリムーバブル系は選択できないので)
    >diskpart
    DISKPART>list disk
    DISKPART>select disk 1
    DISKPART>clean
    DISKPART>create partition primary
    DISKPART>list partition
    DISKPART>select partition 1
    DISKPART>active
    DISKPART>format fs=fat32 label=flash
    DISKPART>assign
    DISKPART>exit
    基本は上のパターン
    disk 番号の確認と partition の確認はその都度しておいた方が無難

  13. 作成している WinPE2.0 イメージである ISO 配下のファイルとフォルダを全て UFD にコピーする
    ここまでの手順の流れなら d:\winpe\x86\ISO の下にあるファイルとフォルダ

  14. USB Flash Device からのブート順位を適切に設定した PC で WinPE2.0 が起動可能か確認する
    ※1 ここが実は微妙

  15. WinPE2.0 として起動可能な事を確認したらブートセクタを採取
    dd-0.4beta5.zip を解凍して dd.exe をパスの通った場所に置いておいて、UFD が F: の時以下のように
    >dd if=\\.\f: of=nt60.bss bs=512 count=1
    拡張子は必ず .bssにして、ファイル名は任意
    ここではWinPE2.0時のブートセクタのファイルを nt60.bss

DOS としてのブータブルUSBメモリ作成

  1. 予め USBメモリを取り付けた状態で
    『DOS の sys コマンドが利用可能なブータブル FD/CD/UFD などの何か』
    で起動して以下
    >sys c:
    いつもの事ながら DRVSPACE.BIN は削除しておくのが吉

    もしくは
    1. 以下の3つのファイルを UFD にコピー
      • IO.SYS
      • MSDOS.SYS
      • COMMAND.COM
    2. WAIK のインストール先にある sys.exe 、標準でインストールしていれば次のもの
      C:\Program Files\Windows AIK\Tools\PETools\sys.exe
      を使える場所に用意
    3. WinPE2.0 (Vista)上で UFD が F: の場合以下のように
      >sys f:
  2. USB Flash Device からのブート順位を適切に設定した PC で DOS が起動可能か確認する
    ※2 ここも実は微妙

  3. DOS として起動可能な事を確認したらブートセクタを採取
    WinPE2.0 の時のブートセクタを採取した時と同様に、UFD が F: の時には以下のように
    >dd if=\\.\f: of=dos.bss bs=512 count=1
    拡張子は必ず .bss にして、ファイル名は任意
    ここではDOS時のブートセクタのファイルを dos.bss

sysLinux を設定する

  1. ダウンロードしておいた syslinux-3.31.zip を解凍して、現れた win32\syslinux.exe を作業場所にコピー

  2. 設定ファイルを一つ作成
    syslinux.cfg

    ブートのプロンプトで、dos [Enter] で DOS、pe [Enter] で WinPE2.0 となり、12秒放置で dos が自動的に起動する一例。

  3. 採取しておいた二つのブートセクタファイル dos.bssnt60.bss 、および設定ファイル syslinux.cfg を UFD にコピー

  4. コマンドプロンプトで作業場所をカレントにして、 UFD が F: の場合以下のように
    >syslinux f:
  5. USB Flash Device からのブート順位を適切に設定した PC で syslinux による起動が可能か確認する
    ※3 ここはかなり微妙

    期待通りの起動をしないようならコマンドプロンプトで作業場所をカレントにして、 UFD が F: の場合以下も試してみる
    >syslinux -ma f:

以上で、運が良ければ 『WinPE2.0 & DOS 2in1 ブータブルUSBメモリ 』が利用可能なPCでは利用可能に。

補足三点

※1
DOS のブータブルUSBメモリが利用可能であっても、WinPE2.0 のブータブルUSBメモリではブートできない場合もある
DOSの時よりもBIOS依存で条件が厳しいようなので、ココで上手くいかないPCならブータブルDVDの利用を考えた方が良さそう
BIOSによってはUSBメモリの容量如何でリムーバブルデバイスとして扱うかHDDとして扱うかを見ているものもあったりで試してみないと分からないケースがしばしば
※2
USBメモリが C: として起動してこない状態 (A; ないしは B: で起動)では、おそらく WinPE2.0 でも起動できなかったはず
DOS のブータブルUSBメモリを普通の作成手順で作成した時に、C: として起動できる PC で作り直すと吉
※3
FAT16 で一から作りなおせば成功するかもしれない……

自宅で、1GB と 512MB の USBメモリ と3台 のPCで組み合わせ2x3の6通りを確認したところ 3勝3敗。
そもそも WinPE2.0 のブータブルUSBメモリからブートできないケースが。


現時点(2007年1月4日 20:00:17) での感想

最新とはいえないPCだったのが要因とは言え、一言で言って、敗北。
ブータブルUSBメモリが 2in1 で手軽に便利に使える予定はあえなく散る……。

そもそも、下手な方法を取っている気がしてならないのは置いておいて、試した中では DOS>sysLinux(GParted)>>>WinPE2.0 のような難易度の感触。
BIOS次第な昔のCDブートやUSBブートがそうであったようにそのうち解消すんのかね?

3in1 その他

負けっぱなしは悔しい(?)ので、使えるPCで使えれば良いという割り切りついでに、GParted の LiveUSB 版も同居

  1. GPartedLiveUSB から latest 版をダウンロードして解凍
    今回は gparted-liveusb-0.3.1-1.zip
  2. 展開して現れたファイルのうち
    • gparted
    • initrd.gz
    • linux
    を UFD にコピー
  3. gparted のアーカイブに含まれる syslinux.cfg を参考に以下のように編集
    syslinux.cfg
  4. boot.msg を表示するようにしたので boot.msg を以下のように作成
  5. 期待通りの動作が確認できれば完成

さらに BartPE も、、、等と凝りはじめると際限なくなるのでこの程度に留めておくのが精神衛生上良い気がする。

【追記:2007/11/28】

 

| | コメント (0) | トラックバック (0)

2006年12月 2日 (土)

WinPE2.0 (Windows AIK)

晴れて Windows Preinstallation Environment 2.0 こと WinPE2.0 の正式版が利用可能になったので再びメモ。

WinPE2.0 が含まれている Windows Automated Installation Kit (Windows AIK) 正式版が公開されているのをここで知ったのが2日前、公開日は11月15日。

ともあれ、前のBetaの時imagexを使った引越しの時とは異なり、正式版の WinPE2.0 。

調達物

  1. Windows AIK
    入手先は ダウンロードセンターの (旧版) Windows 自動インストール キット (AIK) から
  2. 必要システムとして「Windows XP SP2 (KB926044 適用済み) 」とあるのが気になるが、何処にあるのか分からない……。
    [2007/01/29 追記]
    KB926044 が公開されていた。問い合わせてゲットする類のQFE
    http://support.microsoft.com/kb/926044
    これでようやくKB926044の正体が判明
  3. サイズはほぼ700MB。BDD2007 Beta としてダウンロードした時のおよそ半分。
  4. Virtual PC 2007 Beta
    前の時から更新は無い模様。
    http://www.microsoft.com/windows/virtualpc/default.mspx
    Virtual PC 2007 Beta Available の Microsoft Connect へ(要 Microsoft Live ID)
  5. Windows Vista
    今ならまだ RC1 ぎりぎり入手可能?

Windows AIK をダウンロードしたファイルが *.img になっている、最近の Microsoft の流行なんだろうか?
CDに焼くのは面倒なので DAEMON Tools でマウントして利用。
以下、このイメージファイルを『 Windows AIK の CD 』では長いので『 WAIK の CD 』と呼ぶ。

インストール準備

Beta版をインストールしていたのでアンインストールから。

  1. Betaのアンインストール
    普通に「プログラムの追加と削除」で
  2. WinPE のファイルの削除
    Betaのとき使っていた 作業用ファイル(d:\winpe\x86)の削除
    ここで削除を始めて幾つかのファイルが削除できない事に気が付く。開いていないファイルを開いている等と理不尽な事を言われるので
    1. ファイルの所有権を取得して
    2. ファイルのアクセス権を変更して
    3. 改めてファイルの削除
    として削除

Windows AIK のインストール

久しぶりに突貫仕事のモノを見たという気になった README.RTF 。
これは読んでおかないときっとハマる。

  1. WAIK の CD にある README.RTF を一通り読む
  2. WAIK の CD にある HOTFIX\WINDOWSXP-KB914882-X86-JPN を適用 & 再起動
  3. WAIK をインストール
    WAIK の CD の Autorun に任せたり STARTCD.EXE を実行したりして、必要に応じて .NET framework2.0 と MSXML6.0 Purser を入れながらセットアップ

WinPE2.0 の ISOイメージ作成

ここから先はしばらく 前の時 と基本的に同じ、ほぼコピペ。

インストールすると [スタート]→[すべてのプログラム] → [Windows AIK] ができているはず
基本的にはヘルプを読んでその通りすれば何も難しいことはなく一通り出来る。

ヘルプの
[Windows AIK] → [Documentation] → [Windows PE ユーザーズ ガイド]
から

「Windows PE をカスタマイズする」
→ 「Windows PE イメージを構築する」

を読んでおく(一度はそのままやってみる)

作業場所は d:\winpe\x86 にしたいので、予め d:\winpe を作成しておく

  1. Windows PE Tools コマンド プロンプト 」を実行
  2. 必要ファイルをコピーする
    >copype x86 d:\winpe\x86
  3. コピーが完了したら
    >imagex /apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mount
    のように基本的な作業環境を展開
  4. パッケージの確認
    >peimg /list D:\winpe\x86\mount
    日本語版 Windows AIK では日本語環境がインストール済みなのが分かる
  5. 練習を兼ねて追加してみる
    >peimg /install=WinPE-Scripting-Package D:\winpe\x86\mount
  6. 再確認
    >peimg /list D:\winpe\x86\mount\windows
  7. 追加が済んだら固める準備
    >peimg /prep D:\winpe\x86\mount\windows
    を実行
  8. boot.wim 再作成
    >imagex /boot /capture D:\winpe\x86\mount D:\winpe\x86\ISO\sources\boot.wim "MyPE"
    上を一行で
  9. ISOイメージの作成
    Nero でダイレクトに作るよりはコマンドラインから oscdimg.exe を使った方がはるかに手っ取り早い
    >oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\MyPE.iso
    上を一行で
  10. 確認
    VirtualPC でできあがった ISOイメージ をマウントして起動
    おかしな事になっていなければ完成

あっても損ではないので、作成した ISOイメージ は CD に焼いておくと便利。

USBメモリから WinPE2.0 をブート

【追記:2007/01/04】
WinPE2.0ブータブルUSBメモリ作成に関しての続きのようなものはこちら

ここから先もしばらく 前の時 と基本的に同じ、ほぼコピペ。
前回の時の『Windows Vista の動いているPC』が必須というのは間違い、WinPE2.0 があれば良いので微妙に訂正した手順は次。

WinPE 環境でブートするUSBメモリの作成手順もヘルプにある

Windows PE をカスタマイズする
→ Windows PE のチュートリアル
→ チュートリアル : 起動可能な Windows PE RAM ディスクを UFD に作成する

中身を全て消しても良いUSBストレージデバイスと Windows Vista の動いているPCか、これまでに作成した WinPE2.0 のブータブルCD を用意。

  1. USBメモリ or USB-HDD の準備
    Vista上、もしくは WinPE2.0 環境(CDなどからブートしたWinPE2.0)で 以下のように。 ( XP で diskpart を実行してもUSBリムーバブル系は選択できないので)
    >diskpart
    DISKPART>select disk 1
    DISKPART>clean
    DISKPART>create partition primary size=<size of device>
    DISKPART>select partition 1
    DISKPART>active
    DISKPART>format fs=fat32
    DISKPART>assign
    DISKPART>exit
    基本は上のパターン。
    パーティション構成やファイルシステムは使いやすいように。
    USB-HDD なら NTFS にしたり、パーティションを適当に。
  2. WinPE の CD/DVD を作成していれば ISO 配下を丸ごと USBメモリ にコピー
    ここまでの流れなら D:\winpe\x86\ISO
  3. USBメモリ or USB-HDD の起動順位が適切に設定してあるPCで起動させる

WinPE2.0 をCD/DVDから起動しても、USBメモリはプラグ&プレイで利用できるので、実のところ、USBメモリブートが便利かは微妙。

WinPE2.0 で日本語入力

KB を見ていたら、次を発見。
[KB926181] How to add Input Method Editor (IME) support to Windows PE 2.0
これで WinPE2.0 でもメモ帳等で日本語入力が可能に。

【普通は考慮しない前提条件】

  • 起動している OS は ime2002 の XP で C: から起動
  • Vista の入っているパーティションを K: にマウントしている
  • WinPE2.0 のISOイメージ作成の流れで D:\winpe\x86\mount に作業環境を展開

これら3条件のちょっと特殊な作業用PCでの手順。

  1. KB926181 から日本語imeの説明部分をコピーして WinPEIMEJP.cmd として D:\winpe\x86\mount\Windows に保存
  2. WinPEIMEJP.cmd の中の
    set WinPEWinDir=<Path to Windows Directory of your WinPE image (i.e. C:\myWinPE\Windows)>
    の行を
    set WinPEWinDir=D:\winpe\x86\mount\Windows
    に変更
  3. WinPEIMEJP.cmd の中の
    set IMEBinSrc=%windir%
    の行を
    set IMEBinSrc=K:\Windows
    に変更
  4. WinPEIMEJP.cmd を実行
  5. 普通に WinPE2.0 ISOイメージを作成

起動している OS が Vista なら 3. の手順は不要。
日本語入力も、WinPE2.0 の芸の一つという事で。

プロンプトでは日本語入力ができないので、WinPE2.0 のプロンプトからメモ帳などを実行するといつものIMEツールバーが出てくる

それにしても、当たり前ながら、何も考えずに日本語 Windows AIK で WinPE2.0 を作るとデフォルトのキーボード配列が106になるのでマイッタ……。

 

【訂正&補足 12月16日】

  1. imagex のキャプチャでファイルは削除しなくても上書きされるので、ファイルを削除する説明を修正
  2. ja-JP 環境で 106キーボード配列 でなく、101配列 にしたい時は
    >peimg /lang=ja-JP /layerdriver=1 D:\winpe\x86\mount\windows
    を実行 (peimg /prep の後でも可能)
    106配列に戻す時は /layerdriver=6 にして実行


    【参考】LayeredDriver
    1. PC/AT Enhanced Keyboard (101/102-Key)
    2. Korean PC/AT 101-Key Compatible Keyboard/MS Natural Keyboard (Type 1)
    3. Korean PC/AT 101-Key Compatible Keyboard/MS Natural Keyboard (Type 2)
    4. Korean PC/AT 101-Key Compatible Keyboard/MS Natural Keyboard (Type 3)
    5. Korean Keyboard (103/106 Key)
    6. Japanese Keyboard (106/109 Key)

【追記:2007/11/28】

| | コメント (0) | トラックバック (0)

2006年11月 8日 (水)

imagexで引越し

ついに消えた。
ひんやり夏みかんゼリーをゲットする為には、わざわざ2フロア上の自動販売機まで遠征しなければならない。
売り切れどころの話ではなく悲しい由々しき事態。

さて、WinPE2.0 の実際の利用、というより、imagex.exe の利用。
以前WinPE2.0 のブータブルCD/USBメモリ を作ったので、とりあえず使ってみるのも目的の一つ。
ヘルプには imagex.exe による利用方法のサンプルがあるのでそれを横目で眺めつつHDD交換とCドライブの引越し。

HDD交換前の状態は以下

状態を改めて整理すると、GAG を使ってそれぞれの基本区画を切り替え、Data1以降は拡張区画。 XP x86版、Windows2003 Server 評価版、Vista RC を切り替えて互いに干渉しないように。Vistaの入ってるポジションは基本的に実験区画。入れたり消したりが頻繁な場所。 Windows2003 Server の入っている所も実験区画。
Linux も遊びで入れるだけなので、消して失ってはいけないのは XP の入っている区画とData1だけ。

交換後は次

XP x64 を先頭にして、次に x86、test と基本区画の順序変え。拡張区画はもうData1 を広めにして Linux 関連縮小、今であれば VirtualPC 等で代用できるので無くても良いぐらい、でも作り直すタイミングを作るのが難しいので一応残す。PartitionMagic や GParted 等使えばいつでもできるという話はあっても、その気になるかならないかの方が大きな問題。

WinPE2.0 と imagex の出番は、交換前の XP 32bit のバックアップを録り、交換後のHDDに展開に。
XP 32bit の順序を後ろに持ってきたので、boot.ini の書き換えが必要。
お手軽に WinPE2.0 上から boot.ini の書き換えをしようかと思ったものの、キャプチャしたイメージ内のファイル書き換えの方がそれっぽい気がしたので、今回は WinPE2.0 からの直の書き換えは取りやめ。

XP 32bit 版の区画へ対しては

  1. imagex でのキャプチャ (バックアップ作成)
  2. キャプチャしたイメージファイルをマウントして boot.ini の書き換え
    -> boot.ini の編集で区画移動のつじつま合わせ
  3. 元のパーティションサイズより小さなパーティションへの復元

を行う。

実際の流れ

imagex でのキャプチャ (バックアップ作成)

  1. WinPE2.0 で起動
  2. imagex で C ドライブをキャプチャ、 Gドライブの hdd-img にイメージ snapshot.wim を置く
    >imagex /capture c: g:\hdd-img\snapshot.wim "snapshot"
    上を1行で。
    • 所要時間は 10分程度
    • 2GB のメモリ搭載で、ページファイル無し/ハイバネーションファイル有り、で 7.2GB のCドライブが 2.8GB のsnapshot.wim に
    • /COMPRESS maximum
      これにしても時間がかかるだけであまり小さくならないし、保管用途でもないのでオプションは付けずにそのまま
    • /VERIFY
      この程度の事はした方が良いのかもしれない……

イメージファイル内の boot.ini を編集

  1. 普通に起動
  2. WAIK インストール先
    C:\Program Files\Windows AIK\Tools\x86

    wimfltr.inf
    を 右クリック-> インストール
  3. イメージをマウントするディレクトリ g:\tmp\hddimg を作成
  4. 読み書き可能状態で g:\tmp\hddimg にマウント
    >imagex /mountrw g:\hdd-img\snapshot.wim 1 g:\tmp\hddimg
    上を1行で
  5. 目的の boot.ini である d:\tmp\hddimg\boot.ini を編集
    今回は
    partition(1)
    の部分を
    partition(2)
    に変更して保存
  6. マウントしたイメージファイルに変更を反映させる為に
    >imagex /unmount /commit g:\tmp\hdimg
    上を1行で

元のパーティションサイズより小さなパーティションへの復元

  1. 交換用のHDDを取り付け
  2. 計画通りにパーティションを作成
    どの程度の効能があるかは別にして
    1. パーティションエディタでザクザク適当にパーティションを作成
    2. この作業の流れで関係のない パーティション1,3を非表示設定に
    3. XP のインストールCDで起動して、パーティション2 を一度削除して作りなおし
    4. パーティション2 がアクティブな事を確認
    のいつものオマジナイの手順で。
  3. WinPE2.0 で起動
  4. 一応 Cドライブ をフォーマット
  5. キャプチャしたイメージを復元
    >imagex /apply g:\hdd-img\snapshot.wim 1 c:\
    上を1行で。
    • 所要時間は 6分程度
    • /VERIFY
      復元時もこの程度の事はした方が良いのかもしれない……
  6. 復元が完了したら起動を確認
  7. ドライブレターの確認とドライブレターの再割り当て
  8. 仕上げに GAG をインストール

のようなぐあいで、実のところ最も時間がかかったのは、HDD の付け替え。ケーブルの取り回しをアレコレしていたら無駄に時間を費やしてしまった。

そして、今度は パーティション1 に XP x64 をインストール……

【追記:2007/11/28】

| | コメント (13) | トラックバック (0)

2006年10月17日 (火)

WinPE2.0

【追記:2007/11/28】


気がつけば、Microsoft Windows Preinstallation Environment 2.0 以下 WinPE2.0 、さらに縮めてが WinPE が簡単に手に入るようになっていた。
今度は CD/DVD からだけでなく、USB-HDD 、USBメモリ からの起動にも対応。
「Windows Server World 2006年11月号」に詳しく紹介、これに触発されたので、例によって自分用メモ。

  1. レシピ
    2,3 は好みで選択
    1. まず BDD こと Microsoft Solution Accelerator for Business Desktop Deployment 2007 Beta 2 をゲットする(要 Microsoft Live ID)
      http://www.microsoft.com/technet/desktopdeployment/bdd/2007/default.mspx
      からたどるか、直接 connect サイト
      http://connect.microsoft.com/
      に行って落としてくる。
      大体1.46GB
      ASIA を選択しないと倍程度時間がかかってしまうので注意。

    2. WinPE の環境で遊ぶのに、CDをイチイチ焼くなどという非現実的なことはあり得ないので
      仮想環境 Virtual PC 2004 SP1 も準備。
      この辺から適当に辿ってダウンロードする。
      http://www.microsoft.com/japan/windows/virtualpc/default.mspx

    3. タイミング良く Virtual PC 2007 Beta  も利用可能になっているのでよりアヤシサの増すこちらを活用。
      AMD-V が利用されるアプリケーションだから、使わなければ、という理由もある。
      http://www.microsoft.com/windows/virtualpc/default.mspx
      Virtual PC 2007 Beta Available へ(要 Microsoft Live ID)
    4. Windows Vista
      今なら RC1 をゲット。


  2. 実際に必要なのは BDD に含まれる WAIK こと Windows Automated Installation Kit
    なので、
    1. BDD のセットアップ x86 か x64 で使いまわしが利きやすい x86 を選択して普通にセットアップ
    2. BDD のセットアップが完了したら、インストール先の Program Files\BDD 2007\WAIK から WAIK をセットアップ。
      必要に応じて、.NET framework2.0 と MSXML6.0 Purser をインストールする

  3. WAIK をインストールすると [スタート]→[すべてのプログラム] → [Windows AIK] ができているはず
    基本的にはヘルプを読んでその通りすれば何も難しいことはなく一通り出来る。
    ヘルプの
    Customizing Windows PE
    → Windows PE Walkthroughs
    → Walkthrough: Create a Bootable Windows PE RAM Disk on CD-ROM
    を読んでおく(一度はそのままやってみる)

    一例
    1. 「 Windows PE Tools Command Prompt 」を実行

    2. >copype.cmd x86 d:\winpe\x86
      のように実行、必要なファイルがコピーされる

    3. コピーが完了したら
      >imagex/apply D:\winpe\x86\winpe.wim 1 D:\winpe\x86\mount
      のように基本的な環境を展開

    4. >peimg /install=WinPE-SRT-Package D:\winpe\x86\mount
      練習を兼ねて追加してみる

    5. >peimg /list D:\winpe\x86\mount\windows
      ついでにリスト表示させてみる

    6. 追加が済んだら固める準備
      >peimg /prep D:\winpe\x86\mount\windows

      を実行。ファイル D:\winpe\x86\ISO\sources\boot.wim を削除しておく(残していると次にエラーになるので)

    7. boot.wim 再作成

      >imagex /capture D:\winpe\x86\mount D:\winpe\x86\ISO\sources\boot.wim "testPE" /boot

      上を一行で

    8. ISOイメージの作成
      Nero でダイレクトに作るよりはコマンドラインから oscdimg.exe を使った方がはるかに手っ取り早い

      >oscdimg -n -bD:\winpe\x86\etfsboot.com D:\winpe\x86\ISO D:\winpe\x86\testPE.iso

      上を一行で

    9. 確認
      VirtualPC でできあがった ISOイメージ をマウントして起動
      おかしな事になっていなければ完成


  4. USBメモリ ブート
    DOS のUSBメモリブートでなく、WinPE 環境でブートするUSBメモリの作成手順もヘルプに
    Customizing Windows PE
    → Windows PE Walkthroughs
    → Walkthrough: Create a Bootable Windows PE RAM Disk on UFD

    間違って中身を全て消しても良いUSBストレージデバイスと Windows Vista の動いているPCを準備
    1. USBメモリ or USB-HDD の準備
      Vista上で 以下のように。 ( XP で diskpart を実行してもUSBリムーバブル系は選択できないので)
      >diskpart
      DISKPART>select disk 1
      DISKPART>clean
      DISKPART>create partition primary size=<size of device>
      DISKPART>select partition 1
      DISKPART>active
      DISKPART>format fs=fat32
      DISKPART>assign
      DISKPART>exit
      基本は上のパターン。
      プロンプトはUAC切っておくか、心情的には先に管理者として実行を先にしておきたい。
      パーティション構成やファイルシステムは使いやすいように。
      USB-HDD なら NTFS にしたり、パーティションを適当に。

    2. WinPE の CD/DVD を作成していれば ISO 配下を丸ごと USBメモリ にコピー
      この流れなら D:\winpe\x86\ISO

    3. USBメモリ or USB-HDD の起動順位が適切に設定してあるPCで起動させる

環境さえ整っていれば、拍子抜けするぐらい簡単に出来る、メモの必要性もないぐらい。
USBストレージから WinPE のブートで最難関は、Vista の環境を準備することか。
今は Vista RC1 が手に入るから、問題は無いといえば無い。

Beta段階だけの楽しみ方ということで。

【追記】続き?2006年11月 8日 (水)

| | コメント (5) | トラックバック (1)