The problem
Grub, Ubuntu's bootloader, was installed on the internal drive, but requires files present on the external drive to start up properly. When the external drive is absent, neither Ubuntu or Windows boots.
Solution, Part 1 - Repair the Windows Bootloader
Download Rescatux and burn the ISO to a CD. Reboot your computer from the CD, with the external drive not connected.
Select the win
option, and click OK
.
Select the winmbr
option, and click OK
.
Select the run
option, and click OK
.
Use common sense to figure out which partition contains Windows, select it, and click OK
.
Finally, use common sense to figure out which hard drive contains Windows, select it, and click OK
.
If asked about position
, leave the default option selected, and click OK
.
Reboot and test to make sure that Windows boots up correctly.
Solution, Part 2 - Reinstall the Ubuntu Bootloader
Boot from the Ubuntu Live CD with the external drive plugged in.
Run the following commands from a Terminal:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt-get update
sudo apt-get install -y boot-repair
boot-repair
Click on the Advanced options
button, then click on the Grub location
tab, and select Windows as the OS to boot by default. Make sure to select the option to install Grub only on the external hard drive. This is very important.
Finally, click on Apply
.
Now, reboot to make sure you can boot to Windows and to Ubuntu with the external drive plugged in.
You may want to set up your BIOS so that your external hard drive is before your internal one in the boot order. This will allow for seamless booting, without you having to configure anything upon reboots, whether you want to boot into Windows or Ubuntu.
Note: If you set up your BIOS to boot from USB devices automatically, you need to be aware that this may be a security risk (or a hassle): it may try to boot from other attached USB devices that are not your external hard drive containing Ubuntu. Always think twice before making changes like this.
Finally, once inside Ubuntu, you'll need to perform one last step, to prevent Ubuntu system updates from reinstalling Grub to your internal hard drive and replacing the Windows bootloader.
Open the Terminal application and run the following command:
sudo dpkg-reconfigure grub-pc
Enter your Ubuntu user's password, and then press Enter.
Press Enter for the first two screens. The third one is the one we're interested in.
Press Tab and then Enter, then navigate to your external hard drive using the arrow keys, and finally select using by hitting Space.

Note: Hard drives look like /dev/sda
in this list. Any entries with numbers, like /dev/sda1
, represent partitions and should be ignored.
Finally, confirm your selection by hitting Enter.
Your computer should, as of now, behave correctly and your start-up problems should be history.
Explanation of the solution
Boot-Repair installed Grub to your external hard drive only.
This allows your computer to boot to Ubuntu when it's connected, yet without depending on it to boot Windows when the external drive isn't plugged in.
With this configuration, Windows will boot by default, whether the external hard drive is plugged in or not.
Glossary
Bootloader: a piece of code that runs before any operating system is running. A bootloader is used to boot other operating
systems. Each operating system usually has its own bootloader.
GRUB (Grand Unified Bootloader): a bootloader package developed to support multiple operating systems and allow the user to select among them during boot-up. It is Ubuntu's default bootloader.
Command, command line: the traditional Unix environment , where you type commands to tell the computer what to do.
Terminal: an application that allows you to access the command line. Open it by hitting its keyboard shortcut, Ctrl Alt T