Welcome to TechNet Blogs Sign in | Join | Help

Running Windows Vista on a PC with an Intel Atom processor

Many reviews are claiming that Windows Vista does not run well on a PC with an Intel Atom processor. I had to try this for myself…
I am not going to post benchmark results, but can tell you that the performance is fine for Office applications (tested with Office 2007) and browsing the internet.
The system was not slow at all.
Here is the performance rating:
image

Posted by svengru | 0 Comments

WDS for cross-platform (32 bit WinPE to install a 64 bit OS) deployments

Having a WDS server running already? How about using it to deploy 64 bit versions of Windows Vista and Server 2008 as well?

The 64 bit versions of Windows Vista SP1 and Server 2008 can be deployed using a 32 bit WinPE. This means that you only need to maintain one Windows PE image.

So just add to 64 bit OS images to your WDS and they will be displayed on 64 bit capable PCs:
image

This is the simple part… So how about the unattend files for the images and how about drivers?

You only need one WDS-Client unattend file that controls the WinPE phase of the setup.
This one controls the 32 bit WinPE and the WDS client.
The potential issues you could run into are drivers pathes that your have in that file for the WinPE phase as these would reference
32 bit drivers that will make 64 bit OS installs fail. Solution: Remove all driver references in the WDS-Client unattend file.

So how can we add boot critical drivers? Simple: Add a driver path to the “Offline Service” section of your 32 and 64 bit OS image unattend files.
”Offline Service”? Yes, right “Offline Service” is not only used to update an OS image using Package Manager, but also called by the Windows Setup after the image is
applied to the hard disk. Here is how this looks like in System Image Manager:
image 
"\\wds\REMINST\StorageDriver-x64” is a share on my WDS that contains all necessary storage driver for 64 bit.

You also need to add the missing 32 bit storage drives to your WDS WinPE Image using PEIMG.
A sample script that will help you to automate that process and needs to be launched from the “Windows PE Tools Command Prompt”
looks like this:

imagex /mountrw wds.WIM 1 mount
peimg /inf=drvs\*.inf mount\Windows
imagex /unmount /commit mount

WDSUTIL /Replace-Image /Image:"Custom WDS WinPE Image x86" /ImageType:Boot /Architecture:x86 /ReplacementImage /ImageFile:wds.wim

This mounts my WDS image “wds.wim”. Injects all drivers in the sub directory “drvs”. Unmounts the image and replaces the
current image named "Custom WDS WinPE Image x86" on the WDS with the updated one.

Posted by svengru | 0 Comments

Driver installation and updating made easy: DPInst.exe

Installing or updating drivers on a system does always take a long time since you need to run many different driver installers to get all the devices in a system running. How about just running one installer and all your drivers are installed afterwards? A dream? Stop dreaming and do it right now with the Driver Package Installer (DPinst).

The details are here: http://msdn.microsoft.com/en-us/library/ms791049.aspx

DPInst is part of the Windows Driver Kit (WDK). More details here: http://www.microsoft.com/whdc/devtools/WDK/default.mspx

 

So, how can you use this tool?

  1. Download the WDK in order to get the latest version of DPInst (can be found under the “DIFx” tools)
  2. Create a new directory e.g. “c:\drivers” and copy DPInst.exe to that directory
    Note: There is a different version for x86 and x64
  3. Create a dpinst.xml file to control DPinst.
    All possible settings can be found here: http://msdn.microsoft.com/en-us/library/ms791067.aspx
    An example can look like this:
  4. <?xml version="1.0" ?>
      <dpinst>

    <suppressAddRemovePrograms/>

    <!-- The following search and subDirectory elements direct
         DPInst to search all subdirectories (under the DPInst working directory) to locate driver
         packages. -->
        <search>
          <subDirectory>*</subDirectory>
        </search>

    <!-- The following language element localizes its child elements
         for the English (Standard) language. The child elements
         customize the text that appears on the DPInst wizard pages. -->
        <language code="0x0409">
          <dpinstTitle>Device Driver Updater</dpinstTitle>
          <welcomeTitle>Welcome to the Device Installer!</welcomeTitle>
          <welcomeIntro>This wizard will walk you through updating the drivers for your device.</welcomeIntro>
          <installHeaderTitle>Installing the software for your device...</installHeaderTitle>
          <finishTitle>Congratulations! You finished installing your device drivers.</finishTitle>
        </language>

        <scanHardware/>

    </dpinst>

  5. Create sub directories for drivers and place the driver files (.inf, .sys, cat, .dll, etc.) into these directories.
    My example looks like this:
    image 
  6. Copy the complete directory to an external storage drive or network location and execute DPInst.exe to install / update the drivers
    on that machine. This dialogue will be displayed and pressing “Next” will start the installation…
    image

Done. :-) This will save a lot of your time.

I created a sample package that contains all necessary files for x86 and x64. You can get it here:
 

This sample also contains a script “installdrvs.cmd” which shows you how to use DPInst in silent mode.

Using DPInst in silent mode as part of your Windows XP or Windows Vista installation does work very well and is faster than using
a “Driver Path” in an unattend file as it will only install the drivers that match your hardware and not all drivers present in the driver directory.
So one example would be to add a driver folder containing DPinst,the dpinst.xml file and all drivers to the $OEM$\$1\ folder
(This will be on the C:\ driver after the installation) and then call installdrvs.cmd as “RunSynchronousCommand” during “Audit User” phase of
the Windows Vista setup.  Looks like this in System Image Manager:
image

Have fun.

Posted by svengru | 0 Comments
Filed under: , , , ,

A guide to use WDS for OEM pre-installations… not really, but some good tips and samples

This is not a complete WDS guide as the title already indicates, but I want to share some examples and best practices.

The generic WDS install guide can be found here:
http://technet2.microsoft.com/windowsserver2008/en/library/7d837d88-6d8e-420c-b68f-a5b4baeb52481033.mspx?mfr=true

This will help you to setup or optimise your own WDS sever to do OEM pre-installations of Windows Vista and Server 2008.

 

The most common issue I found is that people are not aware of the different answer files that a WDS server uses, so let’s start with this one.

There are two different answer files:

  1. An unattend.xml file that controls the Windows PE phase (connect to the WDS server, load storage driver, partition the disk, etc.) of the setup
    This one needs to be place in “c:\RemoteInstall\WdsClientUnattend\”.  Than right-click on your WDS server in Server Manager and select properties.
    The following dialogue will be displayed and you can select the unattend file:
    image 
    Change the settings as displayed and select the unattend file that you created and placed in “c:\RemoteInstall\WdsClientUnattend\”.
    I created a sample unattend.xml file for you that you can download here:

    You need to edit this file using "System Image Manager” (part of the OPK) to change your server, username & password details.
    This sample includes an entry that points to “c:\RemoteInstall\StorageDriver-x86” for storage driver updates. You need create that directory or delete the entry.
  2. The image unattend file. This file controls the rest of the setup process and is image specific.
    You can still use one answer file for all your images including Windows Vista and Server 2008. There is no need to create separate ones.
    Right-click on an Install Image and select properties. Make the changes as shown below and select an unattend file:
    image
    I created a sample file as well. This one works for Windows Vista and Server 2008. Get is from here:

    This Zip-File contains the sample unattend file and a sample “$OEM$” Folder as well. You need to edit the unattend file to change your support information.
    Once you select an image in WDS for an install in unattended mode a new “install” folder that contains the unattend file you selected will be created.
    This is “c:\RemoteInstall\Images\Vista SP1\install\” in my example. This folder contains a folder called “unattend”. In that folder is a copy of the unattend file you just selected.
    Place the “$OEM$” sample in the “install” folder, so that this folder now contains the “unattend” and the “$OEM$” folder.

Try it! You will be able to do a fully unattend installation of Windows Vista or Server 2008 now. This installation will end in Audit Mode, so that you can continue to pre-install more applications.

The sample “$OEM$” folder also contains a script that will change the unattend file after the installation has finished and the PC enters Audit Mode.
This new unattend file is copied to ”c:\Windows\Panther” and controls the Sysprep and next OOBE experience.
This sample will keep all device drivers during the Sysprep Phase and not prompt the end-user for language and region specific settings during OBBE.

Posted by svengru | 1 Comments
Filed under: , ,

Windows Vista: Start Windows Update via script in Audit Mode

Windows Update is not enabled by default in Audit Mode.

This CMD script will enable it and check for updates:

NET STOP "Windows Update"
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v AUOptions /t REG_DWORD /d 00000004
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v ScheduledInstallDay /t REG_DWORD /d 00000000
REG ADD "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WindowsUpdate\Auto Update" /v ScheduledInstallTime /t REG_DWORD /d 00000003
NET START "Windows Update"
WUAUCLT /DETECTNOW

Posted by svengru | 0 Comments
Filed under: , ,

WDS Client DHCP issues… Here is one solution

I was on the road last Friday and help one of my partners to setup a network based deployment for his PC production floor.
It all worked fine until we hit this error message:

wdsdhcperror

Great :-(

So the first assumption was that the network card driver is missing in the WDS Windows PE image.
I added the latest driver using the following steps:

  1. Exported the current boot image from WDS server (right click on the boot image and select “Export Image”) to c:\PE\wds.wim
  2. Checked that the OPK (AIK will work as well) for Windows Vista was installed
  3. Opened the “Windows PE Tools Command Prompt” and changed to the c:\PE directory
  4. Created a “mount” directory (“mkdir mount” will do)
  5. Mounted the exported wds.wim image: “imagex /mountrw wds.wim 2 mount
    It’s important to use the index “2” as the wds.wim will contain 2 images.
  6. Downloaded and extracted the latest network driver to c:\PE\drvs
  7. Used the peimg.exe utility to integrate the drivers: “peimg /inf=drvs\*.inf mount\Windows
  8. Unmounted the image and commited the changes: “imagex /unmount /commit mount
  9. Replaced the current WDS image with the new one (right click on the boot image and select “Replace Image”)

Here is a script that would do part 5 to 8:

imagex /mountrw wds.WIM 1 mount
peimg /inf=drvs\*.inf mount\Windows
imagex /unmount /commit mount

Tested it again… Same error!! So this wasn’t the solution.

I opened a command prompt window while the error message was displayed by pressing “SHIFT + F10” and then checked the network connectivity.

“ipconfig” showed that the client does not have an IP address. Some network cards take a very long time to obtain one, so it tested it again after 20 secs and the client had an IP address.

So the real error was that the client network card took to long to obtain an IP address and then the WDS Client timed out.

I checked for a solution online, but was not able to find one, so I had to create one that I am happy to share with you.

 

Build your custom WDS Windows PE image:

  1. Opened the “Windows PE Tools Command Prompt” again and typed “copype x86 c:\wdsbootimage”.
    This created a Windows PE image in “c:\wdsbootimage”
  2. Mounted the created WinPE.wim to “mount”: “imagex /mountrw WinPE.wim 1 mount
  3. Added all the necessary network and storage drivers to this image (use the steps descried earlier on…)
  4. Mounted the image exported earlier: “imagex /mount wds.wim 2 mount
  5. Copied the “sources” (c:\pe\mount\sources) folder to the mounted WinPE.wim (c:\wdsbootimage\mount\sources)
    This added the necessary WDS Client setup files to the new image.
  6. Opened and edited the “startnet.cmd” file in the new image “notepad c:\wdsbootimage\mount\windows\system32\startnet.cmd”
    This files contained one line: “wpeinit”.
  7. I changed this to:

    @echo off
    wpeinit

    @echo Waiting for the WDS server...
    :testagain
    ping -n 1 wds > NUL
    if %errorlevel% == 0 goto pingok

    REM wait 3 sec. and try it again
    ping -n 3 127.0.0.1 >nul
    goto testagain

    :pingok

    x:\sources\setup.exe /wds /wdsserver:WDS

    This small script will wait until it can ping the WDS server (in this case the server is named “WDS”) and than start the setup in WDS mode.

  8. Saved the changed startnet.cmd file
  9. Removed all unnecessary components from the new WDS WinPE image: “peimg /prep mount\windows
  10. Unmounted the image and commit the changes: “imagex /unmount /commit mount
  11. The WinPE.wim file was still around 200MB, so in order to reduce this size I had to export the new image to a new WIM-File:
    imagex /export WinPE.wim 1 wds.wim “Custom WDS Windows PE
    The now created wds.wim was only around 120MB.
  12. Replaced the current WDS image with the new one (right click on the boot image and select “Replace Image”)

I tested it again and it now worked. :-)

Posted by svengru | 0 Comments
Filed under: ,
 
Page view tracker