This is an old revision of the document!
wimboot
is a boot loader for Windows Imaging Format (.wim
) files. It enables you to boot a Windows PE (WinPE) environment from a RAM disk, without wasting the memory used for the RAM disk image.
You can use wimboot
with iPXE to boot Windows PE via HTTP. With a Gigabit Ethernet network, a typical 200MB WinPE image should download in less than two seconds.
wimboot
can download images at the full speed supported by your network, since it can use HTTP rather than TFTP.
wimboot
allows Windows to reuse the memory that was used to hold the RAM disk image; there is no wasted memory.
wimboot
works directly with .wim
image files; there is no need to wrap your .wim
into an ISO or FAT filesystem image.
wimboot
allows you to use a single procedure and set of files to boot under both BIOS and UEFI environments.
You can download the latest version from http://git.ipxe.org/releases/wimboot/wimboot-latest.zip.
Older versions are available from http://git.ipxe.org/releases/wimboot. The source code is maintained in a git
repository at http://git.ipxe.org/wimboot.git.
If you have a Windows installation DVD-ROM (Vista, Server 2008, or more recent), and a web server (such as Apache or IIS), then you have everything you need to start using wimboot
.
Copy the contents of the Windows installation DVD-ROM to a directory on your web server (e.g. /var/www/win7
for Apache, or C:\inetpub\wwwroot\win7
for IIS).
If you do not have enough disk space to copy the entire contents of the DVD-ROM, then you may copy only the following files:
/boot/bcd /boot/boot.sdi /sources/boot.wim
Download the latest version of wimboot and extract the file wimboot
to the same directory on your web server.
Create a text file boot.ipxe
in the same directory on your web server, containing:
#!ipxe kernel wimboot initrd boot/bcd BCD initrd boot/boot.sdi boot.sdi initrd sources/boot.wim boot.wim boot
Boot using iPXE from the URL of your iPXE script, e.g. http://my.web.server/win7/boot.ipxe
. You should see iPXE download your Windows boot files via HTTP and boot into the Windows installer:
You can use wimboot
to boot any bootable .wim
image. See the Windows PE tutorial for information on how to create and customise your own .wim
images.
wimboot
is free, open-source software licensed under the GNU GPL.
A WIM file can contain multiple bootable images. You can use the index=<N>
command-line option to select the image to be booted. For example:
kernel wimboot index=2
wimboot
will attempt to extract an appropriate boot manager (such as bootmgr.exe
or bootmgfw.efi
) from the WIM file.
You can disable this behaviour by explicitly providing an appropriate set of boot manager binaries. For example:
kernel wimboot initrd bootmgr bootmgr initrd efi/boot/bootx64.efi bootx64.efi
wimboot
will automatically patch standard BIOS-compatible boot configuration data (BCD) files to allow them to be used on UEFI systems, by changing all occurrences of the string “.exe
” to “.efi
”.
You can disable this behaviour by using the rawbcd
command-line option. For example:
kernel wimboot rawbcd
wimboot
will force the Windows boot manager to display error messages in text mode. It does this to work around a bug in some versions of the Windows boot manager, which would otherwise fail to display error messages unless suitable font files are provided.
You can disable this behaviour by using the gui
command-line option and by providing all of the required font files. For example:
kernel wimboot gui initrd boot/fonts/segmono_boot.ttf segmono_boot.ttf initrd boot/fonts/segoe_slboot.ttf segoe_slboot.ttf initrd boot/fonts/segoen_slboot.ttf segoen_slboot.ttf initrd boot/fonts/wgl4_boot.ttf wgl4_boot.ttf
For more detailed information about the internal workings of wimboot, see the wimboot architecture guide.
Try adding the commands imgstat
and prompt
to your iPXE script, to allow you to check that all of the files have loaded correctly. For example:
#!ipxe kernel wimboot initrd boot/bcd BCD initrd boot/boot.sdi boot.sdi initrd sources/boot.wim boot.wim imgstat prompt boot
Check that only the expected files are present in the list. You may need to use the imgfree
command to discard any unwanted files.
You can also try adding the pause
command-line option for wimboot
. For example:
kernel wimboot pause
This will instruct wimboot
to wait for a keypress before booting Windows, to give you a further opportunity to observe any messages that may be displayed.
If you are unable to resolve your problem, then you can contact the iPXE developers and other iPXE users.