ne555 is
SO CLOSE to a solution to the OP's problem that it is killing me. The issue that comes up with your solution is that if the OP is the admin of a domain about the same size as mine, 300+ systems, then even replacing the CD-ROM everytime there is a software update is too much work.
A solution that would be a bit more flexable would be something like this: GRUB\Etherboot -> PXE boot OS. This way you can boot different PC's at different locations to different images simply by changing the image file name from your office instead of having to run to every computer in every lab to swap out a CD or flash drive.
So it looks something like this: PC's in Lab 1 are set to look at an image (let's call it Lab1.img). You rename Lab1.img on your server to Lab1old.img or something (so as to preserve it in case you need to roll back). Then rename the new image to Lab1.img and reboot all of the PC's using a remote command. Abra Cadabra, every PC is "reimaged" without the need for you to leave your office.
If you need to speed up boot times, cut down on the bandwidth used or you simply can't use an image from the server for some reason, what you would do is have two disk partitions and have GRUB point at one of those to boot from while hiding the other. Then when you need to update the system, overwrite the partition you aren't using with your new image via PXE boot, then point GRUB there when it is done.
1 2 3 4 5 6
|
parttool (hd0,1) hidden- /* Unhides The New Image */
parttool (hd0,2) hidden+ /* Hides The Old Image */
set root = (hd0, 1) /* Sets The Root Variable To The Partition You Want To Use */
chainloader +1 /* Grab First Sector Of The Current Partition */
parttool ${root} boot+ /* Sets Current Partion To Active */
boot /* Boot The Partition That Has Been Loaded */
|
GRUB:
http://www.gnu.org/software/grub/ (Perfect Price GRUB Bootloader)
Imaging Software:
http://www.fogproject.org/ (Easy to manage, perfect price, also will fix Active Directory entries for you)
SysPrep:
http://technet.microsoft.com/en-us/library/bb457073.aspx (Comes with Windows, Don't forget to do this part if not using a PXE boot OS.)
PsTools:
http://technet.microsoft.com/en-us/sysinternals/bb896649.aspx (Perfect price, See * Below)
*: PsExec is useful for grabbing the MAC address off of remote systems without having to go to each one of them, you will need this for the FOG entries. PsShutdown reboots remote systems**.
**NOTE: I've found that for Win XP, remote systems will not reboot if the user has "locked" the PC, so in order to reboot this remotly I pass the Process ID of winlogon.exe to PsKill and crash it that way, this is variable so use PsList to obtain the ProcID; PsKill will not stop winlogon.exe if passed the process name. This is a messy way to do it as the users data WILL NOT BE SAVED, but due to the systems security I haven't found another way to get around this yet.
EDIT: Systems in Lab 1 use Lab1.img, Lab 2 use Lab2.img etc. These file extentions may not be the ones you use.