Making a bootable ISO from DVD for VirtualBox

I started with a bootable Windows 7 Upgrade DVD. I tested the DVD by booting from DVD in a physical drive. The system put up a “press any key to install from CD/DVD” and it worked. Now, I attempted to make a bootable ISO for VirtualBox…

To make the ISO, I used this:

dd if=/dev/sr0 of=windows7.iso bs=2048 conv=sync

which I’ve read will clone the DVD and its boot ability? Is this correct?

When I start VirtualBox, version 4.0.8 r71778, I get the “FATAL: No bootable medium found! System halted.” The IDE Primary Master (CD/DVD) is set to see windows7.iso, so I suspect it sees the ISO, only it doesn’t appear to be bootable.

SATA Port 0 is set to Windows 7.vdi.

Am I missing a step somewhere?

The system is running openSUSE 11.4.

Thanks!

You do not need to make a bootable .iso, you already have one. You can either use the DVD directly or simply copy the image to your hardrive and use that in VB.

Did you set the boot order to CDROM then HD? Or choose the boot medium at “power up” with F12?

@gropiuskalle: Sorry, to clarify, I’m making an ISO because the netbook I’m planning to install it on doesn’t have a DVD drive. I tested the DVD on my desktop and it boots. (The netbook came with Windows 7. I put openSUSE 11.4 over it and am putting Windows 7 into VirtualBox so that I can use a Sony camera firmware updater that uses USB. Wine USB support isn’t enough for the firmware updater. I got all this to work under openSUSE 11.2 but can’t seem to get it running in 11.4.)

@ken_yap: Does what you suggest apply to VirtualBox as well? I’m confused. I did set the ISO as the IDE Primary Master (CD/DVD).

Thanks!

In VirtualBox you can set the boot order for devices for each VM under settings. Make sure CDROM is ahead of hard disk. Alternatively you can hit F12 when the VirtualBox splash screen appears and choose the CDROM as the boot device.

I set the CD/DVD ahead of the hard disk and got the same result, “No boot medium found”. F12 threw the same error.

Does it boot if you use some other ISO image, keeping everything else the same?

BTW, your settings screen for that VM should look something like this, with the name of the ISO file next to the CD icon. If the CD is bound to the physical CDROM drive of the host, naturally it’s not going to find anything there.

VirtualBox screenshot

I tried using an openSUSE 11.4 ISO last night and it threw up a totally different error message. I’ll have to copy the ISO from the desktop to the netbook again to see if there was a problem with the copy.

The host machine, a netbook, has no physical CD/DVD drive. The ISO is listed as the Primary Master for IDE in VirtualBox.

I copied the openSUSE 11.4 ISO over to the netbook and it worked perfectly with VirtualBox. That confirmed that my VirtualBox install works and that the problem I’m having is with the Windows 7 ISO.

So, after more research on the net, I discovered that the ISO I created with dd isn’t an ISO at all, but rather just the image of the DVD. I found this webpage…

How to edit Windows 7 Install DVD – Extract boot image and create iso | Popple IT

… which explains how to extract the boot binary and create a bootable ISO.

In summary,

  1. Use dd to make an image copy of the DVD to an image file

> dd if=/dev/sr0 of=windows7.img

  1. Use geteltorito (in openSUSE, this is in the genisoimage package) to extract the boot binary image

> geteltorito windows7.iso > boot.bin

Booting catalog starts at sector: 22
Manufacturer of CD: Microsoft Corporation
Image architecture: x86
Boot media type is: no emulation
El Torito image starts at sector 735 and has 8 sector(s) of 512 Bytes
Image has been written to stdout ….

  1. Make a directory to store the contents of the ISO

> mkdir windows7ISO

  1. Mount the image file to copy the contents

> su

mkdir /mnt/dvd

mount windows7.img /mnt/dvd -o loop

exit

> cp -r /mnt/dvd/* windows7ISO
> chmod -R 754 windows7ISO

  1. Copy boot.bin to the new ISO directory

> cp boot.bin windows7ISO

  1. Make the ISO

mkisofs -udf -b boot.bin -no-emul-boot -hide boot.bin -relaxed-filenames -joliet-long -D -o windows7.iso windows7ISO

  1. windows7.iso is your new bootable ISO

Thanks to Jonathon Poppleton for his webpage and ken_yap for providing me debugging clues!