måndag 19 maj 2014

Getting Ubuntu 14.04 to boot from internal HDD/SSD on Toshiba NB10-series

The Toshiba NB10-A and NB10T-A has some issues booting Ubuntu after having installed it onto the internal HDD/SSD.

I can't say I know much about EFI and it's specifications, but there seems to be some difference between how Canonical looks at the standard and how the firmware in the NB10 works.

Booting Ubuntu 14.04 from Live media (USB) works well most of the time, while after having installed it, the NB10 simply won't boot anymore.
So what's the difference between the Live media and the installed system?
Well, that's the thing – they are not similar as we'll see.

The EFI-folder structure and its contents differ between the Live-media and the installed system. This may well be as it should, but in the case of NB10, it will prevent a successful boot.

Look at the tree's below for an overview of the differences:

Live-media                                             Installed OS

/                                                                 /
/EFI                                                            /EFI
    /BOOT                                                      /ubuntu
        grubx64.efi                                               grubx64.efi
        BOOTx64.EFI                                            shimx64.efi

Summarizing the differences I see:
Live media has a BOOT-folder below EFI.
The installed OS does not. It has an ubuntu-folder.

Live-media has got a file (which I believe I see on most EFI-installations by the way) named BOOTx64.EFI while the installed system does not.

In total 2 small differences which turns out to make a big difference.

If you want to see the steps to fix this, continue reading.

What you will need:

- your non-booting NB10 with installed Ubuntu 14.04
- an Ubuntu 14.04 live media which has been created using the Ubuntu live media creation-tool.
Please note that live-media created by other tools probably will not work as described in this guide!

Steps to be taken:
- boot your PC on the Live-media
- make a copy of your ubuntu-folder and rename it.
- copy the bootx64.efi file from the live-media to your hdd/ssd.

So, go ahead and boot your NB10 on the live media.

Step 1) Access and browse the EFI folder of your HDD/SSD

Click the search-button (I think it's called Dash).
Enter disks in the search field that appears.
You should see one single application filtered out named Disks – click it.
Disks should start and show a list of attached storage devices on the left-hand side.
In my example below, I used an 180GB SSD which you can see in the top of the list.

On the right side you'll see partitions and other details of the selected drive.
I have selected the 180GB SSD and the partitions are shown on the right side.
Locate the 1st partition, usually around 500MB and using FAT filesystem.
It is probably described as EFI System as shown in my picture. I have highlighted it.

Now mount it by pressing the Play-arrow beneath it.
Once mounted, you'll find link to it in the lower right area of Disks. Locate this link and click it.

Your filemanager should open in that location. See my example below.

Step 2) Copy the ubuntu-folder with content to boot

Look at the folder names & structure and the contents of the folders in the shot below.
I've changed the view to list-view to make it easier to get an overview of the tree. 

Now, copy the ubuntu-folder by use of CTRL C and paste it to the same location by use of CTRL V (or use your favorite copy/paste method).

Below is what you'll see (if you have switched back to icon view like I did):

Rename the ubuntu (copy)-folder to boot.

Step 3) Access and browse the EFI folder of your Live-media

Start up the Disks-application again (in case you closed it) or ALT+TAB your way back to it.
Locate your live-media device in the left side. My media is a 2GB USB memory so it's easy to find.
Click it once.

Now you may see that this media has one partition only and it is already mounted at /cdrom. (look in the lower right section)
Click that link to open a filemanager in that location. Don't be confused about my view looks slightly different from what you'll see. I have moved to the place I'll talk about next.

Step 4) Copy the boot Efi file from your live media to you HDD/SSD.

In the filemanager above, locate the folder EFI and open it. Also open the subfolder BOOT.
Path /cdrom/EFI/BOOT
In that location, find the file BOOTx64.EFI and copy that file to you HDD/SSD EFI/BOOT folder (remember that we mounted the EFI partition in step 1 above? That's were this file it going).
In my example, my EFI-partition is mounted as 6692-6CE3 in the filemanager-tree on the left side.
Click it and browse all the way down to the boot-folder as shown below.
That's where we should paste the BOOTx64.EFI-file.

Next step is just for safety – don't know if this is really necessary. You can choose to follow or not.
Go one step up, back into EFI, then down in ubuntu and paste the BOOTx64.EFI file there too.

That's it. You should now be able to choose to reboot the PC and remove the live-media before the PC starts booting up again.

Hope this helps.