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).
The boot time configuration is invoked by the
-c
option when OpenBSD
prompts for a kernel to boot:
>> OpenBSD BOOT 640/31744 k [1.29]
use ? for file list, or carriage return for defaults
use hd(1,a)/bsd to boot sd0 when sd0 is also installed
Boot: [[[wd(0,a)]/bsd][-abcdrs]] : -c
Booting...
avail mem = 28188672
using 430 buffers containing 1761280 bytes of memory
User Kernel Config
UKC>
Changes made can be saved for the next reboot, by using config(8).
COMMANDS
add
dev- Add a device through copying another.
base
8 | 10 | 16- Change the base of numbers displayed and entered, e.g. I/O addresses in a VAXen are octal.
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.
timezone
[minuteswest [dst]]- Change the tz timezone structure. minuteswest is the number of minutes west of GMT and dst is non-zero if Daylight Saving Time is in effect. Without arguments, displays its current value.
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) 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
AUTHORS
Mats O Jansson ⟨moj@stacken.kth.se⟩
BUGS
The add
command is rather restricted, and
might be expanded in the future.