Windows PE/RE のネットワークブート

なんちゃあ難しいことはないがやきですが、めもっておくの巻ぜよ。サーバは Windows + TFTPD32 でありんす。

INDEX

【追記】3. のisoブートは ケモノミチ オーニタ 邪道 な香りが漂ってますが、Linuxサーバでもそのまま使える手だったりしますYO!

尚、クライアントPC(PEを起動させるPC)側に必要なメモリ (RAM) について、PE 基本イメージでは 256MB でギリギリ可能かも(※ ビデオRAM共有の場合はだめかも)しれませんが、システム回復オプションを含む RE イメージでは起動してもメニューのアプリケーションが実行できなかったりします。なので、安全を期すには 512MB 以上必要かと愚考いたします。

まずはPE(RE)のみで設定

TFTPルートディレクトリ作成
  1. D:\TFTP とか適当なディレクトリ作成
  2. PE/RE のCD(iso) の内容をコピー

※ Windows 7 なら「システム修復ディスク」の内容そのままでもよろしおま。

x86 (32bit) では、CD内で最低限必要なのはこんだけですけど。(CD内丸ごとコピーの方がいいかと

D:\TFTP
|
+---BOOT
|       BCD
|       BOOT.SDI
|
\---SOURCES
        BOOT.WIM
ファイル追加

下記2点のファイルを追加します。

  • bootmgr.exe
  • pxeboot.n12

このファイルは、boot.wim を展開(※ 7-Zipとかで可能)、1\Windows\Boot\PXE にあります。または、PEのiso作成時の mount\Windows\Boot\PXE にもあるはずです。

D:\TFTP
|   bootmgr.exe
|
+---BOOT
|       BCD
|       BOOT.SDI
|       pxeboot.n12
|
\---SOURCES
        BOOT.WIM
コマンド プロンプトにて取り出し

【追記】Windows AIK のインストールが必要です。

※ 7/Vista では「管理者として実行」すること!

X:\TFTP の所を展開したパスに置換えませう。下記をコピーして窓に貼付するべし。

set target=X:\TFTP
path=%ProgramFiles%\Windows AIK\Tools\%PROCESSOR_ARCHITECTURE%;%path%
pushd %target%
mkdir tmp
imagex /mount sources\boot.wim 1 tmp
copy /y tmp\Windows\Boot\PXE\bootmgr.exe .
copy /y tmp\Windows\Boot\PXE\pxeboot.n12 .\boot
imagex /unmount tmp
rmdir tmp
echo ===== 尾張マスター エラーないか確認したら閉じませう =====

※ MS Essentials とかwimイメージの内部スキャン対応ソフトがインストールされてる環境では数分かかるかも。Nortonは非対応なので数秒でしたが(w。

DHCP/TFTPサーバを設定

※ 【注意】ルーターなど別のDHCPサーバは止めておくのが無難ですよ。

  1. tftpd32 standard edition (zip) をダウンロード
  2. 展開してTFTPルートへコピー
D:\TFTP
|   bootmgr.exe
|   tftpd32.chm
|   tftpd32.exe
|   tftpd32.ini
|
+---BOOT
|       BCD
|       BOOT.SDI
|       pxeboot.n12
|
\---SOURCES
        BOOT.WIM

TFTPD32を起動 「Settings」ボタンを押してサーバー設定。

  • GLOBAL タブで下記にチェック
    • TFTP Server
    • DHCP Server

f:id:palm84:20181224081021p:plain

  • TFTP タブで下記をチェック
    • Base Directory】確認 - ドット (.) または フルパス
    • Option Negotiation
    • Allow '\' As virtual root

f:id:palm84:20181224081024p:plain

※ 尚、PE 2.1 (Vista SP1), PE 3.0 (7) では、TFTPD32の設定で Option Negotiation をオン(PXE Compatibility はオフ)にしないと起動できないようなので注意。PE 2.0 ではどちらでもおkでした。

DHCPタブでDHCPサーバを設定

  • IP pool starting address - 割り当て用(開始)IPアドレス
    • 重複しないように!PCのアドレスが 192.168.11.2 とかなら、とりあえず 192.168.11.200 とかに
  • Size of pool - アドレスを割り当てる台数
  • Boot File - /boot/pxeboot.n12 を指定
  • WINS/DNS Server - DNSサーバアドレス(ルーター or プロバイダのDNSサーバ)
  • Default router - ゲートウェイ(ルーター)アドレス
  • Mask - サブネットマスク(家庭内使用だと殆ど、255.255.255.0 でいいかと)
  • Domain Name - ドメイン(workgroup)名。Windowsネットワークを使うなら指定(無指定でも使える)

f:id:palm84:20181224081027p:plain

起動確認するべし。

f:id:palm84:20181224081030p:plain

起動に成功するとこんな画面が出るのじゃった。

f:id:palm84:20181224081033p:plain

PXELINUXからチェインロード設定

PXELINUXは便利ですよねー

SYSLINUXのファイル追加
  1. SYSLINUXのzip版をダウンロード
  2. 展開して下記ファイルをTFTPルートへコピー
    • \com32\menu\menu.c32
    • \core\pxelinux.0
    • \com32\modules\reboot.c32
    • \modules\poweroff.com

SYSLINUX 5.01 では下記も必要

  • \com32\elflink\ldlinux\ldlinux.c32 (SYSLINUX 5.x 以降では必須)
  • \com32\libutil\libutil.c32 (SYSLINUX 5.x 以降で menu.c32 使うには必須)
  • \com32\lib\libcom32.c32 (SYSLINUX 5.x 以降で reboot.c32 使うには必須)
設定ファイル作成
  1. pxelinux.cfg ディレクトリ作成
  2. その中に default ファイルを作成
  • pxelinux.cfg\default
DEFAULT /menu.c32
PROMPT 0
MENU TITLE Windows PE/RE PXE

LABEL winre
MENU LABEL Windows RE      === chainload pxeboot.n12
PXE /boot/pxeboot.n12

LABEL reboot
MENU LABEL * Reboot
COM32 /reboot.c32

LABEL poweroff
MENU LABEL * Poweroff
COMBOOT /poweroff.com
  • ファイル一覧
D:\TFTP
|   bootmgr.exe
|   menu.c32
|   poweroff.com
|   pxelinux.0
|   reboot.c32
|   tftpd32.chm
|   tftpd32.exe
|   tftpd32.ini
|
+---BOOT
|       BCD
|       BOOT.SDI
|       pxeboot.n12
|
+---pxelinux.cfg ディレクトリ
|       default ファイル
|
---SOURCES
        BOOT.WIM
DHCPサーバ設定
  1. Boot Filepxelinux.0 に変更

f:id:palm84:20181224081325p:plain

起動するとメニュー画面が出るぜよ。

f:id:palm84:20181224081329p:plain

isoイメージからブート

isoをTFTPサーバからメモリ(RAM)にダウンロードしてからブートする方法は2つありますな。

SYSLINUXのMEMDISK
  1. SYSLINUXの \memdisk\memdisk をTFTPルートへコピー
GRUB for DOS
  1. GRUB for DOSのzip版をダウンロード
  2. 展開して grub.exe をTFTPルートへコピー
D:\TFTP
|   bootmgr.exe
|   grub.exe 
|   memdisk
|   menu.c32
|   poweroff.com
|   pxelinux.0
|   reboot.c32
|   tftpd32.chm
|   tftpd32.exe
|   tftpd32.ini
|
+---BOOT
|       BCD
|       BOOT.SDI
|       pxeboot.n12
|
+---pxelinux.cfg
|       default
|
\---SOURCES
        BOOT.WIM
pxelinux.cfg\default の編集

isoファイル名は実際のものに合わせてつかーさい。TFTPルートに置きませう。

  • pxelinux.cfg\default
DEFAULT /menu.c32
PROMPT 0
MENU TITLE Windows PE/RE PXE

LABEL winre
MENU LABEL ^1. Windows RE      === chainload pxeboot.n12
PXE /boot/pxeboot.n12

LABEL winre_grub4dos
MENU LABEL ^2. WinREx86.iso    === grub4dos
LINUX /grub.exe
APPEND keeppxe --config-file="pxe basedir /;map --mem (pd)/WinREx86.iso (0xff);map --hook;chainloader (0xff)"

LABEL winre64_grub4dos
MENU LABEL ^3. WinREamd64.iso  === grub4dos
LINUX /grub.exe
APPEND keeppxe --config-file="pxe basedir /;map --mem (pd)/WinREamd64.iso (0xff);map --hook;chainloader (0xff)"

LABEL winre_memdisk
MENU LABEL ^4. WinREx86.iso    === memdisk
LINUX /memdisk
INITRD /WinREx86.iso
APPEND raw iso

LABEL winre64_memdisk
MENU LABEL ^5. WinREamd64.iso  === memdisk
LINUX /memdisk
INITRD /WinREamd64.iso
APPEND raw iso

LABEL reboot
MENU LABEL * Reboot
COM32 /reboot.c32

LABEL poweroff
MENU LABEL * Poweroff
COMBOOT /poweroff.com

メニューが増えますた。

f:id:palm84:20181224081333p:plain

【追記】「Press any key to boot from CD or DVD...」

isoイメージ内の boot\bootfix.bin を削除していない場合は、isoダウンロード直後に何かキーを押さないと起動がスルーされてしまうので注意。

f:id:palm84:20181224081338p:plain

UltraISO とかでiso内から簡単に削除できます。

めも

... 後で書くかも ...