====== wimboot ====== ''wimboot'' is a boot loader for Windows Imaging Format (''.wim'') files. It enables you to boot into a [[https://en.wikipedia.org/wiki/Windows_Preinstallation_Environment|Windows PE (WinPE)]] deployment or recovery environment. You can use ''wimboot'' with [[:start|iPXE]] to [[:howto:winpe|boot Windows PE via HTTP]]. With a Gigabit Ethernet network, a typical WinPE image should download in just a few seconds. ===== Advantages ===== {{ :clipart:lightbulb.png?180x200|A light bulb}} == Speed == ''wimboot'' can download images at the full speed supported by your network, since it can use HTTP rather than TFTP. == Efficiency == ''wimboot'' allows Windows to reuse the memory that was used to hold the RAM disk image; there is no wasted memory. == Ease of use == ''wimboot'' works directly with ''.wim'' image files; there is no need to wrap your ''.wim'' into an ISO or FAT filesystem image. == BIOS/UEFI compatibility == ''wimboot'' allows you to use a single configuration and set of files to boot under both BIOS and UEFI environments. ===== Download ===== You can download the latest version of the ''wimboot'' binary from [[https://github.com/ipxe/wimboot/releases/latest/download/wimboot]]. This is a hybrid binary that will work on both BIOS and 64-bit UEFI systems (including UEFI systems with Secure Boot enabled). You can also download alternative binaries (e.g. for 32-bit UEFI systems) from [[https://github.com/ipxe/wimboot/releases/latest]]. Older versions are available from [[https://github.com/ipxe/wimboot/releases]]. The source code is maintained in a ''git'' repository at [[https://github.com/ipxe/wimboot]]. ===== Getting started ===== 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''. ==== Extract the Windows boot files ==== {{ :clipart:cdrom.jpeg?150x150|A CD-ROM}} 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 wimboot ==== Download the [[https://github.com/ipxe/wimboot/releases/latest/download/wimboot|latest version of wimboot]] and save it to the same directory on your web server. ==== Create the iPXE script ==== 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 ==== Boot using [[:start|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: {{ :screenshots:wimboot.png?600x334 |wimboot booting Windows 7}} {{ :screenshots:win7_installer.png?600x450 |Windows 7 installer booted via wimboot}} ==== Next steps ==== You can use ''wimboot'' to boot any bootable ''.wim'' image. See the [[:howto:winpe|Windows PE tutorial]] for information on how to create and customise your own ''.wim'' images. ===== Licence ===== ''wimboot'' is free, open-source software licensed under the [[https://www.gnu.org/licenses/old-licenses/gpl-2.0.html|GNU GPL]]. ===== Sponsors ===== Portions of the ''wimboot'' development have been sponsored by: [[https://jumptrading.com|{{ :logos:jump.png?165x37 |Jump Trading}}]] [[https://2pintsoftware.com|{{ :logos:2pint.png?106x33 |2Pint Software}}]] [[https://digitalintelligence.com|{{ :logos:digitalintelligence.png?150x28 |Digital Intelligence}}]] ===== Advanced topics ===== {{ :clipart:books.png?180x180|Some books}} ==== Multi-image WIM files ==== A WIM file can contain multiple bootable images. You can use the ''index='' command-line option to select the image to be booted. For example: kernel wimboot index=2 ==== Injected files ==== You can provide additional files to ''wimboot''. These files will appear within the ''X:\Windows\System32'' directory. For example: kernel wimboot initrd winpeshl.ini winpeshl.ini initrd startup.bat startup.bat initrd boot/bcd BCD initrd boot/boot.sdi boot.sdi initrd sources/boot.wim boot.wim boot You can use this to control the boot process after Windows PE has started. For example, you can use a [[:howto:winpe#adding_a_startup_batch_file|startup batch file]] to automatically start the Windows installer from a network share. You can disable this behaviour by using the ''rawwim'' command-line option. For example: kernel wimboot rawwim ==== Custom boot manager ==== ''wimboot'' will attempt to extract an appropriate boot manager (such as ''bootmgr'', ''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 ==== Disabling automatic BCD modifications ==== ''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 ==== Disabling debug messages ==== ''wimboot'' will display some debug messages by default, to assist in diagnosing problems that may occur during booting. You can disable these debug messages by using the ''quiet'' command-line option. For example: kernel wimboot quiet ==== Displaying graphical boot messages ==== ''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 ==== Disabling paging ==== ''wimboot'' will automatically use paging to relocate the data files above 4GB if possible, to allow for the use of large ''.wim'' files on BIOS systems. You can disable this behaviour by using the ''linear'' command-line option. For example: kernel wimboot linear ===== Internals ===== For more detailed information about the internal workings of wimboot, see the [[:appnote:wimboot_architecture|wimboot architecture guide]]. ===== Troubleshooting ===== Try adding the commands ''[[:cmd:imgstat]]'' and ''[[:cmd: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 ''[[:cmd: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.