Windows PE
Windows PE is a lightweight version of Windows intended to be used for installation of Windows Vista and later versions of Windows, as well as for system maintenance. It runs entirely from memory and can be booted from the network. This page describes how customized Windows PE images can be created, and optionally published on the network, using only free software packages on an Arch Linux machine along with Microsoft's Windows Automated Installation Kit (WAIK). The WAIK can be downloaded at no cost and is only needed to extract the boot.wim
file that contains the initial copy of Windows PE, along with a couple boot files.
Contents
Use cases
Normally, an image of Windows PE can only be created using the Windows Automated Installation Kit (WAIK) on a Windows machine. However, it is also possible to create and modify images of Windows PE using an (Arch) Linux machine, and optionally publish them on the network for PXE booting. No Windows machine is necessary. You may want to do this if:
- you need to install Windows from the network, or boot Windows PE from the network for system administration, using an Arch Linux-based server. This may be because you do not have a Windows-based server, or you prefer using a Linux server because of its improved security and configurability, or you are already using a Linux server for other purposes.
- you need to run a Windows environment to run Win32 programs, you do not have a Windows machine available, and you do not want to use Wine or the programs will not run correctly with Wine.
Creating a bootable Windows PE ISO
Download the Windows Automated Installation Kit (WAIK) from Microsoft's website.
Install fuse, cdrkit, and cabextract from official repositories.
Install wimlibAUR from the AUR.
Mount the WAIK ISO:
# mkdir /media/waik # mount KB3AIK_EN.iso /media/waik
Use the mkwinpeimg
script provided with wimlibAUR to create a bootable Windows PE ISO winpe.iso
:
$ mkwinpeimg --iso --waik-dir=/media/waik winpe.iso
See the man mkwinpeimg
for more information.
Unmount the WAIK ISO:
# umount /media/waik
Booting Windows PE
After creating a bootable ISO of Windows PE (winpe.iso
) as described in the previous section, you may want to boot Windows PE in the following ways:
In virtual machine
Run a virtual machine with winpe.iso
attached as a CD-ROM. Be sure to give it adequate memory, definitely more than the size of the ISO, since Windows PE runs from memory. See Category:Hypervisors for a list of available virtualization software.
From CD
Simply burn winpe.iso
onto a CD, and you can boot from it.
From Network
Windows PE can be booted from the network using PXELINUX and its MEMDISK module.
Install syslinux and tftp-hpa.
Copy needed PXELINUX files to the TFTP server root directory.
# cp /usr/lib/syslinux/{pxelinux.0,menu.c32,memdisk} /var/tftpboot
Put winpe.iso
in the TFTP server root directory.
# mv winpe.iso /var/tftpboot
Create a configuration file for PXELINUX similar to the following:
/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
Start the TFTP server.
Configure your DHCP server (such as Dhcpd or Dnsmasq) to point to pxelinux.0
as the boot file, with the Linux server's IP address. Beware: if your DHCP server is on a router, it may not be possible to do this without installing custom firmware.
After completing the above steps, you should be able to boot Windows PE from the network.
Network boot performance
TFTP is not designed to be used to transfer large files, such as winpe.iso
, which may be 118MB or more. Performance may be improved by using the gpxelinux.0
bootloader instead of pxelinux.0
and loading winpe.iso
using HTTP rather than TFTP.
Customizing Windows PE
The mkwinpeimg
script provided with wimlibAUR supports making modifications to Windows PE using the --start-script
or --overlay
options. See the manual page for mkwinpeimg
for more information.
You may want to do this to add additional Windows applications that you want to run in Windows PE, or to add any additional drivers that Windows PE needs (drivers can be loaded using the drvload
command within Windows PE).