Here is a step-by-step (how-to) guide for deploying Ubuntu 8.04.1 LTS 32-bit (Hardy Heron) from a Windows Server running WDS (Windows Deployment Services)

Part 1 – Stage the Ubuntu Setup files on your Server
Note: If you really wan’t to do Ubuntu deployments with style, you should of course skip downloading the alternate ISO’s and instead create a local mirror of the real Ubuntu dist mirrors. You’ll find optional instructions on how to do this further down in the guide (Part 3 to be exact), but for now we simply use the Ubuntu Alternate CD (32-bit) to speed up the process.
- Download the 32-bit Alternate Install CD’s from http://releases.ubuntu.com/hardy/ubuntu-8.04.1-alternate-i386.iso
- Install IIS (web server) on your server and create a virtual directory named Ubuntu (in this example from the D:\Ubuntu folder): Configure the MIME Settings for the virtual Ubuntu directory by adding a .* wildcard extensions for the “text/plain” mime type (In the HTTP Headers Tab of the Virtual Directory Properties). This is for supporting wget downloading files (which the Ubuntu install engine is using).
- Copy the contents of the iso image to D:\Ubuntu. Be warned though, The Ubuntu CD Image team (in their infinite wisdom) choosed to use the Rock Ridge extensions to ISO 9660 which supports filenames up to 255 characters. Problem is most Windows software (including vmware) doesn’t support this when running Windows as a guest OS. However, MagicISO does, so download and install MagicISO from http://www.magiciso.com/download.htm and use it to extract the iso to theD:\Ubuntu folder.
- Create another virtual directory, this time named Kickstart (in this example from the D:\Kickstart folder). Configure the MIME Settings for the virtual Ubuntu directory by adding a .cfg extensions for the “text/plain” mime type (In the HTTP Headers Tab of the Virtual Directory Properties).
- Download and extract the sample kickstart file (Ubuntu version of unattend.txt) found at this link http://www.deployvista.com/Portals/0/kickstartscript.zip and save it in the D:\Kickstart folder. The encrypted password in thekickstart script is ubuntu
Part 2 – Configure WDS to support Ubuntu
- From the D:\Ubuntu\install\netboot\ubuntu-installer\i386 folder, copy the initrd.gz and linux files to D:\RemoteInstall\Boot\x86\Hardy\32
- Download and extract syslinux from http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.71.zip (it contains pxelinux)
- Copy the syslinux-3.71\com32\menu\vesamenu.c32 to your WDS Server, D:\RemoteInstall\Boot\x86
- Copy the syslinux-3.71\core\pxelinux.o to your WDS Server, D:\RemoteInstall\Boot\x86, rename it to pxelinux.com
- Download a nice background image (http://www.deployvista.com/Portals/0/DeploymentBackground.png), and save it in D:\RemoteInstall\Boot\x86
- In the D:\RemoteInstall\Boot\x86 folders, make a copy of pxeboot.n12 and rename it to pxeboot.0
- Configure WDS to use the pxelinux.com boot file (Server properties, Boot tab)
- In the D:\RemoteInstall\Boot\x64 or D:\RemoteInstall\Boot\x86 folders, create a subfolder called pxelinux.cfg
- In the D:\RemoteInstall\Boot\x64\pxelinux.cfg or D:\RemoteInstall\Boot\x86\pxelinux.cfg folders, create a file named default with the following settings
DEFAULT vesamenu.c32
PROMPT 0
NOESCAPE 0
ALLOWOPTIONS 0
# Timeout in units of 1/10 s
TIMEOUT 300
MENU WIDTH 40
MENU MARGIN 0
MENU ROWS 12
MENU TIMEOUTROW 14
MENU HSHIFT 5
MENU VSHIFT 2
MENU COLOR BORDER 30;44 #00000000 #00000000 none
MENU COLOR TABMSG 1;36;44 #00000000 #00000000 none
MENU COLOR TITLE 1;36;44 #00000000 #00000000 none
MENU COLOR SEL 30;47 #40000000 #20ffffff
MENU BACKGROUND DeploymentBackground.png
MENU TITLE PXE Boot menu
MENU WIDTH 80
MENU MARGIN 18
MENU ROWS 4
LABEL wds
MENU DEFAULT
MENU PASSWD P@ssw0rd
MENU LABEL Windows Deployment Services
KERNEL pxeboot.0
LABEL local
MENU LABEL Boot from Harddisk
LOCALBOOT 0
LABEL hardyubuntudesktop32
MENU PASSWD P@ssw0rd
MENU LABEL Deploy Ubuntu Desktop 8.04.1 32 bit
KERNEL /hardy/32/linux
append vga=769 initrd=/hardy/32/initrd.gz ksdevice=eth0 ks=http://demosrv001/kickstart/Ubuntu_Desktop_32.cfg
Part 3 – What next…
if you really wan’t to do Ubuntu deployments with style, you should of course skip downloading the alternate ISO’s and instead create a local mirror of the real Ubuntu dist mirrors, giving you access to the latest security updates, drivers, support for multiple architectures etc… However, they are really big… Even a single dist like Hardy is about 36 GB (i386 and amd64)
To create a local mirror of the hardy dist I recommend using apt-mirror which will run just fine in Windows, as long as you run it in Cygwin.
Download cygwin from http://cygwin.com/ and run setup, make sure to select the wget package in addition to the default packages.
Then download apt-mirror from http://apt-mirror.sourceforge.net/ and then, in cygwin, create a file named /etc/apt/mirror.list with the following content
# begin mirror.list
# apt-mirror configuration file
##
## The default configuration options (uncomment and change to override)
##
# Store data on the d:\staging
# Note: Create the following folders
# d:\staging
# d:\staging\skel
# d:\staging\skel\var
# d:\staging\mirror
set base_path /cygdrive/d/tmp
#set mirror_path $base_path/mirror
#set skel_path $base_path/skel
#set var_path $base_path/var
#
# set defaultarch
set nthreads 2
#
##
## Example sources
##
# Ubuntu
# Ubuntu 8.04 “Hardy” i386
deb-i386 http://ftp.acc.umu.se/ubuntu hardy main restricted universe multiverse
deb-i386 http://ftp.acc.umu.se/ubuntu hardy-updates main restricted universe multiverse
deb-i386 http://ftp.acc.umu.se/ubuntu hardy-security main restricted universe multiverse
# Ubuntu 8.04 “Hardy” amd64
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy main restricted universe multiverse
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy-updates main restricted universe multiverse
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy-security main restricted universe multiverse
# Support for network based installations i386
deb-i386 http://ftp.acc.umu.se/ubuntu hardy main main/debian-installer
deb-i386 http://ftp.acc.umu.se/ubuntu hardy restricted restricted/debian-installer
deb-i386 http://ftp.acc.umu.se/ubuntu hardy universe universe/debian-installer
deb-i386 http://ftp.acc.umu.se/ubuntu hardy multiverse multiverse/debian-installer
# Support for network based installations amd64
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy main main/debian-installer
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy restricted restricted/debian-installer
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy universe universe/debian-installer
deb-amd64 http://ftp.acc.umu.se/ubuntu hardy multiverse multiverse/debian-installer
##
## Cleaner configuration example
##
#
# set cleanscript $var_path/clean.sh
#
# Cleaning section
clean http://ftp.acc.umu.se/ubuntu
# begin mirror.list
In cygwin run: perl apt-mirror (it will now create a local mirror of the selected dists and packages)
Then copy the content of the d:\staging\ftp.acc.umu.se\ubuntu folder to D:\Ubuntu. Another option is of course to create the /ubuntu virtual directory from d:\staging\ftp.acc.umu.se\ubuntu directly.