---
name: "boot0cfg"
section: "8"
platform: "freebsd"
package: "base"
version: "16.0-CURRENT-20261027-61c70dc16a79"
release: "FreeBSD 16.0-CURRENT (2026-10-27)"
platforms: ["freebsd"]
url: "https://new.carta.tech/boot0cfg"
---

# boot0cfg(8)

boot manager installation/configuration utility

## NAME

**boot0cfg** – boot manager installation/configuration utility

## SYNOPSIS

**boot0cfg** \[**-Bv**\] \[**-b** *boot0*\] \[**-d** *drive*\] \[**-e** *bell* *character*\] \[**-f** *file*\] \[**-i** *volume-id*\] \[**-m** *mask*\] \[**-o** *options*\] \[**-s** *slice*\] \[**-t** *ticks*\] *disk* \| *file*

## DESCRIPTION

The FreeBSD ‘boot0’ boot manager permits the operator to select from which disk and slice an i386 machine (PC) is booted.

Note that what are referred to here as “slices” are typically called “partitions” in non-BSD documentation relating to the PC. Typically, only non-removable disks are sliced.

The **boot0cfg** utility optionally installs the ‘boot0’ boot manager on the specified *disk* or *file*; and allows various operational parameters to be configured.

If a file is specified as the target argument, all operations are performed entirely in-place. This allows for offline payload preparation.

On PCs, a boot manager typically occupies sector 0 of a disk, which is known as the Master Boot Record (MBR). The MBR contains both code (to which control is passed by the PC BIOS) and data (an embedded table of defined slices).

The options are:

- **-B**

  Install the ‘boot0’ boot manager. This option causes MBR code to be replaced, without affecting the embedded slice table.

- **-b** *boot0*

  Specify which ‘boot0’ image to use. The default is */boot/boot0* which will use the video card as output, alternatively */boot/boot0sio* can be used for output to the COM1 port. (Be aware that nothing will be output to the COM1 port unless the modem signals DSR and CTS are active.)

- **-d** *drive*

  Specify the drive number used by the PC BIOS in referencing the drive which contains the specified *disk*. Typically this will be 0x80 for the first hard drive, 0x81 for the second hard drive, and so on; however any integer between 0 and 0xff is acceptable here.

- **-e** *bell* *character*

  Set the character to be printed in case of input error.

- **-f** *file*

  Specify that a backup copy of the preexisting MBR should be written to *file*. This file is created if it does not exist, and replaced if it does.

- **-i** *volume-id*

  Specifies a volume-id (in the form XXXX-XXXX) to be saved at location 0x1b8 in the MBR. This information is sometimes used by NT, XP and Vista to identify the disk drive. The option is only compatible with version 2.00 of the 512-byte boot block.

- **-m** *mask*

  Specify slices to be enabled/disabled, where *mask* is an integer between 0 (no slices enabled) and 0xf (all four slices enabled). Each mask bit enables corresponding slice if set to 1. The least significant bit of the mask corresponds to slice 1, the most significant bit of the mask corresponds to slice 4.

- **-o** *options*

  A comma-separated string of any of the following options may be specified (with “no” prepended as necessary):

  - packet

    Use the disk packet (BIOS INT 0x13 extensions) interface, as opposed to the legacy (CHS) interface, when doing disk I/O. This allows booting above cylinder 1023, but requires specific BIOS support. The default is ‘packet’.

  - setdrv

    Forces the drive containing the disk to be referenced using drive number definable by means of the -d option. The default is ‘nosetdrv’.

  - update

    Allow the MBR to be updated by the boot manager. (The MBR may be updated to flag slices as ‘active’, and to save slice selection information.) This is the default; a ‘noupdate’ option causes the MBR to be treated as read-only.

- **-s** *slice*

  Set the default boot selection to *slice*. Values between 1 and 4 refer to slices; a value of 5 refers to the option of booting from a second disk. The special string “PXE” or a value of 6 can be used to boot via PXE.

- **-t** *ticks*

  Set the timeout value to *ticks*. (There are approximately 18.2 ticks per second.)

- **-v**

  Verbose: display information about the slices defined, etc.

## FILES

- */boot/boot0*

  The default ‘boot0’ image

- */boot/boot0sio*

  Image for serial consoles (COM1,9600,8,N,1,MODEM)

## EXIT STATUS

The **boot0cfg** utility exits 0 on success, and \>0 if an error occurs.

## EXAMPLES

To boot slice 2 on the next boot:

```
boot0cfg -s 2 ada0
```

To enable just slices 1 and 3 in the menu:

```
boot0cfg -m 0x5 ada0
```

Create a copy of ‘boot0’ with only slices 1 and 3 enabled in the menu and install that onto a disk using [gpart(8)](/gpart/8.md):

```
cp /boot/boot0 /boot/boot0.custom
boot0cfg -m 0x5 /boot/boot0.custom
gpart bootcode -b /boot/boot0.custom ada0
```

To go back to non-interactive booting, use [gpart(8)](/gpart/8.md) to install the default MBR:

```
gpart bootcode -b /boot/mbr ada0
```

## SEE ALSO

[geom(4)](/geom/4.md), [boot(8)](/boot/8.md), [gpart(8)](/gpart/8.md)

## AUTHORS

Robert Nordier ⟨*rnordier@FreeBSD.org*⟩

## BUGS

Use of the ‘packet’ option may cause ‘boot0’ to fail, depending on the nature of BIOS support.

Use of the ‘setdrv’ option with an incorrect -d operand may cause the boot0 code to write the MBR to the wrong disk, thus trashing its previous content. Be careful.
