How to create a Windows bootable CD with mkisofs
Generally, the only reason for which you may need to create a bootable Windows CD is when you have updated the operating system installation files with the latest Service Pack (slipstream). Even in this case, chances are that most users will rather use standard windows software to create the bootable CDs than mkisofs under Linux, but, even for this extremely rare case, here is how to accomplish this task.
For the following operation the Linux native mkisofs version 2.01 (or genisoimage), which is shipped with Fedora (and with every other Linux distribution), was used.
The Windows port of mkisofs and, generally, the Win32 binaries of all the utilities included in the cdrtools package can be found in the Cdrtools: Win32 Binaries page. Please note that the page also includes a Win32 binary version of the latest (unstable) version of cdrtools. It is highly recommended to use the latest stable version.
So, change to the directory that contains the Windows installation files and issue the following command:
mkisofs \
-b cdboot/msboot.img -no-emul-boot -boot-load-seg 1984 -boot-load-size 4 \
-iso-level 2 -J -l -D -N -joliet-long -relaxed-filenames \
-V "WINSP" \
-o ../winsp.iso .
The above command ends with a dot (.).
All of the above flags seem to be necessary in order to relax many of the ISO restrictions. For more information about each of them please refer to the mkisofs (or genisoimage) manual page (man 8 mkisofs).
This tip assumes that the boot image which is used in the Microsoft bootable CDs is available and that it has been placed in a cdboot/ subdirectory under the windows installation files root dir:
.
cdboot/msboot.img
other_dir/some_other_file
file1
file2
I admit that this is a nasty workaround, but I didn’t have enough time to investigate why the -b option caused that much trouble. The path to the boot image which is supplied with the -b option is supposed to be a relative path to the path of the root directory of the windows files, which is our current directory, aka (.). But, everytime I placed the msboot.img outside the win files directory and used -b ../msboot.img, mkisofs complained with the following pesky error message:
mkisofs: Uh oh, I cant find the boot image '../msboot.img' !
It didn’t make any sense, so I did not bother any more with it. If you have any info on this or if I miss anything, which is rather possible since I have spent very little time with this, your feedback is appreciated.
The above command will produce an image of a bootable Windows CD, which will also contain the boot image. But, this should not be a problem in any case.
Note that the ISO image will be saved in the parent directory of the one that holds the Windows files.
Note: How to integrate a service pack into a Windows OS is beyond the scope of this document. There are numerous guides out there that cover this topic in great detail.