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 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).
COMMANDS
adddev- Add a device through copying another.
base8|10|16- Change the base of numbers displayed and entered.
changedevno | dev- Modify one or more devices.
disabledevno | dev- Disable one or more devices.
enabledevno | dev- Enable one or more devices.
exit- Continue boot.
finddevno | 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) 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 ne125 ne1 at isa0 port 0x300 size 0 iomem -1 iosiz 0 irq 10 drq -1 drq2 -1 flags 0x0 change (y/n) ?yport [0x300] ? size [0] ? iomem [-1] ? iosiz [0] ? irq [10] ?5drq [-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 slot2 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 0x30025 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 ep11 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 ep1Clone Device (DevNo, 'q' or '?') ?13Insert before Device (DevNo, 'q' or '?')1414 ep1 at pci* dev -1 function -1 UKC>change 1414 ep1 at pci* dev -1 function -1 change (y/n) ?ydev [-1] ?14function [-1] ? flags [0] ?1814 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.