Novell Home

Udimage

From Developer Community

Contents

Introduction

UD IMAGE (University of Dayton Image Menus and Generating Environment) is a complete solution for creating and deploying Windows images using the ZENworks imaging engine.

Unlike other projects which try to standardize on creating a single universal image for all hardware, this solution provides a framework for automating a clean installation of Windows, all Windows Updates, drivers, Client32, ZEN agent, and applications.

The University of Dayton has been using UD IMAGE in different levels of maturity for its Student Computer Initiative for a couple of years now.

When was UD IMAGE begun?

The official Novell Forge project was approved March 9, 2006.

How did UD IMAGE come about?

I, Jeremy Mlazovsky, first began working at the University of Dayton's IT department as a co-op in the summer of 1997. In 1999 UD began its Student Computer Initiative. From that point on, every first-year student was required to purchase a computer through our contracted manufacturer, Tangent. That first summer I volunteered to work with one of our staff members to come up with a drive image for the three models of computer we offered that year. Less than one year later, I was hired as a full-time staff member at UD. Half of my job duties revolved around creating and maintaining drive images for the student computer initiative.

At first things were pretty low-tech. We followed a strict list of steps for installing and customizing Windows 2000 and all applications. One of use would read from the script while me and our student workers performed the actions on the computers. This was very tedious. Since we added two or three new models of computer every year, it quickly became evident that doing all of this work by hand was not going to work.

As early as 2000, I had begun playing with the free scripting language AutoIt v2 in order to make some tasks easier.

Over time I began to rely extensively on the new version of AutoIt, AutoIt v3, to automate everything I possibly could.

A couple of years ago we moved from Drive Image Pro to ZENworks for backing up and restoring drive images. One reason was we had a license for ZENworks Imaging and Powerquest changed the way they did their licensing.

One feature of ZENworks Imaging that I liked was that it allowed us to restore add-on images directly to NTFS partitions. Finally, a way to copy large groups of files to an NTFS partition even before Windows was installed! This gave us a tremendous amount of flexibility for customizing the image-building process. However, our actual implementation was still pretty basic.

I began going to Novell's Brainshare in 2003. I attended any sessions I could find that deal with ZENworks Imaging. The ENGL sessions were so informative that I have gone to them every year since. Every year I came back from Brainshare overflowing with new ideas I wanted to incorporate into our image-building process. I did whatever I could to add whatever new functionality I saw at Brainshare that I liked, until we got to where we are today.

How does UD IMAGE work?

First of all, unlike some other solutions out there, UD IMAGE does not rely on a single universal base image. In other words, we don't worry about messing with the HAL and massaging SysPrep so that it knows about all mass storage controllers and other funky stuff. It sounds like a great idea, but I had problems with it when I tried it a couple of years ago so I abandoned that approach. Besides, I feel more comfortable letting Windows handle the HAL and ACPI stuff on its own.

UD IMAGE uses the stock ZEN Imaging CD to retrieve images from the imaging server. However, I have added a couple of scripts and tools to the imaging CD. I modified the bootup process to run a customized menu based on the open source PDMenu. It is a very basic text-based menuing system. I use the menus to interact with some shell scripts for retrieving images and performing other miscellaneous tasks.

One of the options is to build an image from scratch. Once you select this option, my scripts tell the ZEN imaging engine to restore a base image containing Windows XP in a special state. In this state, upon reboot the initial phase of the Windows XP install commences (the one with the blue background, white text, and yellow progress bar). The nice thing about this approach is that at this point of the installation, Windows XP setup has absolutely no knowledge of the hardware on your computer, so there aren't any hardware conflicts, remnants from other systems, or similar issues.

After the base image is restored to the hard drive, a number of add-on images are also retrieved. These include an unattend.txt file to automate the Windows XP installation, all post-SP2 critical and recommended updates, Client32 and ZEN agent, etc. Once all of the add-on images have been retrieved, it is time to reboot.

After reboot, as I mentioned above, Windows XP setup does its thing and begins the install. Once the text mode installation is finished, the computer reboots and picks up with the graphical phase of the Windows XP installation, which will not require user input. Once the graphical phase of the installation is finished, a set of scripts automatically installs the critical and recommended Windows updates. After a reboot, it is time to install the drivers.

I handle this step in two ways. One, from the imaging CD menu I give you the option to build an image and install the drivers manually, or build an image from a list of computers. If you chose to install the drivers manually, then at this point in the setup it is up to you to install the drivers from a CD, flash drive, etc. If you chose a particular model from the imaging CD menu, then it will also download an add-on image with the drivers for that machine and the accompanying installation scripts. At this point of the install the drivers installation scripts kick in and install everything for you.

Once the drivers are installed, UD IMAGE begins the automated installation of Client32 and the ZEN Agent. Client32 is setup to automatically login to the Novell network upon reboot as a special imaging user. This user has associated to it a single imaging-building ZEN application. This app has a couple of dependent applications, which each have their own dependent applications. These upper-level dependent apps do various things, such as customize the Windows enviornment (arrange icons automatically, by name, etc), install applications like Office, delete extra shortcuts, delete temporary files, remind you to check Windows Update, etc.

When it is all finished, you run the scripted SysPrep, shut down the computer, and back it up.

How is this different from products like ENGL's Ztoolkit and Zim?

Well, the most obvious difference is UD IMAGE is free and open source :) It is also, unfortunately, not quite as full-featured or as polished as the commercial products. However, I am hoping that with some help from people like you, UD IMAGE will be a viable alternative.

Your directory structure, eDirectory structure, etc differs from ours!

There are many different philosophies on how eDirectory should be organized. Our OU structure is broken down into OUs for users, servers, and zen objects. It is very likely that your OU structure will not match ours. You're just going to have to take what is posted here and modify it to fit your environment. I'll do my best to make my apps, scripts, and documentation as flexible as possible.

How long until there is something useful here?

Patience, grasshopper! The good news is, I've been using UD IMAGE in various iterations at the University of Dayton for several years now. So the system is in-place. It is going to take me some time to port everything to my VMWare Workstation guest OS and to properly document everything. There is also a slight learning curve to figuring out all of the features here at Novell Forge. I have a large chunk of it finished so far, but keep checking back for updates!

Acknowledgements

I cannot emphasize enough how much of UD IMAGE is influenced directly, or indirectly, by the stuff I learned at Novell's annual Brainshare conference. The tips and tricks I learned in Novell sessions was invaluable. The sessions with ENGL people blew my mind! For me, I go to Brainshare every year just for these sessions - everything else is just a bonus.

ENGL also makes available for free some freeware applications which I use, including the ZisdCtrl ActiveX control for accessing the ZEN Image Safe Data.

I also want to thank Joey at KiteNet for PDMenu, which allows us to create simple menus for our techs to use when restoring drive images, so they do not have to worry about image filenames and paths.

I could not write any of the installer scripts without AutoIt. AutoIt v1 and v2 was created by Jonathan Bennett. Eventually he started over from scratch and began work on AutoIt v3. Jonathan released AutoIt v3 as an open source product. Since then a core group of volunteers maintain and evolve AutoIt. Thank you for such a tremendous product!

I learned alot about Installshield installers and nifty tricks for automating the installation of applications from the good folks at AppDeploy. Check them out!

There have been a number of times where I got stuck on something. I could always count on getting help from at least one of the two following places: Novell's ZENworks Cool Solutions site and Novell's Support Forums. I highly recommend them! I go there all of the time, even when I don't need help with something.

I also need to thank my co-ops, past (Melissa Sepos, Brian Hiebel, and Victor Martin) and present (Armon Holt, Zach Steffens) for all of the hard work they put in helping me with the apps, driver install packages, testing, etc.

Miscellaneous Project Details

Miscelleanoues details regarding the UD IMAGE project on Novell Forge.

SVN Access to Source Code

The source code is available for download using SubVersion (SVN). There are a couple of ways to get access to the files in the SVN Repository. You can browse the SVN Repository in yur browser. For development purposes, I use Tortoise SVN because it hooks into Windows Explorer and does not require using a commandline interface. For more info, I suggest reading Novell's Wiki page on SVN access.

Support Forums


Project Members

Project Members

NamePosition
Jeremy MlazovskyAdministrator


Imaging CD

We do not currently use PXE on our network. Until we find a way to secure the boot menu with passwords to keep students and curious faculty/staff out, we are sticking with the imaging CD. Our imaging CD uses as its base the stock imaging CD from Novell. We just add a few files, which will be explained in greater detail below.

Version of the Stock ZENworks Imaging CD

Our current production imaging CD is v6.5 SP1 HP3. We have run into some issues with the newer versions of the CD, so once we work them out we'll upgrade.

It looks like the issues we ran into with the original release of the ZEN 6.5 SP2/ZEN 7.0 imaging CD has been fixed in 7.00 HP2. We are now using the ZEN 7.00 HP2 CD.

Customizations

We modify the basic ZEN Imaging CD with some scripts, menus, and additional binaries. It makes our lives a little easier.

ISO Editing Tools

I used to use WinISO to edit the bootcd.iso from Novell. But it has some quirks and it had problems with the newer ZEN Imaging CDs with the SuSe splash screen. So now I use UltraISO, which is infinitely better.

CD Image Directory

Create a new folder called \\udimage\vol1\ImagingCD. Make a new folder for the bootcd.iso you plan to modify. I used the ZENworks 7.0 Hot Patch 2 Imaging CD. I made a directory called \\udimage\vol1\ImagingCD\70HP2. Into that directory I copied the original bootcd.iso from the ZENworks 7.0 HP2 installation, and I renamed it "ZEN 7 HP2 original bootcd.iso". I then made a copy called "ZEN 7 HP2 bootcd (udimage).iso". This is the .ISO file I actually edit. I keep the original there in case I ever need to start over again.

Next I made a new directory called \\udimage\vol1\ImagingCD\70HP2\addfiles. I then made a directory called \\udimage\vol1\ImagingCD\70HP2\addfiles\bin.

settings.txt

The ZEN Imaging CD allows you to include a file called settings.txt which you can customize to fit your environment.

In our VMWare environment, the udimage server's IP address is 192.168.181.2. You would obviously replace this IP address with the IP address of your server. Below is my settings.txt file.

You can also download it from the SubVersion repository.

# ZENworks Imaging Settings
#
# This file resides on Boot Floppy 2 and controls the initialization of the
# ZENworks Imaging Engine.
#
# You may edit this file manually or use the ZENworks Boot Disk Creation
# utility (ZIMGBOOT.EXE) installed on each ZENworks server.
#
# The character starting this line denotes a comment.  Any line beginning
# with that character is ignored when initializing the Imaging Engine.

# PROMPT should be set to YES if you want to be given a Linux prompt after
# initialization is complete.
PROMPT=NO

# MANUALREBOOT should be set to YES if you want to reboot manually.
MANUALREBOOT=NO

#Make the Imaging Boot Disks to boot up in manual mode
MANUAL=NO

# PARTITIONSIZE is the size in megabytes of the ZENworks Imaging partition
# that will be created when installing the ZENworks Imaging Engine.
PARTITIONSIZE=15

# IPADDR should be set to the IP address you want the workstation to use.
# If using DHCP, remove or comment out this line:
#IPADDR=192.168.146.169

# NETMASK is this workstation's subnet mask.
# If using DHCP, remove or comment out this line:
# NETMASK=255.255.255.0

# GATEWAY is the router address for this workstation.
# If using DHCP, remove or comment out this line:
# GATEWAY=192.168.146.2

#Specify the DNS nameserver
#Each nameserver should be separated by blank space 
DNSNAMESERVER="192.168.181.2"

#Specify the DNS domain suffixes.
#Each domain suffix should be separated by blank space
# DNSDOMAINSUFFIX="  "

# PROXYADDR is the IP address or DNS name of the ZENworks Image Server.
PROXYADDR=192.168.181.2

#Specifies if additional drivers are to be copied/loaded while booting the linux kernel. 
#Copy the additional drivers using the add linux drivers option, and uncomment the following line.
LOADADDITIONALDRIVERS=NO

#LANGDISK specifies that user will be prompted for language diskettes, when booting from floppy or CD.
#LANGDISK=NO

#Speeds up imaging process by enabling DMA Mode
hdparm -d1 -W1 /dev/hda

#These things used to be in environment.s but don't seem to work with Automated Mode with new Imaging CD
export IMGCMD="bash /bin/menu.s"

#Determine global variables for specifying download server name, path, etc
export DOWNLOADSERVER=http://192.168.181.2
export DOWNLOADDIR=menus
export DOWNLOADCMD='/bin/wget -nd -P/bin'

#When downloading files use the following env var
export RETRIEVE="$DOWNLOADCMD $DOWNLOADSERVER/$DOWNLOADDIR"

#Server name images are stored on
export VOLUME=//192.168.181.2/vol1

Save your modified settings.txt as \\udimage\vol1\ImagingCD\70HP2\addfiles\settings.txt.

Open the "\\udimage\vol1\ImagingCD\70HP2\ZEN 7 HP2 bootcd (udimage).iso" file with UltraISO. Navigate to the addfiles directory in the .ISO. Drag-and-drop your \\udimage\vol1\ImagingCD\70HP2\addfiles\settings.txt file into the addfiles directory inside the .ISO file. It should look like this:
Image:UDIMAGE-AddFiles(settings_txt).jpg

Additional Files in the /bin Directory

We also include a number of other tools on the imaging CD. We use the open source program called PDMenu to add text-based menus to the imaging CD. I also downloaded and compiled WGET, which is an open source tool for retrieving files via HTTP and FTP using the commandline. This is what we use to retrieve menu files from the server.

You will notice a couple of other files in that directory. You can get these files from the SubVersion repository.

clear - I copied this binary from a SLES 9 Linux install. It allows us to erase the previous contents of a terminal. gotoshell.s - Simple BASH script for opening a new BASH prompt. LoadDepartmentalMenu.s - Simple BASH script for downloading menu files stored on the server. MainMenu - The initial PDMenu menu file which appears when the imaging CD is finished booting. menu.s - The BASH script which runs when the IMGCMD command is executed by the imaging CD. The default IMGCMD command is changed in the settings.txt file. pdmenu - Binary used to display PDMenu text files wget - Binary used to retrieve menus from the server

Open the "\\udimage\vol1\ImagingCD\70HP2\ZEN 7 HP2 bootcd (udimage).iso" file with UltraISO. Navigate to the addfiles/bin directory in the .ISO. Drag-and-drop the contents of the \\udimage\vol1\ImagingCD\70HP2\addfiles\bin directory into the addfiles/bin directory inside the .ISO file. It should look like this:
Image:UDIMAGE-AddFiles(bin).jpg

Press "Save" to save the changes to "\\udimage\vol1\ImagingCD\70HP2\ZEN 7 HP2 bootcd (udimage).iso"


Building Windows Base Image

The UD IMAGE process revolves around what is known as a Base Image. This image is the most atomic piece of the puzzle. You build an image by restoring a base image and then layering drivers, applications, and tweaks over the base image.

The nice things is that you only need to update this base image when a new service pack comes out.

Right now we have base images for Windows XP+SP2 and Windows XP Tablet Edition 2005. Both were built using the same process, though the Tablet Edition base has a few minor tweaks.

Follow the instructions below to create a base image. Once created the first time, you will back it up and restore it as part of the image-building process.

Creating the unattend.txt File

NOTE: We have a site license with Microsoft, so we use the Windows XP install CDs which do not require Windows Activation. You may have to make some minor modifications for your environment.

What is unattend.txt?

According to Microsoft:

unattend.txt 
Unattend.txt is the answer file for Setup. An answer file is a way to script the answers for a series of graphical user interface (GUI) dialog boxes. Unattend.txt tells Setup how to interact with the distribution folders and files you create, and supplies Setup with all of the information that the end user provides during a typical Microsoft® Windows® setup. For example, Unattend.txt contains a FullName entry in the [UserData] section that instructs Windows Setup to prompt the end user to provide a full name.

We are going to use an unattend.txt file to automate the first phase of the Windows XP install.

Getting the Support Tools

If you look on your Windows XP install CD, there should be a folder called <CD-Drive>:\Support\Tools. In that directory is a file called deploy.cab. Extract the contents of deploy.cab file into \\udimage\VOL1\Base\xpsp2\Deploy. I suggest reading through the unattend.txt section of ref.chm so you will understand the different settings we will be using, as well as how to customize the settings for your environment. There is also a tool called setupmgr.exe in that folder which will help you create your own unattend.txt file. However, my personal experience is that it is OK for building a simple unattend.txt file but you really need to edit it by hand to get the most out of it.

Modifying the UD IMAGE unattend.txt file

You can use the unattend.txt file in the SubVerson repository. Just make sure to change some things like your time zone, license key, etc.

Make the following directory on the server and stick it there: \\udimage\VOL1\Base\xpsp2\Unattend\student\WinXPCD\SP2

Preparing Hard Drive for Windows XP Pre-Installation

If you don't have one already, make sure to make yourself a Bart's PE CD/DVD with the NWDskPE Client32 plug-in.

Make Sure That The Master Boot Record (MBR) Exists!

IMPORTANT!! If you do not follow these instructions exactly, it is possible that the Windows XP install will not start - you will just get a blank screen. Trust me ... I just wasted a whole work day trying to figure out why in the world I could not get the install working again (I never documented the procedure when I created my original base image a year or two ago).

If you are using a brand new hard drive which has never had an operating system installed onto it before (e.g. a new VMWare virtual hard disk), then you will need to write the Master Boot Records to the hard drive or it will not boot!

Microsoft has documentation on this here. This is what it says:

To start the computer and use the Recovery Console to replace the MBR
 1. Insert the Windows XP Professional Setup CD-ROM into the CD-ROM drive.
 2. Restart the computer. If prompted to press a key to start the computer from the CD-ROM, press the appropriate key.
 3. When the text-based part of Setup begins, follow the prompts. Press the R key to repair a Windows XP Professional installation.
 4. If you are repairing a system that has more than one operating system installed, from the Recovery Console choose the Windows XP
    Professional installation that you need to repair.

    Note If you press ENTER without typing a number, the Recovery Console quits and restarts the computer.

    The Recovery Console might also show valid installations of Windows NT 4.0. However, the results of attempting to access a
    Windows NT 4.0 installation can be unpredictable.
 5. When prompted, type the Administrator password. If you do not have the correct password, or if the security database for the
    installation of Windows XP Professional you are attempting to access is corrupted, Recovery Console does not allow access to the
    local disks and you cannot repair the MBR.
 6. To replace the MBR, at the Recovery Console command prompt, type:
    fixmbr
 7. Verify whether you want to proceed. Depending upon the location and the cause of the corruption within the damaged MBR, this
    operation can cause the data on the hard disk to become inaccessible. Press the Y key to proceed, or press the N key to cancel.

Create New Partition Using DiskPart

On the computer you wish to build the base image, boot from the Bart's PE CD. Once Bart's PE loads and the Client32 window appears, login to your Novell network.

Open a commnad prompt. Type in the command diskpart.exe.

Then type list disk to see what disk number our hard drive is listed as.

DISKPART> list disk

 Disk ###  Status      Size     Free     Dyn  Gpt
 --------  ----------  -------  -------  ---  ---
 Disk 0    Online      8189 MB  8189 MB

In this example, our hard drive is listed as "Disk 0". We need to select "Disk 0" so that subsequent commands affect that disk. To do this, type select disk 0.

DISKPART> select disk 0

Disk 0 is now the selected disk.

Next, we need to determine if there are any partition on the hard drive. To do this, type list partition.

DISKPART> list partition

 Partition ###  Type              Size     Offset
 -------------  ----------------  -------  -------
 Partition 1    Primary           8189 MB    32 KB

We are going to delete this partition and create a new one. To do that, we first need to select the partition by typing select partition 1.

DISKPART> select partition 1

Partition 1 is now the selected partition.

Next, we are going to delete this partition by typing delete partition. You should delete all partitions on the hard drive.

DISKPART> delete partition

DiskPart successfully deleted the selected partition.

Now we will create a new partition by typing create partition primary.

DISKPART> create partition primary

DiskPart succeeded in creating the specified partition.

Let's look at our partitions again.

DISKPART> list partition

  Partition ###  Type              Size     Offset
  -------------  ----------------  -------  -------
* Partition 1    Primary           8189 MB    32 KB

Select the new partition by typing select partition 1.

DISKPART> select partition 1

Partition 1 is now the selected partition.

To make this partition active (and therefore bootable once the proper system files are in-place), type active.

DISKPART> active

DiskPart marked the current partition as active.

We need to assign a drive letter to this new partition. Do this by typing assign.

DISKPART> assign

DiskPart successfully assigned the drive letter or mount point.

If you type list volume you will see the volumes and their drive letters.

DISKPART> list volume

  Volume ###  Ltr  Label        Fs     Type        Size     Status     Info
  ----------  ---  -----------  -----  ----------  -------  ---------  --------
  Volume 0     X   UBCD4UD      CDFS   CD-ROM       519 MB
* Volume 1     C                       Partition   8189 MB  Healthy

Type exit to quit diskpart.

DISKPART> exit

Leaving DiskPart...

Format the New Partition

When Diskpart creates partitions, it does not associate a specific file system to the partition. In order to do that, we need to use Microsoft's Format tool. At the command prompt, type format C: /FS:NTFS to format the new partition using the NTFS file system.

X:\i386\System32>format C: /FS:NTFS
The type of the file system is RAW.
The new file system is NTFS.

WARNING, ALL DATA ON NON-REMOVABLE DISK
DRIVE C: WILL BE LOST!
Proceed with Format (Y/N)? y

When it has finished, it will ask you what label to give to the new volume. Let's use WinXPBase.

Volume label (ENTER for none)? WinXPBase
Creating file system structures.
Format complete.
   8385896 KB total disk space.
   8341448 KB are available.

Now we have a new NTFS-formatted partition labelled "WinXPBase", which is active, and uses the drive letter "C:".

Copy the Windows XP Install Files to the Hard Drive

On another computer, make a new folder called \\udimage\vol1\Base\xpsp2\i386. Insert your XP+SP2 CD and copy the contents of <CD-ROM>:\i386 into \\udimage\vol1\Base\xpsp2\i386. If you do not have a Windows XP install CD with integrated Service Pack 2, make sure to get AutoStreamer and make your own.

On your computer you are using to build the base image, boot from the Bart's PE CD/DVD with the NWDskPE Client32 plug-in. Login to your Novell tree.

Map L: to \\udimage\vol1 with the following command:

X:\i386\System32>net use L: \\udimage\vol1
The command completed successfully.

Go to L:\Base\xpsp2\i386. Copy the directory contents into C:\WinXPCD\sp2\i386

When you have finished this, you should see something like this:
Image:UDIMAGE-I386_Files_And_Folders.jpg

Copy unattend.txt File

Copy L:\Base\xpsp2\Unattend\student\WinXPCD\SP2\unattend.txt into C:\WinXPCD\SP2.
Copy L:\Base\xpsp2\Unattend\student\WinXPCD\SP2\unattend.bat into C:\WinXPCD\SP2.

Kickoff Windows XP Pre-installation

Double-click C:\WinXPCD\SP2\unattend.bat to start the pre-install of Windows XP+SP2. A command prompt window should open up and then the Windows XP pre-install should begin. You should see something like this:
Image:UDIMAGE-Pre-install_splash_screen.jpg

NOTE: Though the installer estimates 53 minutes or more to complete, in reality this step of the install will finish in just a couple of minutes. When this step is complete, the installation window will just disappear without any indication whether the operation was successful or not!

You should now see the following directory map structure on the hard drive:
Image:UDIMAGE-Pre-install_files.jpg

$WIN_NT$.~BT and $WIN_NT$.~LS are special folders which hold the Windows XP installation files. Once you reboot the computer when the hard drive is setup this way, the real Windows XP installation will begin. At this point in the installation, the Windows XP installer has not probed for hardware, so there aren't any device drivers or dependencies to worry about. And this is why we use this as the base image!

Backup the Base Image to the Server

Reboot the computer, making sure to boot from your ZEN Imaging CD. If you accidentally boot from the hard drive, the installation will begin. If you boot from the hard drive, just to be safe I would recommend starting over again from the steps where you format the partition and copy the install files over.

Choose "Automatic Mode":
Image:UDIMAGE-ImagingCD_SuSe_Menu.jpg

NOTE: I realize that the PDMenu menus in my screenshots don't display "box" characters properly. It has something to do with the character set (something about UTF encoding, if I rememebr correctly) introdced with the ZEN 6.52+ Imaging CD. It's probably an easy fx but I haven't looked into it.

After it detects your hardware, you SHOULD get to our main PDMenu screen.
Image:UDIMAGE-Main_PDMenu.jpg

Choose the first option ("Run ZENworks Imaging Engine in Manual mode..").

Press "F5" ("Make Image"). Select "Server", press "Next >>". Make sure to substitute the IP address and/or DNS name of your server as needed. Then press "Next >>".
Image:UDIMAGE-BaseImage_Backup_Details.jpg

You can fill in details for the Author, Computer, Image Description, and Comments fields if you want to. Then press "Next >>" to begin the backup.
Image:UDIMAGE-BackupBase.jpg

That was easy!

Customizing Windows Base Image

Building Windows Updates Add-On Image

Next, we are going to build an add-on image which will contains all critical updates and recommended updates released since Windows XP SP2.

Prepare AutoPatcher Directories

Make the following directories:

  • \\udimage\vol1\BuildImage\AutoPatcher\
  • \\udimage\vol1\BuildImage\AutoPatcher\Installers
  • \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)
  • \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc
  • \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher
  • \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)

Download AutoPatcher XP

When I first began working out how I would install Windows updates automatically, I was playing around with the idea of writing a program which would use QChain.exe to install the updates for me. Luckily, I came across an article on Slashdot entitled, How To Avoid Viruses At Windows Install Time?. One of the user comments suggested using AutoPatcher. When I went to the site, I discovered someone beat me to it and wrote the program. Works for me!

A couple of things to understand about AutoPatcher. A new version is released a few days after Microsoft Patch Tuesday every month, which includes that months' new updates. Sometimes instead of relasing a new version of AutoPatcher with ALL post-XP SP updates, they release an "update" package. The update package only includes the new updates released since the previous release of AutoPatcher. This means that if you want a full version of AutoPatcher with all updates, you need to start with the most recent full release, and then overlay the updates released since then.

As of this moment, the newest AutoPatcher release is March 2006, and it is an update release.

So, we need to download the following files into \\udimage\vol1\BuildImage\AutoPatcher\Installers:

Extract Files

  • Go to \\udimage\vol1\BuildImage\AutoPatcher\Installers. Execute the file AutoPatcher_XP_Dec05_ENU_Lite.exe. When it asks for the destination folder, specify \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite).
  • Go to \\udimage\vol1\BuildImage\AutoPatcher\Installers. Execute the file AutoPatcher_XP_Feb06_ENU_Update.exe. When it asks for the destination folder, specify \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite).
  • Go to \\udimage\vol1\BuildImage\AutoPatcher\Installers. Execute the file AutoPatcher_XP_Mar06_ENU_Update.exe. When it asks for the destination folder, specify \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite). Since we are using the "Lite" version of the AutoPatcher XP Dec 05 installer, when we get to this window, select "Update a Lite release".

Image:UDIMAGE-Autopatcher06MarchUpdateOptions.jpg
When you see this window, uncheck everything, press "Finish".
Image:UDIMAGE-Autopatcher06MarchInstallComplete.jpg

Customize AutoPatcher Installation

Personally, I think some of the updates and add-ons included in AutoPatcher is unecessary, so I like to remove some of the stuff. Luckily, AutoPatcher comes with a tool called "Module Installer" which lets you add and remove modules from the base package.

Unfortunately, there is a minor bug in AutoPatcher's "Module Installer" program that we need to deal with.

Explanation of the Files and Directories

You should notice in the \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)\modules directory are a few files and subdirectories.

  • Directories
    • AddOns
      • Modules dealing with "Add Ons" (e.g. ASPI drivers, Sun JVM, etc)
    • Components
      • Modules dealing with "Components" (e.g. Windows Media Player 10, Windows Installer v3.1, etc)
    • Critical
      • Modules dealing with "Critical Updates"
    • NonCritical
      • Modules dealing with "Non-Critical Updates" (e.g. Update for HighMAT support when burning CDs, etc)
    • Tweaks
      • Modules dealing with "Tweaks" (e.g. Turn on ClearType, etc)
  • Files
    • Module Installer.exe
      • Tool used to edit the modules to be installed
    • ms_addons_enu.amc, ms_addons_enu.lst
      • Configuration files for the AddOns modules
    • ms_components_enu.amc, ms_components_enu.lst
      • Configuration files for the Components modules
    • ms_critical_enu.amc, ms_critical_enu.lst
      • Configuration files for the Critical Updates modules
    • ms_noncritical_enu.amc, ms_noncritical_enu.lst
      • Configuration files for the NonCritical Updates modules
    • tweaks_enu.amc, tweaks_enu.lst
      • Configuration files for the Tweaks modules

Pruning the Modules

In an ideal world. you should be able to execute "Module Installer" in its default directory and pick and choose what gets installed. Unfortunately, at the moment there is a bug which only allows "Module Installer" to edit the modules which are in the same directory it is running from. So, we need to copy Module Installer.exe to each of the subdirectories and run it from there to make the necessary changes.

AddOns

I don't have any need for any modules in the AddOns folder,so I just delete the AddOns folder.

Components

Execute \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)\modules\Components\Module Installer.exe. Select "I would like to remove modules", press "Next". Select any modules you do not want to install, and press "Uninstall Module(s)". I usually leave this one alone. When you are finished, press "Exit".

Critical

Execute \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)\modules\Critical\Module Installer.exe. Select "I would like to remove modules", press "Next". Select any modules you do not want to install, and press "Uninstall Module(s)". I usually leave this one alone. When you are finished, press "Exit".

NonCritical

Execute \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)\modules\NonCritical\Module Installer.exe. Select "I would like to remove modules", press "Next". Select any modules you do not want to install, and press "Uninstall Module(s)". I usually leave this one alone. When you are finished, press "Exit".

Tweaks

I don't have any need for any modules in the Tweaks folder and AutoPatcher sometimes complains about registry key errors, so I just delete the Tweaks folder.

Base

Execute \\udimage\vol1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc\AutoPatcher\v5.1.29 2006-03(Lite)\modules\Module Installer.exe. Select "I would like to remove modules". We decided not to use AddOns or Tweaks, so I will select "Windows AddOns" and "Registry Tweaks" and then click on "Uninstall Module(s)", then "Exit".

Modify the AutoIt Installer

We use a simple AutoIt script to begin the installation of the AutoPatcher updates. The files from the SubVersion Repository.

Building the AutoPatcher Add-On Image

Now we need to get the AutoPatcher files into a ZENworks Add-on image. For this, we use the Image Explorer. There are two ways to start Image Explorer:

  1. Open ConsoleOne. Select an object from the O level or lower. From the dropdown menu, select "Tools" | "ZENworks Utilities" | "Imaging" | "Image Explorer"
  2. Or you can cheat like I do and run it directly: \\udimage\sys\PUBLIC\zenworks\imaging\ImgExp.exe (unsupported by Novell)

Once ZENworks Image Explorer runs, drag the folder \\udimage\VOL1\BuildImage\AutoPatcher\v5.1.29 2006-03(Lite)\Misc onto "Partition 1", After a minute or two, you should see something like the following:
Image:UDIMAGE-Autopatcher06MarchImageExplorer.jpg

Save the add-on image as \\udimage\VOL1\BuildImage\AutoPatcher\AutoPatcherv5.1.29_2006-03(Lite).zmg

Building Drivers Add-On Image

Coming soon!

Building Client32 and ZENworks Agent Add-On Image

No, I did not forget about this section. Read below for an update on why this section is incomplete for the moment.

Client32: Problems with NMAS and SysPrep

We just started implementing NMAS on-campus, and we ran into an issue with Client32, NMAS, and SysPrep. It turns out that if you have NMAS installed and enabled and then you run SysPrep on that machine, once the Windows SIDs are changed during the SysPrep process, things get broken :)

If you login Workstation Only and then try to login to the Novell network, you will get the following internal error:
Image:UDIMAGE-InternalErrorNMAS.jpg

Novell has a TID concerning this, TID10094494 (Internal error 0xFFFFFA27 reported when logging into NDS with NMAS enabled). Once I figure out a good workaround, or get Novell to offer a better fix since I plan on opening a Support Incident for this, I'll complete this section.

Build_Student_Image

This is the master ZEN app which kicks off all other scripts for building the drive image!

Location of .AXT Files and Source Code

View the root branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Build_Student_Image.gif

Student_Tweaks_(Pre-Apps)

These are the tweaks that are made before any applications are installed.

Location of .AXT Files and Source Code

View the "Tweaks" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Tweaks_(Pre-Apps).gif

Student_Services_Tweaks_(Pre-Apps)

These tweaks involve changing the behavior of some of the Windows services.

Location of .AXT Files and Source Code

View the "Tweaks/Services" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Services_Tweaks_(Pre-Apps).gif

Student_Control_Panel_Tweaks_(Pre-Apps)

These tweaks involve changing the appearance and functionality of the Control Panel.

Location of .AXT Files and Source Code

View the "Tweaks/Control Panel" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Control_Panel_Tweaks_(Pre-Apps).gif

Student_Explorer_Tweaks_(Pre-Apps)

These tweaks involve changing the appearance and functionality of My Computer and Explorer.

Location of .AXT Files and Source Code

View the "Tweaks/Explorer" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Explorer_Tweaks_(Pre-Apps).gif

Student_Internet_Explorer_Tweaks_(Pre-Apps)

These tweaks involve changing the appearance and functionality of Internet Explorer, including favorites and the default home page.

Location of .AXT Files and Source Code

View the "Tweaks/Internet Explorer" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Internet_Explorer_Tweaks_(Pre-Apps).gif

Student_Misc_Tweaks_(Pre-Apps)

These tweaks involve miscellaneous things, including enabling Clear Type.

Location of .AXT Files and Source Code

View the "Tweaks/Misc" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student Tweaks (Pre-Apps).gif

Student_Applications

The next phase of UD IMAGE is installing the applications such as Symantec Antivirus CE and Microsoft Office.

Location of .AXT Files and Source Code

View the "Applications" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Here is the dependency tree for the Applications in UD IMAGE.
Image:Applications2.gif

Current_Version

The first-level application, Student_Applications, has a number of lower-level dependent applications. You will notice that most major applications are themselves dependent applications associated to apps called Current_Version.

The Current_Version app points to the current production version of that particular application. You can think of it as a symbolic link.

For example, Current_Version.Symantec_Antivirus_CE.<etc> has a dependent application called SAV_CE.v10_0_1_1_000.<etc>.

At some point when we begin to use a new version of the SAV CE client, e.g. v10.0.2.2000, I will create a new ZEN App called SAV_CE.v10_0_2_2000.<etc>. I will then edit Current_Version.Symantec_Antivirus_CE.<etc> so that SAV_CE.v10_0_1_1000.<etc> is no longer dependent on it, and then make SAV_CE.v10_0_2_2000.<etc> a dependent app. This allows us to have parallel imaging super apps with different sets of tweaks, applications, etc which are not broken as soon as we update the version of, say, SAV CE that we use.

Student_Tweaks_(Post-Apps)

These are the tweaks that are made after the applications are installed.

Location of .AXT Files and Source Code

View the "Tweaks" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Tweaks_(Post-Apps).gif

Student_Misc_Tweaks_(Post-Apps)

These tweaks involve miscellaneous things such as changing the power settings.

Location of .AXT Files and Source Code

View the "Tweaks/Misc" branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Image:Student_Misc_Tweaks_(Post-Apps).gif

Cleanup

The next phase of UD IMAGE is cleaning up the hard drive so we can backup an image without a lot of unecessary temp files, etc.

Location of .AXT Files and Source Code

View the Cleanup branch in SubVersion.
You can use the .AXT files to create new ZENworks Application Objects in your tree. Just open it in a text editor and change the file paths to match your enviornment. You can also modify the AutoIt source code files and recompile them as you see fit. The .ini files in the source code directories can be edited in a text editor; make sure to change the paths as needed. This will make recompiling much easier. I recommend using the SciTE Editor for AutoIt.

Dependency Tree

Here is the dependency tree for the Cleanup app in UD IMAGE.
Image:Cleanup.gif

Final Customizations Before Backup

At this point, the person setting up the machine should finish setting up the computer before it is ready to be backed up. These customizations would include going to Microsoft Update to update Windows and Office, install any additional software, etc.

Backup Drive Image

Coming soon!

Post-Imaging Customization Scripts

Coming soon!

Future Plans

Below are a couple of things I would like to incorporate into the image-building process. I am not promising anything, but these next couple of items are high on my wish list.

LDAP Lookup

It would be nice to be able to use existing LDAP/eDirectory credentials to allow the proper people access to the imaging menus when booting from the imaging CD/PXE.

Better use of DMI/WMI

I would like to incorporate DMI and WMI some more so that the image-building process is more intelligent.

Novell® Making IT Work As One

© 2009 Novell, Inc. All Rights Reserved.