| README for EFI version of GPT fdisk |
| =================================== |
| |
| GPT fdisk for EFI is a binary build of gdisk to run as a pre-boot EFI |
| application. It's OS-independent and may be used to check or recover |
| partition tables before installing or booting an OS. It may be used to |
| overcome boot problems caused by partition table damage or to prepare a |
| partition table prior to installing an OS. |
| |
| Installing GPT fdisk for EFI |
| ---------------------------- |
| |
| The contents of this archive are: |
| |
| - COPYING -- The GNU GPL |
| - gdisk.html -- The gdisk man page, in HTML form |
| - gdisk_x64.efi -- The gdisk binary, built for EFI (x86-64 CPU) |
| - NEWS -- The GPT fdisk changelog |
| - README-efi.txt -- This file |
| - refind.cer -- The rEFInd public key, .cer (DER) form |
| - refind.crt -- The rEFInd public key, .crt form |
| |
| The gdisk_x64.efi binary included here is built using the UEFI GPT fdisk |
| library (https://sourceforge.net/p/uefigptfdisk/), which is a beta-level |
| partial C++ library for UEFI. To use it, you must copy it to your EFI |
| System Partition (ESP) or some other EFI-accessible location. Under Linux, |
| the ESP is usually one of the first two or three partitions on /dev/sda. |
| Under OS X, it's usually the first partition on /dev/disk0 (that is, |
| /dev/disk0s1). Under Windows, you can mount it to S: by typing "mountvol S: |
| /S" in an Administrator command prompt. In any of these cases, the |
| recommended location for gdisk_x64.efi is the EFI/tools directory on the |
| ESP. In that location, my rEFInd boot manager will detect the gdisk binary |
| and create a menu option to launch it. If you don't use rEFInd, you can |
| launch the program using an EFI shell, register it as a boot program with |
| your firmware, or configure your boot manager (GRUB, gummiboot, etc.) to |
| launch it. Note that boot LOADERS, such as SYSLINUX and ELILO, can't launch |
| gdisk. |
| |
| Alternatively, you can create a USB flash drive that will launch gdisk when |
| you boot from it. To do so, create a FAT filesystem on a partition on a USB |
| flash drive and copy gdisk_x64.efi to it as EFI/BOOT/bootx64.efi. (You'll |
| need to create the EFI/BOOT directory.) Some systems may require the FAT |
| filesystem to be flagged as an ESP (with a type code of EF00 in gdisk). You |
| can use your firmware's built-in boot manager to boot from the USB flash |
| drive. Some such boot managers present two options for booting USB flash |
| drives. If yours does this, select the option that includes the string |
| "UEFI" in the description. |
| |
| The gdisk_x64.efi binary is signed with the rEFInd Secure Boot key. Thus, |
| if you're launching a rEFInd that I've compiled and distributed myself, |
| gdisk should launch, too. If you're *NOT* running rEFInd but ARE using |
| Shim, you'll need to add the refind.cer file to your MOK list by using the |
| MokManager utility. If you're using Secure Boot and you've signed rEFInd |
| yourself, you'll need to sign gdisk_x64.efi yourself, too. Note that the |
| rEFInd PPA distributes unsigned binaries and signs them with a local key |
| stored in /etc/refind/keys. To copy and sign the gdisk_x64.efi binary, you |
| should type (as root or using sudo): |
| |
| sbsign --key /etc/refind.d/keys/refind_local.key \ |
| --cert /etc/refind.d/keys/refind.crt \ |
| --output /boot/efi/EFI/tooks/gdisk_x64.efi ./gdisk_x64.efi |
| |
| This command assumes you have local rEFInd keys stored in the locations |
| created by the rEFInd installation script. Substitute your own keys if |
| you've built them in some other way. Some distributions don't provide the |
| sbsign binary, so you may need to build it yourself. See the following page |
| for details: |
| |
| https://git.kernel.org/cgit/linux/kernel/git/jejb/sbsigntools.git/ |
| |
| Note that you do *NOT* need to sign gdisk if your computer doesn't use |
| Secure Boot or if you've disabled this feature. |
| |
| Using gdisk for EFI |
| ------------------- |
| |
| The EFI version of gdisk is basically the same as using the Linux, OS X, or |
| other OS versions. One exception is that you do not specify a disk device |
| on the command line; gdisk for EFI instead displays a list of devices when |
| you launch and enables you to select one, as in: |
| |
| List of hard disks found: |
| 1: Disk EFI_HANDLE(3EB5DD98): 108423424 sectors, 51.7 GiB |
| Acpi(PNP0A03,0)/Pci(1|1)/Ata(Primary,Master) |
| 2: Disk EFI_HANDLE(3EB58289): 105456768 sectors, 50.3 GiB |
| Acpi(PNP0A03,0)/Pci(D|0)? |
| |
| Disk number (1-2): 2 |
| |
| Once you've selected your disk, it should operate in much the same way as |
| any other version of gdisk. (See the next section, though!) Some programs, |
| including my rEFInd boot manager, complain about the changed partition |
| table, even if you've made no changes. If you run into problems using other |
| programs or launching an OS immediately after running gdisk, reboot; that |
| should cause the firmware to re-load its partition table. |
| |
| Caveats |
| ------- |
| |
| I've tested gdisk_x64.efi on several systems. It's worked fine for me on 4 |
| of 6 computers (5 of 7, counting VirtualBox). Two systems gave me problems, |
| though: |
| |
| * gdisk presented a never-ending list of options (as if receiving a |
| never-ending string of "?" or other unrecognized command characters) on a |
| 2014 MacBook Air. |
| * A computer based on an Intel DG43NB motherboard rebooted as soon as I |
| launched gdisk. |
| |
| Both computers have relatively old EFIs. (Despite its newness, the Mac has |
| a 1.10 EFI, as do all Macs, to the best of my knowledge.) Most of the |
| computers that worked had 2.31 EFIs, although one had a 2.10 EFI. |
| |
| The bottom line is that I can't guarantee that this binary will work on all |
| computers. It's conceivable that recompiling gdisk with the latest version |
| of the UEFI GPT fdisk library will help. Also, I haven't compiled a 32-bit |
| version, so if you have a 32-bit EFI, you'll have to compile it yourself or |
| do without. |
| |
| References |
| ---------- |
| |
| The following sites have useful additional information: |
| |
| UEFI GPT fdisk: |
| https://sourceforge.net/projects/uefigptfdisk/ |
| |
| sbsigntools git repository: |
| https://git.kernel.org/cgit/linux/kernel/git/jejb/sbsigntools.git/ |
| |
| rEFInd: |
| http://www.rodsbooks.com/refind/ |