---
name: "boot_config"
section: "8"
platform: "openbsd"
package: "man"
version: "8.0-current-20261101"
release: "OpenBSD 8.0-current (2026-11-01)"
platforms: ["openbsd"]
url: "https://new.carta.tech/boot_config"
---

# boot\_config(8)

how to change kernel configuration at boot

## NAME

**boot\_config** – how to change kernel configuration at boot

## DESCRIPTION

**BOOT\_CONFIG** is a kernel option that makes it possible to change the configuration at boot time. The same interface is available from userland, using the **-e** argument to [config(8)](/config/8.md).

The boot time configuration is invoked by passing the **-c** option, either from the firmware prompt or, depending on the architecture, when the bootstrap loader prompts for a kernel to boot:

```
>> OpenBSD/i386 BOOT 3.26
boot> boot -c
booting hd0a:/bsd: ...
...
real mem  = 1073086464 (1023MB)
avail mem = 1043189760 (994MB)
User Kernel Config
UKC>
```

Changes made can be saved for the next reboot, by using [config(8)](/config/8.md). However, those changes would not persist across system upgrades and would prevent kernel relinking. To ensure these changes are carried over to upgraded kernels, they can be saved to the [bsd.re-config(5)](/bsd.re-config/5.md) configuration file.

## COMMANDS

- **add** *dev*

  Add a device through copying another.

- **base** **8** \| **10** \| **16**

  Change the base of numbers displayed and entered.

- **change** *devno* \| *dev*

  Modify one or more devices.

- **disable** *devno* \| *dev*

  Disable one or more devices.

- **enable** *devno* \| *dev*

  Enable one or more devices.

- **exit**

  Continue boot.

- **find** *devno* \| *dev*

  Find one or more devices.

- **help**

  Give a short summary of all commands and their arguments.

- **list**

  Show all known devices, a screen at a time.

- **lines** \[*count*\]

  Set the number of rows per page.

- **quit**

  Continue boot.

- **show** \[*attr* \[*val*\]\]

  Show all devices for which attribute *attr* has the value *val*.

- **verbose**

  Toggle the autoconfig verbose variable.

## EXAMPLES

The Ethernet card is not detected at boot because the kernel configuration does not match the physical hardware configuration, e.g. wrong IRQ in OpenBSD/i386. The Ethernet card is supposed to use the [ne(4)](/ne/4.md) driver.

```
UKC> find ne
24 ne0 at isa0 port 0x240 size 0 iomem 0xd8000 iosiz 0 irq 9 drq -1 drq2 -1 flags 0x0
25 ne1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0
26 ne* at isapnp0 port -1 size 0 iomem -1 iosiz 0 irq -1 drq -1 flags 0x0
27 ne* at pci* dev -1 function -1 flags 0x0
28 ne* at pcmcia* function -1 irq -1 flags 0x0
UKC>
```

ne1 seems to match the configuration except it uses IRQ 5 instead of IRQ 10. So the irq on ne1 should be changed via the *change* command. The device can be specified by either name or number.

```
UKC> change ne1
25 ne1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0
change (y/n) ? y
port [0x300] ?
size [0] ?
iomem [-1] ?
iosiz [0] ?
irq [10] ? 5
drq [-1] ?
drq2 [-1] ?
flags [0] ?
25 ne1 changed
25 ne1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 5 drq -1 drq2 -1 flags 0x0
UKC>
```

The show command is useful for finding which devices have a certain attribute. It can also be used to find those devices with a particular value for an attribute.

```
UKC> show slot
  2 ahc* at eisa0 slot -1 flags 0x0
 10 uha* at eisa0 slot -1 flags 0x0
 12 ep0 at eisa0 slot -1 flags 0x0
 17 ep* at eisa0 slot -1 flags 0x0
102 ahb* at eisa0 slot -1 flags 0x0
103 fea* at eisa0 slot -1 flags 0x0
UKC> show port 0x300
 25 ne1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0
 72 we1 at isa0 port 0x300 size 0 iomem 0xcc000 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0
 75 el0 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 9 drq -1 drq2 -1 flags 0x0
 77 ie1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0
UKC>
```

It is possible to add new devices, but only devices that were linked into the kernel. If a new device is added, following devices will be renumbered.

```
UKC> find ep
 11 ep0 at isa0 port -1 size 0 iomem -1 iosiz 0 irq -1 drq -1 drq2 -1 flags 0x0
 12 ep0 at eisa0 slot -1 flags 0x0
 13 ep0 at pci* dev -1 function -1 flags 0x0
 14 ep* at isapnp0 port -1 size 0 iomem -1 iosiz 0 irq -1 drq -1 flags 0x0
 15 ep* at isa0 port -1 size 0 iomem -1 iosiz 0 irq -1 drq -1 drq2 -1 flags 0x0
 16 ep* at eisa0 slot -1 flags 0x0
 17 ep* at pci* dev -1 function -1 flags 0x0
 18 ep* at pcmcia* dev -1 irq -1 flags 0x0
UKC> add ep1
Clone Device (DevNo, 'q' or '?') ? 13
Insert before Device (DevNo, 'q' or '?') 14
 14 ep1 at pci* dev -1 function -1
UKC> change 14
 14 ep1 at pci* dev -1 function -1
change (y/n) ? y
dev [-1] ? 14
function [-1] ?
flags [0] ? 18
 14 ep1 changed
 14 ep1 at pci* dev 14 function -1 flags 0x12
UKC>
```

When configuration is completed, booting can proceed by issuing the **quit** or **exit** commands.

```
UKC> quit
Continuing...
mainbus0 (root)
```

## SEE ALSO

[bsd.re-config(5)](/bsd.re-config/5.md), [config(8)](/config/8.md)

## AUTHORS

Mats O Jansson ⟨*moj@stacken.kth.se*⟩
