CentOS 6 / Windows 8 Dual-Boot on Different Drives

Please don’t consider this an authoritative post. To reach this point there were many, many reboots, reinstalls, and recoveries.

I bought a small ASUS tower from Best Buy and a 120GB solid-state drive.

I tried to install CentOS 6.4 over Windows 8, but the UEFI boot sequence prevented me from succeeding. Taking this a sign that there was value in Windows 8, I began to look into dual-booting.

Since I will be using CentOS for development and Windows 8 for testing (IE10), I wanted to put CentOS on the solid-state drive, and not modify the Windows 8 drive, other than that which was required to allow dual-booting.

The first few attempts assumed Windows would boot and allow me to choose CentOS, defaulting to CentOS. No matter what I did, this didn’t work. Right or wrong, I think Windows was unable to dual-boot to a drive other than the one it was on.

In the process, I lost the Windows recovery partitions installed by the manufacturer. This meant I had to reinstall Windows from a licensed MSDN disk. It also meant I lost the UEFI elements. But, in the end Windows 8 was booting and running.

I had to disable the UEFI only boot limitation in the BIOS. This may not be necessary.

The next step was to install CentOS, which I did using a USB stick and a network install. The stick was created with UNetBootin, which is really nice.

When the installer got to the part where it asked which drives should be used, I chose both the Windows and solid-state drives, and placed the boot loader on the Windows drive. This is because the Windows drive is identified in the UEFI BIOS as a boot device, and the solid-state disk isn’t. The solid-state device may be considered bootable now that the installation is complete, but there’s no reason to change what is working.

Once CentOS installed everything was fine. The only adjustment I made was to edit the /boot/grub/grub.conf file to change ‘Other’ to ‘Windows 8.’

This is the grub.conf file:

Code

# grub.conf generated by anaconda
#
# Note that you do not have to rerun grub after making changes to this file
# NOTICE:  You have a /boot partition.  This means that
#          all kernel and initrd paths are relative to /boot/, eg.
#          root (hd1,0)
#          kernel /vmlinuz-version ro root=/dev/mapper/vg_asustowercentos-lv_root
#          initrd /initrd-[generic-]version.img
#boot=/dev/sdc
default=0
timeout=5
splashimage=(hd1,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-358.6.1.el6.i686)
  root (hd1,0)
  kernel /vmlinuz-2.6.32-358.6.1.el6.i686 ro root=/dev/mapper/vg_asustowercentos-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_asustowercentos/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_asustowercentos/lv_swap crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
  initrd /initramfs-2.6.32-358.6.1.el6.i686.img
title CentOS (2.6.32-358.6.1.el6.i686)
    root (hd1,0)
    kernel /vmlinuz-2.6.32-358.6.1.el6.i686 ro root=/dev/mapper/vg_asustowercentos-lv_root rd_NO_LUKS LANG=en_US.UTF-8 rd_LVM_LV=vg_asustowercentos/lv_root rd_NO_MD SYSFONT=latarcyrheb-sun16 rd_LVM_LV=vg_asustowercentos/lv_swap crashkernel=128M  KEYBOARDTYPE=pc KEYTABLE=us rd_NO_DM rhgb quiet
    initrd /initramfs-2.6.32-358.6.1.el6.i686.img
title Windows 8
  rootnoverify (hd0,0)
  chainloader +1

/dev/hd0 is the Windows drive
/dev/hd1 is the solid-state drive

Lessons I learned:

If you use gparted (http://gparted.sourceforge.net/), you can’t install Windows 8 on the new partitions.

I could create the UEFI partitions, but not the recovery partitions. But it wouldn’t work. I’m sure I missed some vital step. Every time. :)

The EasyBCD tool (http://neosmart.net/EasyBCD/) is really nice, but I couldn’t get it to do what I wanted. I think if you are going to put both operating systems on the same drive, it would be the way to go.

It costs $130 for the GeekSquad at BestBuy to restore the disk to its manufacturer state. I didn’t bother.

You can’t buy a Windows 8 recovery disk from the manufacturer (ASUS) at the time of this writing.

CentOS installs very fast on a solid-state drive. Thank goodness.

Creating the UEFI partitions for Windows 8 would probably take me a week, and even then, I’m not sure it would work. It’s very interesting.

UEFI = Universal Extensible Firmware Interface

I should have made a recovery disk for Windows before I started.

Windows 8 is nice.

Window-X (holding the Windows key and clicking X) gets you the admin menu, which includes the command line and disk management utilties.

Windows 8 has auto-repair, but it didn’t work in my case.

It often takes less time to reinstall than to identify and correct a problem. That’s a fine strategy if you don’t need to know too much. In my case, the goal was dual-boot - not a thorough understanding of the boot load process across two operating systems.