Please enter CoinGecko Free Api Key to get this plugin works.

Partner links

GPT disk partitioning guide for Ubuntu 13.10 on a PC with UEFI firmware

Default Windows 8 GPT partitions

This article offers a step-by-step guide on how to create GPT partitions on Ubuntu 13.10 on a computer with UEFI firmware.

Because Linux Mint is based on Ubuntu and use the same installer as its parent distribution, it can also be used to create GPT partitions on Linux Mint 16.

Before I started on this article, I took a look at the default GPT partitions created by Ubuntu’s installer’s and also by the one created by Windows 8 installer on a computer with UEFI firmware. The image below shows the Ubuntu’s default GPT partitions.
Default Ubuntu GPT partitions

And this one shows the default GPT partitions created by the Windows 8 installer as seen from Ubuntu’s Advanced Partitioning Tool’s window.
Default Windows 8 GPT partitions

You’ll notice that in each case, there is a free space at the beginning of the partitions of just 1 MB. That free space is not formatted and has no boot flag assigned. That just appears to be the default size of the free space preceding partitions on both operating systems. And it likely has nothing to do with GPT or UEFI.

I find that curious because back in 2011 when I wrote GPT disk partitioning guide for Chakra 2011.4, a requirement that GParted enforced for setting up GPT partitions is that the first partition had to have a bios_grub flag, and have a disk space as small as possible, say in the region of 1 MB to 8 MB. But it appears that that requirement no longer applies. I don’t know when that happened or if it is even the right way to go about creating GPT partitions, but that is how it is being created on the latest distributions and operating systems.

In any case, for this tutorial, I set out to create GPT partitions the old way, that is, with one that starts with a small, unformatted partition that has a bios_grub flag set, just to see if it will make any difference to the functioning of the system. The report is that it did not.

So what follows is a step-by-step guide on how to create GPT partitions using the Ubuntu 13.10 installer on a PC with UEFI firmware. Unlike the default partitions created by the Ubuntu installer, there will be a separate partition that will be mounted at /home, just for the benefit of those who like a separate partition for /home. That means we will be creating five partitions – bios_grub (bios_boot), boot-efi, / (root), /home, and Swap.

The installation media used for this tutorial is a USB stick, and Ubuntu 13.10 was loaded on it using UNetbootin running on Fedora 19 KDE. If you don’t have a USB stick around, you can always burn the ISO image to a DVD. To ensure that you are going to be using the GPT/UEFI-aware version of the Ubuntu installer, load the computer’s boot menu and select the appropriate option. How you get to a computer’s boot menu varies from vendor to vendor, so you’ll have to find out the right key for your own computer. Usually, it’s one of the function keys (F-keys). On my computer, it’s the F11 key.

This screenshot shows what mine looks like. You will notice two almost identical entries for a USB stick: One is USB: Ut165 USB2FlashStorage0.00. The other is UEFI: Ut165 USB2FlashStorage0.00. Selecting “USB: Ut165 USB2FlashStorage0.00” will load the MBR-aware Ubuntu 13.10 installer, while selecting “UEFI: Ut165 USB2FlashStorage0.00” will load the GPT/UEFI-aware version of the installer. To create the partitions for this tutorial, the choice is obvious
Computer Boot Menu

So once the computer boots in to the installer, make a couple of clicks until you get to the Installation type step. Since you are going to be creating partitions manually, select the Something else option. Click Continue.
Ubuntu installation type

That should bring you to the installer’s Advanced Partitioning Tool’s window. This screenshot shows how that of the computer used for this tutorial looks like, after all existing partitions were deleted. To start creating the needed partitions, select the free space as shown and click on the “+” button.
Ubuntu advanced partition tool

That should open the installer’s partition editor. The size of the partition, its mount point and how it’s going to be formatted (file system) will have to be specified here. All the partitions you create will be primary partitions, so you don’t have to worry about selecting Primary or Logical. If you have no idea what “primary” or “logical” means, you might want to read Guide to disks and disk partitions in Linux.
Ubuntu partition editor

To conform to the old way, if you can call it that, the first partition will be the bios-boot partition. The disk space will be just 1 MB. Select Reserved BIOS boot area from the Use as menu. OK.

UPDATE: You do not have to create this partition. It is no longer necessary to create a partition with a bios_grub flag, though it won’t break anything if you do.

Ubuntu 13.10 create bios_grub partition

Back to the main partitioning window, you will notice that the new partition has a biosgrub (bios_grub) flag. Select the free space and click on the “+” button again to create the next partition. This step will have to be repeated for the other partitions too.
Ubuntu 13.10 advanced partition tool

The next partition will be the GPT/UEFI equivalent of the boot partition. You will have to select EFI boot partition from the Use as menu to make it so. On a default installation of Ubuntu 13.10, the disk space allocated to this partition is 511 MB. OK.
Ubuntu 13.10 create boot efi partition

For the root partition, allocate disk space to it that will enough to install the system and also account for future growth in disk usage. (The recommended minimum disk space for Ubuntu 13.10 is about 6 GB.) Then select “/” from the Use as menu and Ext4 journaling file system from the Mount point menu. OK.
Ubuntu 13.10 create root partition

For the /home partition, allocate any amount of disk space you want, select /home as the mount point and the file system as shown. Then click OK. Note that if you want to have the installation on a btrfs file system, you don’t need a separate partition for /home. See How to install Ubuntu 13.10 and Linux Mint 16 on a Btrfs filesystem for more on that.
Ubuntu 13.10 create /home partition

For the Swap partition, the default disk space allocated to it by Ubuntu’s installer is 4 GB. On a 64-bit system, I see no reason to deviate from that. Select swap area from the Use as menu, then click OK.
Ubuntu 13.10 create swap partition

Back to the main partitioning window for the last time, you should now see all the partitions that you created. You may proceed with the rest of the installation.
Ubuntu 13.10 GPT partitions



Partner links

Newsletter: Subscribe for updates

Notify of
Inline Feedbacks
View all comments
8 years ago

I like the tutorial but I don’t understand one thing: Suppose that I am installing Linux on a virgin HDD (i.e one that does not have Windows already installed!). How do I create a GPT partition _table_ ? (As opposed to the traditional MBR partition _table_)

9 years ago

That alone wwas an egregious oversight on thheir own part, since ffecacdefded

10 years ago

Many unanswered questions. I’m reading now that SSD demands are different. My Dell Notebook (XPS-15) has a small mSATA SSD, as well as the traditional spinning disk. Many other devices have only various types of flash drives, which can take Linux.

Should I use the format & partitioning used by Linux’s Grub, or by Windows 7 or 8, or 8.1? I know that my Linux distributions can easily read-write my ntfs-compressed partitions, though not very safely. I guess I need to do more googling now?

Steve Riley
Steve Riley
Reply to  gregzeng
10 years ago

You can use the same kinds of partition table types and filesystem types on SSDs as you do on hard disks. SSDs have no special requirements there.

That small mSATA SSD is probably designed to be used as a cache for the larger spinning disk. It requires driver software to make it work that way; you don’t format the SSD or put a filesystem on it. I don’t know whether Linux drivers exist for this purpose, though.

Steve Riley
Steve Riley
10 years ago

Modern partitioning tools follow the 1 MB partition alignment practice [1]. Starting the first partition on logical block 2048 (using 512-byte logical blocks) avoids large-sector misalignment. It’s important because modern drives now use 4096-byte sectors, although they still report 512-byte sectors to operating systems. The “curious” 1 MB free space appearing in the partition manager reflects this.


10 years ago

i never made “bios-boot partition”
EFI boot partition is under /boot/efi & formated as fat32 (here not formated and not mounted)

Richard Foulkes
Richard Foulkes
10 years ago

The reason why older Linux distros needed the grub_bios partition was to embed older versions of grub. On a legacy bios system, grub was placed after the mbr, but before sector 63 / 2048. As the GPT table uses this area, embedding was not possible, so a partition had to be reserved for grub.

However, nowadays grub lives in the EFI boot partition’s filesystem, so this partition is no-longer necessary. In debian-based distros, grub-pc is the package to install the MBR version, and grub-efi installs the EFI version. The ubuntu installer these days will autodetect EFI firmware, auto create the EFI system partition, and install grub-efi instead of doing it the ‘old’ way.

Adam Williamson
Reply to  finid
10 years ago

To put it very simply: you need a BIOS boot partition for a BIOS native install to GPT. You need an EFI system partition for a UEFI native install. You don’t need either for a BIOS native install to MBR. You never need both.

Get the latest

On social media

Security distros

Linux distros for hacking and pentesting

Crypto mining OS

Distros for mining bitcoin and other cryptocurrencies

Crypto hardware

MSI GeForce GTX 1070
Installing Nvidia GTX 1070 GPU drivers on Ubuntu

Disk guide

Beginner's guide to disks & disk partitions in Linux

Bash guide

Bash shell terminal
How to set the PATH variable in Bash
Hya, what do you think? Please comment.x