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.
As of revision 3363 only one change needs to be made.
Index: src/config/Config.lb =================================================================== --- src/config/Config.lb (revision 3389) +++ src/config/Config.lb (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
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.
gmake INTLLIBS=-lintl menuconfig
building SeaBIOS on NetBSD
A change is required to seabios/Makefile, then gmake can be used to build SeaBIOS in the normal way.
-$(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
using NetBSD/x86 with coreboot
Legacy interrupt routing (the PCI interrupt line register) is traditionally not implemented by coreboot on many mainboards. MPBIOS or ACPI will be required otherwise.
NetBSD does not (without patching) search for a MPBIOS floating pointer at the location coreboot usually places it. SeaBIOS does relocate this pointer structure however.
(This section is probably only relevant when not loading via SeaBIOS.)
NetBSD/i386 GENERIC still makes some BIOS calls after boot(8):
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.
| I, the copyright holder of this work, hereby release it into the public domain. This applies worldwide.
In case this is not legally possible: