Skip site navigation (1)Skip section navigation (2)

  
 
  

home | help
GPTBOOT.EFI(8)		     System Manager's Manual		  GPTBOOT.EFI(8)

NAME
     gptboot.efi -- GPT bootcode for UFS on UEFI computers

DESCRIPTION
     gptboot.efi  is  used  on	UEFI computers to boot from a UFS partition on a
     GPT-partitioned disk.  gptboot.efi is installed in the EFI System Partition
     (ESP).  For BIOS-based computers, see gptboot(8) for details.   While  con-
     ceptually	similar,  the  details	differ.  gptboot.efi works only with UFS
     root file systems.  Users with ZFS partitions should use loader.efi(8) with
     bectl(8) to control what dataset is used for root.

     What UEFI computers boot is usually controlled via the mechanisms explained
     in efibootmgr(8) using loader.efi(8) or boot1.efi(8).  However, some setups
     cannot use those mechanisms.  When the users cannot rely  on  host-supplied
     UEFI variables or they want the contents of the media alone to decide root,
     gptboot.efi accomplishes these goals.

     When  it starts, gptboot.efi first reads the GPT and determines which drive
     and partition to boot from, as described under  "BOOTING",  below.   If  it
     does  not find an eligible partition, it returns to the UEFI firmware.  The
     firmware will then try the next bootable item in the  UEFI  Boot  Manager's
     list, if any, usually a different disk.

IMPLEMENTATION NOTES
     The  GPT  standard  allows a variable number of partitions, but gptboot.efi
     only boots from tables with 128 partitions or less.

PARTITION ATTRIBUTES
     gptboot.efi checks and manages several attributes of  GPT	UFS  partitions.
     These flags are FreeBSD specific and non-standard.

     bootme	 Attempt  to  boot from this partition.  If more than one parti-
		 tion has the bootme attribute set, gptboot.efi will attempt  to
		 boot each one until successful.

     bootonce	 Attempt  to  boot  from  this partition only one time.  Setting
		 this attribute with gpart(8) automatically also sets the bootme
		 attribute.  Multiple  partitions  may	have  the  bootonce  and
		 bootme attributes set.

     bootfailed  The bootfailed attribute marks partitions that had the bootonce
		 attribute  set,  but failed to boot.  This attribute is managed
		 by the system.  See "BOOTING" and "POST-BOOT ACTIONS" below for
		 details.

USAGE
     For normal usage, the user does not have to set or manage any of the parti-
     tion attributes.  gptboot.efi will boot from the first UFS partition  found
     on the device.

     The bootonce attribute can be used for testing an upgraded operating system
     on  an already-working computer.  The existing system partition is left un-
     touched, and the new version of the operating system to be  tested  is  in-
     stalled  on  another  partition.  The bootonce attribute is set on that new
     test partition.  The next boot is attempted from the test partition.   Suc-
     cess  or failure will be shown in the system log files.  After a successful
     boot of the test partition, a user script can check the logs and change the
     bootme attributes so the test partition becomes the new  system  partition.
     Because the bootonce attribute is cleared after an attempted boot, a failed
     boot  will  not  leave  the system attempting to boot from a partition that
     will never succeed.  Instead, the system will boot from the  older,  known-
     working  operating  system  that  has not been modified.  If the bootme at-
     tribute is set on any partitions,	booting  will  be  attempted  from  them
     first.   If no partitions with bootme attributes are found, booting will be
     attempted from the first UFS partition found.

BOOTING
     gptboot.efi first reads the partition table.   All  freebsd-ufs  partitions
     with  only the bootonce attribute set, indicating a failed boot, are set to
     bootfailed.  gptboot.efi then scans through all of the  freebsd-ufs  parti-
     tions.  Boot behavior depends on the combination of bootme and bootonce at-
     tributes set on those partitions.

     bootonce + bootme	    Highest  priority: booting is attempted from each of
			    the freebsd-ufs partitions with both  of  these  at-
			    tributes.	On  each partition, the bootme attribute
			    is removed and the boot attempted.

     bootme		    Middle priority: booting is attempted from	each  of
			    the  freebsd-ufs  partitions  with	the  bootme  at-
			    tribute.

     If neither bootonce nor bootme attributes	are  found  on	any  partitions,
     booting is attempted from the first freebsd-ufs partition on the disk.

POST-BOOT ACTIONS
     The  startup  script /etc/rc.d/gptboot checks the attributes of freebsd-ufs
     partitions on all GPT disks.  Partitions with the bootfailed attribute gen-
     erate a "boot from X failed" system log message.  Partitions with only  the
     bootonce attribute, indicating a partition that successfully booted, gener-
     ate  a  "boot from X succeeded" system log message.  The bootfailed attrib-
     utes are cleared from  all  the  partitions.   The  bootonce  attribute  is
     cleared  from  the  partition  that successfully booted.  There is normally
     only one of these.

FILES
     /boot/gptboot.efi	bootcode binary
     /boot/efi/efi/boot/bootx64.efi
			Default boot loader for amd64 systems.
     /boot/efi/efi/boot/bootaa64.efi
			Default boot loader for arm64 systems.
     /boot/efi/efi/boot/bootarm.efi
			Default boot loader for arm systems.
     /boot/efi/efi/boot/bootriscv64.efi
			Default boot loader for riscv systems.

EXAMPLES
     gptboot.efi is installed in the ESP with cp(1).

     Install gptboot.efi into the ESP for the system.  This assumes the  ESP  is
     mounted in the standard /boot/efi directory.  For amd64, use the following
	   cp /boot/gptboot.efi /boot/efi/efi/boot/bootx64.efi
     For other systems, use the file listed in the "FILES" section.

     Set the bootme attribute for partition 2:

	   gpart set -a bootme -i 2 ada0

     Set  the bootonce attribute for partition 2, automatically also setting the
     bootme attribute:

	   gpart set -a bootonce -i 2 ada0

SEE ALSO
     rc.conf(5), boot(8), efibootmgr(8), gpart(8), gptboot(8), loader.efi(8)

HISTORY
     gptboot.efi appeared in FreeBSD 13.0

AUTHORS
     This manual page was written by Warner Losh <imp@FreeBSD.org>.  It is based
     heavily on the gptboot(8) man page by
     Warren Block <wblock@FreeBSD.org>.

FreeBSD 15.1			 April 13, 2023 		  GPTBOOT.EFI(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=gptboot.efi&manpath=FreeBSD+15.1-RELEASE+and+Ports.quarterly>

home | help