Putting it all together
Create a directory to hold the files on your CD. Suppose this directory
is $CDROOT.
-
Populate $CDROOT/{bin,man,lib} and any other
directories you may want, to hold all your Linux utilities. In my case
I have $CDROOT/python which has the python installation.
-
Populate $CDROOT/I386 and $CDROOT: Make sure you copy
setup.exe and win* files from your Windows Install CD(s),
to here. For example, for Win XP Professional SP1, you need
win51,win51ip and win51ip.SP1 files. Then you may copy
some files from the I386 directory from your Windows Install CD(s).
If you only want the recovery console, then see
winreccons, to see which files to copy. On the
other hand, if you want to install Windows from the CD then you need to copy
the entire I386 directory. If you want to be able to install multiple
versions of windows from the CD, then dont copy all the I386 directories to
$CDROOT/I386. Copy them to $CDROOT/$WINVERSION/I386 and then
modify your winnt.exe invocation to reflect this change. If you also
want user interactive installation to work, then you need to modify the
$CDROOT/$WINVERSION/I386/winnt.sif file suitably.
-
Populate $CDROOT/isolinux: This is the most important of all. This
should have isolinux.bin, isolinux.cfg, memdisk as well as all the
floppy images, linux kernels, initrd images and the windows CD boot sector.
If you decide to have a graphical splash screen (like RedHat Install CD), then
this is where the .lss file goes.
Finally to burn the CD, use the command:
mkisofs -o $(ISOFILE) -b isolinux/isolinux.bin -J -r -N \
-c isolinux/boot.cat -no-emul-boot -boot-load-size 4 \
-boot-info-table $(CDROOT)
The J and r options enable Joliet and Rockridge extensions, the -N disables
ISO file version numbers (this actually deviates from the ISO9660 standard,
but you need this for Windows booting to work).
While you are experimenting with this you will need to go through several
iterations, so I suggest you use a makefile to automate this as well. Some of
the options in my makefile are to:
- iso: Create the iso image
- rfs: Create the linux initrd image (root file system) and drop it inside $CDROOT
- lib: Check that the initrd image, does not have unresolved shared library
dependencies. Dont forget to chase symlinks.
- makeld: Regenerate the ld.so.conf in the initrd file system
- burn: Burn the iso to the CD
- mfs,ufs: Mount and unmount the initrd file system (on a file) to a mountpoint,
using loop back devices
- cleaniso: delete the iso image
- cleanrfs: delete the initrd image
ganapathy murali krishnan
Last modified: Tue Dec 3 19:31:49 CST 2002