How to boot Ubuntu from SSD drive which cannot be selected as boot device?

I have freshly installed Ubuntu 12.10 (64 bits) on an Asus S405CM-WX117H laptop (similar to this one) which features a 24GB SSD drive and a regular 500GB hard drive.

I placed the / (ext4) root file system in the SSD drive and partitioned the regular hard drive with 10GB swap and the rest as ext4 for /home. It installed smoothly without errors, but when it restarted, I seem not to be able to boot Ubuntu (I have nothing else there).

To verify the installation was successful, I checked it using a live Ubuntu (DVD) and both hard drives are recognized and the files from the new system are there. The order of the disk as recognized in Ubuntu is: sda = 500 GB SATA hdd, sdb = 24GB SSD. Would it help my boot issue if I would be able to make Ubuntu swap the drive name assignments?

In the BIOS both hard drives are listed, yet I can only choose to use the regular hard drive as a boot device, for some reason I don't understand. It simply doesn't let me boot from the SSD drive.

I know that if I would install Ubuntu on the 500GB disk, it would probably boot just fine, but I want it in the SSD for obvious performance reasons. Any idea on how I could fix this?


In the BIOS both hard drives are there, but I can only choose to use the 500gb disk to boot somehow.

Your OEM system vendor Asus probably placed the 24GB SSD drive for caching purposes, e.g. Intel Smart Response. This could explain why you can't set it as a boot drive. I suffer from the same issue in my HP laptop with an mSATA SSD slot and HP's response to this is "this is intentional".

My suggestion is to use your regular hard drive as the initial boot device, but to install the whole Ubuntu OS on the SSD. To do this, perform a regular installation, but configure an advanced partition layout like this:

  • Create a small partition (say 200MB) on your regular HDD for /boot.
  • Put / on the SSD.
  • Make sure the bootloader (Grub) is installed on the hard drive.
  • Optionally use the rest of the free space of hard drive as another mount point (e.g. /data or /home1)

This way your regular hard drive will only contain the kernel and initramfs for the initial boot stage, which is loaded within seconds. The speed in that is not significantly slower compared to an SSD due to only a few sequential reads in that stage. The kernel and initramfs will then move on to your / on the SSD and boot your system in about the same time as booting directly from SSD.

One downside of this approach is that your system will fail to boot even if just one of the drives fails.

1I would not recommend putting /home on the regular hard disk. Your home folder contains a lot of small files for which an SSD will help in speeding things up. I suggest to leave /home within /, use a separate /data for your hard disk and use symbolic links for folders with large files (e.g. /home/myusername/Music -> /data/Music.