Install Windows 7 over PXE from Linux without WAIK WAIK

Menu
  • 1. Overview
  • 2. Services
  • 3. Boot Files
  • 4. Unattended files
  • 5. Troubleshooting
  • 4. Prepare the unattended installation files

    4.1 Supported language

    First we find out what languages are supported on this installation media.
    cat /work/sambashare/win7/sources/lang.ini
    
    That should give you something like
    [Available UI Languages]
    en-US = 3
    
    [Fallback Languages]
    en-US = en-us
    
    Apparently this DVD has the language en-US (with fallback en-us).

    4.2 Determine the OS Flavor

    Now we need to check what flavor is supported by the installation DVD
    cat /work/sambashare/win7/sources/ei.cfg
    
    That should give you something like:
    [EditionID]
    Ultimate
    [Channel]
    OEM
    [VL]
    0
    
    So this is a Windows 7 Ultimate OEM DVD with (non Volume licensed) We need this info to be able to pick an image in the next section:

    4.3 Select the appropriate installation image

    First we make a dump of the install.wim xml info:
    /work/bin/wimxmlinfo /work/sambashare/win7/install.wim | sed 's/\(<\/[A-Z]*>\)/\1\n/g' | sed 's/>\n
    That should give you something like:
    
    <WIM>
    <TOTALBYTES>2073978321</TOTALBYTES>
    <IMAGE INDEX="1">
    <DIRCOUNT>9350</DIRCOUNT>
    <FILECOUNT>46415</FILECOUNT>
    <TOTALBYTES>7661093433</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CA0443</HIGHPART>
    <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CA0463</HIGHPART>
    <LOWPART>0x5D745FDC</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>0</ARCH>
    <PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
    <EDITIONID>Starter</EDITIONID>
    <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>WinNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>nl-NL</LANGUAGE>
    <DEFAULT>nl-NL</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7600</BUILD>
    <SPBUILD>16385</SPBUILD>
    <SPLEVEL>0</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 STARTER</NAME>
    <DESCRIPTION>Windows 7 STARTER</DESCRIPTION>
    <FLAGS>Starter</FLAGS>
    <HARDLINKBYTES>2918646231</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Starter</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Starter</DISPLAYDESCRIPTION>
    </IMAGE>
    <IMAGE INDEX="2">
    <DIRCOUNT>9359</DIRCOUNT>
    <FILECOUNT>46487</FILECOUNT>
    <TOTALBYTES>7681290464</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CA0443</HIGHPART>
    <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CA0463</HIGHPART>
    <LOWPART>0x7466EEDC</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>0</ARCH>
    <PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
    <EDITIONID>HomeBasic</EDITIONID>
    <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>WinNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>nl-NL</LANGUAGE>
    <DEFAULT>nl-NL</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7600</BUILD>
    <SPBUILD>16385</SPBUILD>
    <SPLEVEL>0</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEBASIC</NAME>
    <DESCRIPTION>Windows 7 HOMEBASIC</DESCRIPTION>
    <FLAGS>HomeBasic</FLAGS>
    <HARDLINKBYTES>2933760608</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Basic</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Basic</DISPLAYDESCRIPTION>
    </IMAGE>
    <IMAGE INDEX="3">
    <DIRCOUNT>9576</DIRCOUNT>
    <FILECOUNT>47496</FILECOUNT>
    <TOTALBYTES>8123123919</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CA0443</HIGHPART>
    <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CA0463</HIGHPART>
    <LOWPART>0x8F7022C4</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>0</ARCH>
    <PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
    <EDITIONID>HomePremium</EDITIONID>
    <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>WinNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>nl-NL</LANGUAGE>
    <DEFAULT>nl-NL</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7600</BUILD>
    <SPBUILD>16385</SPBUILD>
    <SPLEVEL>0</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 HOMEPREMIUM</NAME>
    <DESCRIPTION>Windows 7 HOMEPREMIUM</DESCRIPTION>
    <FLAGS>HomePremium</FLAGS>
    <HARDLINKBYTES>3313218351</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Home Premium</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Home Premium</DISPLAYDESCRIPTION>
    </IMAGE>
    <IMAGE INDEX="4">
    <DIRCOUNT>9632</DIRCOUNT>
    <FILECOUNT>47924</FILECOUNT>
    <TOTALBYTES>8004750393</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CA0443</HIGHPART>
    <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CA0463</HIGHPART>
    <LOWPART>0x9DC7BC24</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>0</ARCH>
    <PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
    <EDITIONID>Professional</EDITIONID>
    <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>WinNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>nl-NL</LANGUAGE>
    <DEFAULT>nl-NL</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7600</BUILD>
    <SPBUILD>16385</SPBUILD>
    <SPLEVEL>0</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 PROFESSIONAL</NAME>
    <DESCRIPTION>Windows 7 PROFESSIONAL</DESCRIPTION>
    <FLAGS>Professional</FLAGS>
    <HARDLINKBYTES>3179671026</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Professional</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Professional</DISPLAYDESCRIPTION>
    </IMAGE>
    <IMAGE INDEX="5">
    <DIRCOUNT>9662</DIRCOUNT>
    <FILECOUNT>48073</FILECOUNT>
    <TOTALBYTES>8162882068</TOTALBYTES>
    <CREATIONTIME>
    <HIGHPART>0x01CA0443</HIGHPART>
    <LOWPART>0x6568BDF8</LOWPART>
    </CREATIONTIME>
    <LASTMODIFICATIONTIME>
    <HIGHPART>0x01CA0463</HIGHPART>
    <LOWPART>0xACBCB034</LOWPART>
    </LASTMODIFICATIONTIME>
    <WINDOWS>
    <ARCH>0</ARCH>
    <PRODUCTNAME>Microsoft? Windows? Operating System</PRODUCTNAME>
    <EDITIONID>Ultimate</EDITIONID>
    <INSTALLATIONTYPE>Client</INSTALLATIONTYPE>
    <HAL>acpiapic</HAL>
    <PRODUCTTYPE>WinNT</PRODUCTTYPE>
    <PRODUCTSUITE>Terminal Server</PRODUCTSUITE>
    <LANGUAGES>
    <LANGUAGE>nl-NL</LANGUAGE>
    <DEFAULT>nl-NL</DEFAULT>
    </LANGUAGES>
    <VERSION>
    <MAJOR>6</MAJOR>
    <MINOR>1</MINOR>
    <BUILD>7600</BUILD>
    <SPBUILD>16385</SPBUILD>
    <SPLEVEL>0</SPLEVEL>
    </VERSION>
    <SYSTEMROOT>WINDOWS</SYSTEMROOT>
    </WINDOWS>
    <NAME>Windows 7 ULTIMATE</NAME>
    <DESCRIPTION>Windows 7 ULTIMATE</DESCRIPTION>
    <FLAGS>Ultimate</FLAGS>
    <HARDLINKBYTES>3336944182</HARDLINKBYTES>
    <DISPLAYNAME>Windows 7 Ultimate</DISPLAYNAME>
    <DISPLAYDESCRIPTION>Windows 7 Ultimate</DISPLAYDESCRIPTION>
    </IMAGE>
    </WIM>
    
    Once we've found out what language and windows 7 flavor we're dealing with we can edit the unattended install files. I've highlited the third image, since that is the Ultimate Edition we've found in the previous section. It's for Architecture 0, which is x86.

    4.4 Create/edit the unattended file

    vi /work/sambashare/system1.xml
    vi /work/sambashare/system2.xml
    
    The unattended file looks omething like this (You woul probably want to edit the values in red:
    <?xml version="1.0" encoding="utf-8"?>
    <unattend xmlns="urn:schemas-microsoft-com:unattend">
        <settings pass="windowsPE">
           <component name="Microsoft-Windows-International-Core-WinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <InputLocale>en-US</InputLocale>
                <SystemLocale>en-US</SystemLocale>
                <UILanguage>en-US</UILanguage>
                <UserLocale>en-US</UserLocale>
            </component>
            <component name="Microsoft-Windows-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <ImageInstall>
                    <OSImage>
                        <WillShowUI>OnError</WillShowUI>
                        <InstallTo>
                        <DiskID>0</DiskID>
                        <PartitionID>1</PartitionID>
                        </InstallTo>
                        <InstallFrom>
                            <Path>i:\win7\sources\install.wim</Path>
                            <MetaData wcm:action="add">
                                <Key>/IMAGE/INDEX</Key>
                                <Value>3</Value>
                            </MetaData>
                        </InstallFrom>
                    </OSImage>
                </ImageInstall>
                <UserData>
                    <AcceptEula>true</AcceptEula>
                </UserData>
                <WindowsDeploymentServices>
                    <Login>
                        <WillShowUI>OnError</WillShowUI>
                        <Credentials>
                            <Username>Administrator</Username>
                            <Domain>domain.com</Domain>
                            <Password>Password1</Password>
                        </Credentials>
                    </Login>
                </WindowsDeploymentServices>
            </component>
        </settings>
        <settings pass="oobeSystem">
             <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
                <OOBE>
                     <ProtectYourPC>3</ProtectYourPC>
                    <NetworkLocation>Home</NetworkLocation>
                </OOBE>
                <UserAccounts>
                    <LocalAccounts>
                        <LocalAccount wcm:action="add">
                            <Password>
                                <Value></Value>
                                <PlainText>true</PlainText>
                            </Password>
                            <Name>admin</Name>
                            <Group>Administrators</Group>
                        </LocalAccount>
                    </LocalAccounts>
                </UserAccounts>
                <TimeZone>India Standard Time</TimeZone>
            </component>
        </settings>
        <cpi:offlineImage cpi:source="wim:i:/win7/sources/install.wim#Windows 7 HOMEPREMIUM" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
    </unattend>
    
    Well, once you've done this you should be able to pxe boot a new system and you should be able to choose from the two systems you've configured for auto-deployment. If not, please visit the next section:Troubleshooting share your experiences on the forum on ultimatedeployment.org.

    Continue to part 5

  • Go to part 1: Overview
  • Go to part 2: Configuring and starting services
  • Go to part 3: Prepare the windows boot files
  • Go to part 4: Prepare the unattended installation files
  • Go to part 5: Troubleshooting