This weekend, I converted all my 3 disks (2 HDD and 1 SSD) from a MBR based partition table to the newer one GPT. This was some work as I had to ensure that all my existing OSes ( Debian 8, Kali and Windows 10 ) run smoothlessly.
I am sharing some of the lessons and solutions to problem I faced:
Make sure you backup all importand data and have bootable ISO’s (USB or CDs) of Operating Systems you want up and running. I cannot stress this enough. While working with disk partition tables, things go wrong very easily and you will have an unbootable system very soon. This will be especially true if you are a tinkerer and like going deep into things. Having bootable USB drives will save you a lot of time. Use tools like unetbootin or familiarize your self with dd command to create this yourself.
Read about UEFI. This is a very new standard with confusing information all over the internet. In a nutshell, it is nothing more than a partition with code
ef00, but it is also a standard and a firmware.
Some of these readings would help:
First make sure your BIOS supports UEFI. Most of the new BIOS do it but there are some quirks and each BIOS manufacturer is different. For example, in my case HDD boot order does not work for UEFI boot. I had to switch the SATA cables in my HDD to make sure GRUB is my primary bootloader. Also, when you enable UEFI in BIOS, you will get double entries for eash UEFI Boot enabled disk. (one for UEFI boot and other for normal boot). Don’t be alarmed by it, its normal.
You will need to do actual conversion of partition tables first. For this, best utility is combination of gdisk and gparted works best. Make sure you spend some time going through their commands. I created gparted live CD Do not do this conversion in Windows. How can I change/convert a Ubuntu MBR drive to a GPT, and make Ubuntu boot from EFI?
If you are using Windows, familiarize with bcdedit . It is a command line tool to work with Windows boot entries. I would not advise using tools like EasyBCD etc as they are too buggy. For linux, make sure you know mount and chroot very well, these commands are very handy and it saves a lot of time if you them in advance than looking up internet everytime.
It is also good to determine when your OS is booted up in UEFI mode vs legacy mode. For linux, this command works: ` cat /sys/firmware/efi ` , If this folder exists, the system is booted in UEFI mode. How can I tell if my system was booted as EFI/UEFI or BIOS?
For linux GRUB, you will need to install
grub-efi. Also remember to run
update-grubafter conversion. You might be also required to install the bootloader again using
grub install /dev/sdXdepending upon the situation. How to reinstall GRUB2 EFI?
If you are running debian based system, this article is gold Switch Debian 7 wheezy from legacy to UEFI boot mode