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

FreeBSD Manual Pages

  
 
  

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 Par-
       tition (ESP).  For BIOS-based computers,	see  gptboot(8)	 for  details.
       While conceptually 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  ex-
       plained 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	parti-
       tions.  These flags are FreeBSD specific	and non-standard.

       bootme	   Attempt to boot from	this partition.	 If more than one par-
		   tition has the bootme attribute set,	gptboot.efi  will  at-
		   tempt 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
       partition attributes.  gptboot.efi will boot from the first UFS	parti-
       tion 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	 untouched,  and the new version of the	operating system to be
       tested is installed on another partition.  The  bootonce	 attribute  is
       set  on	that  new test partition.  The next boot is attempted from the
       test partition.	Success	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	parti-
       tion  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 attribute is	set on
       any partitions, booting will be attempted from them first.  If no  par-
       titions	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	parti-
       tions  with  only the bootonce attribute	set, indicating	a failed boot,
       are set to bootfailed.  gptboot.efi  then  scans	 through  all  of  the
       freebsd-ufs  partitions.	  Boot	behavior depends on the	combination of
       bootme and bootonce attributes set on those partitions.

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

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

       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 generate a "boot from X failed"  system  log  mes-
       sage.  Partitions with only the bootonce	attribute, indicating a	parti-
       tion  that successfully booted, generate	a "boot	from X succeeded" sys-
       tem log message.	 The bootfailed	attributes 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.0			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.0-RELEASE+and+Ports>

home | help