Ok, think I've got a working solution (but haven't tested it yet).
All profiles/systems will have a 4 character random_id variable that is generated pretty much like the UID variable. This will be alpha-numeric, so the hard limit on systems in cobbler will be 36^4 (1,679,616) windows systems... I don't see a problem there :)
So, when a profile/system is detected as being breed=windows, this random_id will be used to generate the required files:
/tftpboot/{profiles/systems}/name/winpxe.0 /tftpboot/{profiles/systems}/name/NTLDR /tftpboot/{profiles/systems}/name/winnt.sif
In addition, rules will be created in the /etc/tftpd.rules file, for example:
re ^LOIB4 /profiles/winxp-i386/NTLDR re ^wOIB4.sif /profiles/winxp-i386/winnt.sif re ^L2pWf /systems/xp2/NTLDR re ^w2pWf.sif /systems/xp2/winnt.sif
As you can see, the lines with ^Lxxxx in them are rewrites for the loader, and the ^wxxxx lines are the .sif rewrites. The winpxe.0 file will point to /Lxxxx, and the NTLDR file will point to /wxxxx.sif
Here's what the system pxeboot file will look like:
# cat /tftpboot/pxelinux.cfg/xp2 prompt 0 timeout 1 label xp2 kernel /systems/xp2/winpxe.0
And the default file will have the entries for the profiles looking like this:
label winxp-i386 kernel /profiles/winxp-i386/winpxe.0
So far, what works: 1) importing XP from CD 2) profile/system creation 3) ASCII pxe file generation 4) tftpd rule generation
What doesn't: 1) sif (answer file) generation 2) binary pxe boot file generation 3) my random_id isn't persisting when a new system is created (everytime you do a dumpvars it changes...), only after editing the first time... need to figure that out.
As soon as I can get 1 & 2 done, I'll be able to start doing build testing. Overall I think this is looking very promising! Any thoughts/comments would be appreciated of course.
James C.