Windows PE
Windows PE は Windows Vista 以降の Windows のインストールや、システムメンテナンスなどに使うための Windows の軽量版です。完全にメモリ上で動作し、ネットワークから起動することができます。このページでは Arch Linux マシンのフリーソフトウェアパッケージと Microsoft の Windows Automated Installation Kit (WAIK) だけを使って Windows PE イメージをカスタマイズして作成する方法や、ネットワーク上に公開する方法を説明します。WAIK は無償でダウンロードすることができ、Windows PE の初期コピーやブートファイルが含まれた boot.wim
ファイルを展開するのに必要です。
目次
ユースケース
通常、Windows PE のイメージは Windows マシンの Windows Automated Installation Kit (WAIK) を使わないと作成できません。しかしながら、(Arch) Linux マシンを使って Windows PE のイメージを作成・修正して、ネットワーク上に公開して PXE ブートすることも可能です。Windows マシンは必要ありません。以下のような場合に Windows PE が有用です:
- Arch Linux ベースのサーバーを使って、ネットワークから Windows をインストールしたり、ネットワークから Windows PE を起動してシステムの管理をする必要がある場合。Windows ベースのサーバーがなかったり、セキュリティと可搬性を取ってできるだけ Linux サーバーを使いたい、あるいは他の目的で既に Linux サーバーをセットアップしている (わざわざ Windows サーバーなんて立てたくない) などの理由が考えられます。
- Win32 プログラムを実行する Windows 環境が必要な場合。利用可能な Windows マシンが存在せず、Wine を使いたくはない、あるいはプログラムが Wine では上手く動作しないなど。
ブータブル Windows PE ISO の作成
Microsoft のウェブサイト から Windows Automated Installation Kit (WAIK) をダウンロードしてください。
公式リポジトリから fuse[リンク切れ: 置換パッケージ: fuse2], cdrkit[リンク切れ: 置換パッケージ: cdrtools], cabextract をインストールしてください。
WAIK ISO のマウント:
# mkdir /media/waik # mount KB3AIK_EN.iso /media/waik
wimlib に含まれている mkwinpeimg
スクリプトを使ってブータブル Windows PE ISO winpe.iso
を作成:
$ mkwinpeimg --iso --waik-dir=/media/waik winpe.iso
詳しくは man mkwinpeimg
を参照してください。
WAIK ISO のアンマウント:
# umount /media/waik
Windows PE の起動
前記のセクションで書かれているように Windows PE のブータブル ISO (winpe.iso
) を作成したら、以下の方法で Windows PE を起動できます:
仮想マシン
winpe.iso
を CD-ROM と設定して仮想マシンを起動してください。Windows PE はメモリ上で動作するため、十分なメモリを割り当てて下さい。少なくとも ISO の容量以上のメモリが必要になります。利用可能な仮想化ソフトウェアのリストはカテゴリ:仮想化を参照。
CD
winpe.iso
を CD に書き込めば、CD から起動できます。
ネットワーク
Windows PE は PXELINUX と MEMDISK モジュールを使ってネットワークから起動することができます。
syslinux と tftp-hpa をインストールしてください。
TFTP サーバーのルートディレクトリに必要な PXELINUX ファイルをコピー:
# cp /usr/lib/syslinux/{pxelinux.0,menu.c32,memdisk} /var/tftpboot
TFTP サーバーのルートディレクトリに winpe.iso
を配置:
# mv winpe.iso /var/tftpboot
以下のように PXELINUX の設定ファイルを作成:
/var/tftpboot/pxelinux.cfg/default
UI menu.c32 MENU TITLE Network Boot TIMEOUT 50 LABEL winpe MENU LABEL Boot Windows PE from network KERNEL /memdisk INITRD winpe.iso APPEND iso raw LABEL localboot MENU LABEL Boot from local disk LOCALBOOT 0
TFTP サーバーを起動してください。
(Dhcpd や Dnsmasq など) DHCP サーバーを設定して Linux サーバーの IP アドレスから pxelinux.0
をブートファイルとして指定します。DHCP サーバーがルーター上にある場合、カスタムファームウェアをインストールしないと指定できない可能性があるので注意してください。
上記の手順が完了したら、ネットワークから Windows PE を起動することができるはずです。
ネットワークブートのパフォーマンス
TFTP は (118MB 以上はある) winpe.iso
のような巨大なファイルを転送するようには設計されていません。pxelinux.0
ではなく gpxelinux.0
ブートローダーを使って TFTP ではなく HTTP を使って winpe.iso
をロードすることでパフォーマンスを改善できます。
Windows PE のカスタマイズ
wimlib に含まれている mkwinpeimg
スクリプトでは --start-script
や --overlay
オプションを使うことで Windows PE の改造ができます。詳しくは mkwinpeimg
のマニュアルページを見て下さい。
Windows PE をカスタマイズすることで、Windows PE の中で実行したい Windows アプリケーションを追加したり、Windows PE が必要とするドライバーを追加することができます (ドライバーは Windows PE の中で drvload
コマンドを使うことでロードできます)。