Best partition scheme for ubuntu + windows with EFI and GPT

Solution 1:

I don't recall offhand if Windows really requires anything beyond its C: partition and the ESP on an EFI installation. If it does, the installer will probably create whatever it needs automatically. My own approach would probably be to just leave free space for Windows and let the Windows installer create whatever it needs.

There is one major caveat: In my experience, the Windows 7 installer is very fussy about the ESP; it requires a FAT32 ESP. If you've got a FAT16 ESP, as many Linux installers create, Windows will flake out. IIRC, it'll either create a second ESP and become confused after one of its reboots during the installation or it will report that there's no ESP and refuse to install at all. Fortunately, you can change from a FAT16 to a FAT32 ESP by backing up, unmounting the ESP, using mkdosfs, remounting the ESP, and restoring the files. You may also need to adjust the /etc/fstab file if it uses the "UUID" (really a serial number) to identify the ESP.

As on a BIOS system, there's a possibility of boot loader issues after any OS installation. Thus, keeping a backup of the ESP is wise, and being prepared to deal with problems (via an emergency boot disc or the like) is also wise.

Solution 2:

Some BIOS have difficulties to find boot files located too far from the start of the disk, so i would:

  1. via Gparted reduce the sda2 partition from 83GB to 20GB
  2. install Windows in the 63GB free space
  3. Use Boot-Repair Recommended Repair to add a valid Windows UEFI entry in the GRUB menu

This would give something like:

sda      465.8G  disk 
├─sda1   190.8M  part /boot/efi
├─sda2      20G  part /
└─sda3    63.8G  part /windows
├─sda4   300.0G  part /home
└─sda5     1.9G  part [SWAP]

Solution 3:

On my Windows 7 hard disk, win7 ignored the EFI fat32 system partition, and made a new 100MB partition in unallocated space at the very end of the disk. To prevent this windows should be installed on a fully partitioned disk, without unallocated space.

I understand that windows wants to be the first OS at the start of the disk, but I have no personal experience to back this up.