Creating A Dual-Boot System On RAID10 (Ubuntu/Windows)
I just bought a new computer and I want to run Ubuntu 8.10 and Vista. I'm really afraid to loose some of my data when a harddrive dies, so I decided to go for a RAID10-setup. Most modern motherboards support RAID0,1,5 and 10.
After assembling my new computer, I discovered that the motherboard didn't have a true hardware-RAID-controller. Instead it's just software-RAID, sometimes called fakeraid. If I was installing a Linux-only-system, I wouldn't care and just use the Linux software-Raid options. But this time, my system has to be dual-boot.
The installation wasn't very smooth, but finally it works. I assume that I'm not the only one with this problem, so I decided to write down my experiences.
My Setup:
- Asus P5Q - intel ich10r southbridge
- 4x Seagate 500Gb 32Mb SATA
My disks are empty. If you follow my steps, your disks will be completely wiped. Please back up your data first! These steps worked for me. I cannot guarantee that these steps will work for you too. You'll need a good knowledge of Linux to perform these steps.
Step 1: creating RAID set in BIOS
After powering up the system, press CTRL-I to go to the Intel Matrix Storage Manager.
- Choose create RAID-volume.
- Choose a name, for example: diskset. Don't use numbers, some installation scripts in Ubuntu check for numbers in the disknames to determine if its a disk or a partition. I made the mistake to choose diskset1 as name. I wasn't able to rename the RAID volume, so I had to start all over!
- Choose RAID10, 64k stripe-size.
Your RAID set is now created.
Step 2: install Microsoft Windows
This step is pretty straight-forward. Vista recoqnizes the RAID set and displays it as 1 single disk. During the install, create a partition for Windows and leave enough diskspace for Linux.
Step 3: Ubuntu Intrepid 64bit
This is the hard part. It looks like there is a bug in the Ubuntu version of libparted. Due to this bug, the RAID10 disk is not visible during the installation. I followed the following steps to succesfully install Linux:
- Boot using the normal live/installation disk.
- Open a terminal:
sudo su -
apt-get update
apt-get install dmraid
- Now check for your RAID disk. It should be visible in /dev/mapper. You will also see 2 RAID0 disks. These are just 2 parts of the RAID10 disk.
ls -l /dev/mapper/
root@ubuntu:~# ls -l /dev/mapper/
crw-rw---- 1 root root 10, 60 2008-12-21 15:54 control
brw-rw---- 1 root disk 254, 2 2008-12-21 15:54 isw_bfgggbebhf_diskset
brw-rw---- 1 root disk 254, 1 2008-12-21 15:54 isw_bfgggbebhf_diskset-0
brw-rw---- 1 root disk 254, 3 2008-12-21 15:54 isw_bfgggbebhf_diskset1
brw-rw---- 1 root disk 254, 0 2008-12-21 15:54 isw_bfgggbebhf_diskset-1
- diskset is the RAID10 device.
- diskset-0 and diskset-1 are the RAID0 disks.
- diskset1 is the Windows partition on the RAID10 disk.
The installation script uses the command parted_devices to get all available devices, but parted_devices doesn't show the RAID10 disk. We have to patch libparted to solve this problem. It seems that an Ubuntu-specific patch is causing the trouble.
parted_devices #(to see the devices before the patch)
cd /root
mkdir src
cd src
apt-get build-dep parted
apt-get source parted
cd parted-1.8.8.git.2008.03.24
Edit debian/patches/00list and place a # before patch-dmraid. This will disable the faulty patch.
apt-get install fakeroot
dpkg-buildpackage -rfakeroot
cd ..
dpkg -i libpart*.deb
parted_devices
If everything went well, you will see the RAID10 device now.
Now you can install Ubuntu with the normal installer.
After the installation, you have to manually install grub.
sudo su -
mkdir /target/
mount /dev/mapper/isw_bfgggbebhf_diskset5 /target
mount --bind /dev/ /target/dev
mount -t proc proc /target/proc
mount -t sysfs sys /target/sys
chroot /target
grub
At the grub prompt, do the following:
device (hd0) /dev/mapper/isw_bfgggbebhf_diskset
find /boot/grub/stage1
This wil return the device which contains the grub files.
root (hd0,x)
setup (hd0)
exit
Grub is now installed, but isn't properly configured yet.
- Edit /boot/grub/menu.lst.
- Add Windows Vista:
title Windows Vista root (hd0,0) makeactive chainloader +1
- Edit # groot: # groot=(hd,4)
- Edit kopt: # kopt=root=/dev/mapper/isw_bfgggbebhf_diskset5 ro
update-grub
DONE! Now everything should work. Reboot and try your new setup.