From coreboot
Revision as of 15:16, 2 July 2008 by Jakllsch (talk | contribs) (some notes on coreboot in combination with NetBSD)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

The wiki is being retired!

Documentation is now handled by the same processes we use for code: Add something to the Documentation/ directory in the coreboot repo, and it will be rendered to Contributions welcome!

This page documents coreboot usage with NetBSD. It is probably terser than it could be, as it mostly just describes differences from the more-commonly-documented Linux procedures.

building coreboot on NetBSD

GNU make is required to build coreboot, install it from pkgsrc/devel/gmake.

coreboot v2

As of revision 3363 only one change needs to be made.

<source lang="text"> Index: src/config/


--- src/config/ (revision 3389) +++ src/config/ (working copy) @@ -5,7 +5,7 @@

makedefine CPP:= $(CC) -x assembler-with-cpp -DASSEMBLY -E
makedefine LIBGCC_FILE_NAME := $(shell $(CC) -print-libgcc-file-name)

-makedefine GCC_INC_DIR := $(shell LC_ALL=C $(CC) -print-search-dirs | sed -ne "s/install: \(.*\)/\1include/gp") +makedefine GCC_INC_DIR := /usr/include

makedefine CPPFLAGS := -I$(TOP)/src/include -I$(TOP)/src/arch/$(ARCH)/include -I$(GCC_INC_DIR) $(CPUFLAGS)
makedefine CFLAGS := $(CPU_OPT) $(DISTRO_CFLAGS) $(CPPFLAGS) -Os -nostdinc -nostdlib -fno-builtin  -Wall


coreboot v3

<source lang="text"> Index: Makefile


--- Makefile (revision 690) +++ Makefile (working copy) @@ -106,7 +106,7 @@

# Note: This _must_ come after 'CC' is set for the second time in this
# Makefile (see above), otherwise the build would break if 'gcc' isn't
# the compiler actually used for the build (e.g. on cross compiler setups).

-CFLAGS += -nostdinc -isystem `$(CC) -print-file-name=include` +CFLAGS += -nostdinc -isystem /usr/include

include lib/Makefile
include device/Makefile


On NetBSD libintl is required to build kconfig. <source lang="bash"> gmake INTLLIBS=-lintl menuconfig </source>

building LegacyBIOS on NetBSD

A change is required to legacybios/Makefile, then gmake can be used to build LegacyBIOS in the normal way. <source lang="text"> -$(Q)/bin/echo -e '$(foreach i,$2,#include "../$i"\n)' > $3.tmp.c +$(Q)echo -e '$(foreach i,$2,#include "../$i"\n)' > $3.tmp.c </source>

booting NetBSD/x86 with coreboot

interrupt routing

Legacy interrupt routing (the PCI interrupt line register) is traditionally not implemented on many mainboards under coreboot. MPBIOS or ACPI will be required.

NetBSD does not (without patching) search for a MPBIOS floating pointer at the location coreboot usually places it. LegacyBIOS does relocate this pointer structure however.

BIOS calls

NetBSD/i386 GENERIC still makes some BIOS calls after boot(8):

  • isapnp(4)
  • mca(4)

Removal of these subsystems from your kernel config(5) file removes these calls.

Due to the nature of x86_64, BIOS calls on NetBSD/amd64 are not a problem, as they cannot be made from long-mode.

Public domain I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.

In case this is not legally possible:
I grant anyone the right to use this work for any purpose, without any conditions, unless such conditions are required by law.