Differences
This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision Next revision | Previous revision | ||
|
winpe [2008/03/02 11:56] mcb30 |
winpe [2010/06/05 07:34] (current) sha0 Add info about next-server DHCP option |
||
|---|---|---|---|
| Line 1: | Line 1: | ||
| ====== Booting Windows PE ====== | ====== Booting Windows PE ====== | ||
| + | |||
| + | {{:screenshots:windows_aik.png?303×222 |Windows AIK installation screen}} | ||
| ===== Overview ===== | ===== Overview ===== | ||
| - | Windows Preinstallation Environment (WinPE) is a network-bootable version of Windows designed for installation, troubleshooting or system recovery. It is not a fully-functional Windows system; it can be used only for these specific tasks. If you want to boot a fully functional version of Windows, you need to [[:sanboot|Boot from SAN]] instead. | + | Windows Preinstallation Environment (WinPE) is a network-bootable version of Windows designed for installation, troubleshooting or system recovery. It is not a general-purpose Windows system; it can be used only for these specific tasks. If you want to boot a fully functional version of Windows, you need to [[:sanboot|Boot from SAN]] instead. |
| ===== Obtaining Windows AIK ===== | ===== Obtaining Windows AIK ===== | ||
| - | Windows PE is available as part of the Windows Automated Installation Kit (AIK). Download the AIK from its home page at [[http://www.microsoft.com/downloads/details.aspx?FamilyID=c7d4bc6d-15f3-4284-9123-679830d629f2&DisplayLang=en]], or from the direct download at [[http://download.microsoft.com/download/8/6/d/86d6ba9c-98ff-444e-87ed-3e76772eb2a6/vista_6000.16386.061101-2205-LRMAIK_EN.img]]. | + | Windows PE is available as part of the Windows Automated Installation Kit (AIK). Download the AIK from its home page at [[http://www.microsoft.com/downloads/details.aspx?FamilyID=94BB6E34-D890-4932-81A5-5B50C657DE08&displaylang=en]], or from the direct download at [[http://download.microsoft.com/download/9/c/d/9cdfa30e-5901-40e4-b6bf-4a0086ea0a6a/6001.18000.080118-1840-kb3aikl_en.iso]]. |
| Install the AIK onto a working Windows system (the "technician computer"). The installation requires around 1GB of disk space. | Install the AIK onto a working Windows system (the "technician computer"). The installation requires around 1GB of disk space. | ||
| - | |||
| ===== Setting up WinPE ===== | ===== Setting up WinPE ===== | ||
| - | Open the Windows PE Tools Command Prompt (//Start// -> //All Programs// -> //Microsoft Windows AIK// -> //Windows PE Tools Command Prompt//) and enter the following commands: | + | Open the Windows PE Tools Command Prompt (//Start// -> //All Programs// -> //Microsoft Windows AIK// -> //Windows PE Tools Command Prompt//) and enter the following commands (some of which are case-sensitive). Note that if you intending to install a 64 bit version of Windows, the second command below should specify "amd64" instead of "x86" (amd64 is a generic reference to 64 bit support which includes support for both AMD and Intel based 64bit hardware): |
| mkdir C:\Temp | mkdir C:\Temp | ||
| - | copype x86 C:\Temp\Boot | + | call copype.cmd x86 C:\Temp\Boot |
| + | del /Q etfsboot.com | ||
| + | move ISO\boot\boot.sdi boot.sdi | ||
| + | rmdir /S /Q ISO | ||
| imagex /mount winpe.wim 1 mount | imagex /mount winpe.wim 1 mount | ||
| copy mount\Windows\Boot\PXE\pxeboot.n12 pxeboot.n12 | copy mount\Windows\Boot\PXE\pxeboot.n12 pxeboot.n12 | ||
| copy mount\Windows\Boot\PXE\bootmgr.exe bootmgr.exe | copy mount\Windows\Boot\PXE\bootmgr.exe bootmgr.exe | ||
| + | copy mount\Windows\System32\bcdedit.exe bcdedit.exe | ||
| imagex /unmount mount | imagex /unmount mount | ||
| - | copy ISO\boot\boot.sdi boot.sdi | + | rmdir /Q mount |
| + | bcdedit -createstore BCD | ||
| + | set BCDEDIT=bcdedit -store BCD | ||
| + | %BCDEDIT% -create {ramdiskoptions} -d "Ramdisk options" | ||
| + | %BCDEDIT% -set {ramdiskoptions} ramdisksdidevice boot | ||
| + | %BCDEDIT% -set {ramdiskoptions} ramdisksdipath \Boot\boot.sdi | ||
| + | for /f "tokens=3" %a in ('%BCDEDIT% -create -d "Windows PE" -application osloader') do set GUID=%a | ||
| + | %BCDEDIT% -set %GUID% systemroot \Windows | ||
| + | %BCDEDIT% -set %GUID% detecthal Yes | ||
| + | %BCDEDIT% -set %GUID% winpe Yes | ||
| + | %BCDEDIT% -set %GUID% osdevice ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions} | ||
| + | %BCDEDIT% -set %GUID% device ramdisk=[boot]\Boot\winpe.wim,{ramdiskoptions} | ||
| + | %BCDEDIT% -create {bootmgr} -d "Windows Boot Manager" | ||
| + | %BCDEDIT% -set {bootmgr} timeout 30 | ||
| + | %BCDEDIT% -set {bootmgr} displayorder %GUID% | ||
| + | del /Q bcdedit.exe | ||
| + | |||
| + | Note: When using inside a batch file, replace %a with %%a (twice) in the "for" command parameters. | ||
| + | |||
| + | ===== Transferring WinPE to a TFTP server ===== | ||
| + | |||
| + | Copy the //C:\Temp\Boot// directory to your TFTP server. The //Boot// directory must appear directly within your TFTP server's root. For example, if your TFTP server is running on a Linux system and the TFTP server root is ///var/lib/tftpboot//, then the //C:\Temp\Boot// directory must be copied as ///var/lib/tftpboot/Boot//. | ||
| + | |||
| + | Several of the filenames are case-sensitive, and you **must** ensure that the case is preserved when you copy the files. Assuming that your TFTP server root is ///var/lib/tftpboot//, the filenames should appear as: | ||
| + | |||
| + | * ''/var/lib/tftpboot/Boot'' | ||
| + | * ''/var/lib/tftpboot/Boot/pxeboot.n12'' | ||
| + | * ''/var/lib/tftpboot/Boot/bootmgr.exe'' | ||
| + | * ''/var/lib/tftpboot/Boot/BCD'' | ||
| + | * ''/var/lib/tftpboot/Boot/winpe.wim'' | ||
| + | * ''/var/lib/tftpboot/Boot/boot.sdi'' | ||
| + | |||
| + | ===== Configuring DHCP and TFTP ===== | ||
| + | |||
| + | Configure your DHCP server to hand out //"\Boot\pxeboot.n12"// as the boot filename. | ||
| + | |||
| + | **For ISC DHCPD**, you can do this by adding the following to ///etc/dhcpd.conf//. | ||
| + | |||
| + | next-server XXX.XXX.XXX.XXX; | ||
| + | filename "\\Boot\\pxeboot.n12"; | ||
| + | |||
| + | where the **next-server** details either the IP address or DNS hostname of your TFTP server. | ||
| + | {{ :warning.png}} | ||
| + | |||
| + | <sub>Note that you **must** use a backslash (\) as the path separator, rather than the more usual forward slash (/). If you use a forward slash, //pxeboot.n12// will be unable to locate //bootmgr.exe// and the boot will fail. Your TFTP server must be configured to support the use of backslashes as path separators; see [[:tftp_backslash|Supporting broken TFTP clients]] for instructions on configuring your TFTP server to do this. | ||
| + | |||
| + | Note also that each backslash is doubled within ///etc/dhcpd.conf//; this is because ISC DHCPD treats a backslash as an escape character.</sub> | ||
| + | |||
| + | **For Microsoft DHCP Server**, set the following options | ||
| + | |||
| + | Option Number Option Name Value | ||
| + | 066 Boot Server XXX.XXX.XXX.XXX | ||
| + | 067 Bootfile Name boot\pxeboot.n12 | ||
| + | |||
| + | where option 66 refers to your TFTP server's IP address or DNS hostname. | ||
| + | |||
| + | ===== Booting WinPE ===== | ||
| + | |||
| + | Boot your diskless client using gPXE. If all has gone well, you should see it boot from your WinPE image. It takes quite a long time, since WinPE downloads over 160MB of data via TFTP and also seems to occasionally spend several minutes sitting at a blank screen apparently doing nothing. | ||
| + | {{ :screenshots:winpe.png?400x300 |Windows PE booted via gPXE}} | ||
| + | Congratulations on a successful boot of Windows PE! | ||