make buildkernel bricht ab

Esjott

Kellerkind
Hallo zusammen,

ich habe heute Morgen versucht, dem GENERIC Kernel um die option IPSEC und das device crypto zu erweitern und neu zu bauen. Dafür habe ich, wie im (englischen) Handbuch beschrieben, die GENERIC kopiert und als RIDCULLY gespeichert.
Wenn ich jetzt % make buildkernel KERNCONFIG=RIDCULLY aus /usr/src aufrufe, spuckt make mir folgendes entgegen:

Code:
--------------------------------------------------------------
>>> Kernel build for RIDCULLY started on Mon Jul 21 13:21:27 CEST 2014
--------------------------------------------------------------
===> RIDCULLY
mkdir -p /usr/obj/usr/src/sys

--------------------------------------------------------------
>>> stage 1: configuring the kernel
--------------------------------------------------------------
cd /usr/src/sys/amd64/conf;  PATH=/usr/obj/usr/src/tmp/legacy/usr/sbin:/usr/obj/usr/src/tmp/legacy/usr/bin:/usr/obj/usr/src/tmp/legacy/usr/games:/usr/obj/usr/src/tmp/legacy/bin:/usr/obj/usr/src/tmp/usr/sbin:/usr/obj/usr/src/tmp/usr/bin:/usr/obj/usr/src/tmp/usr/games:/sbin:/bin:/usr/sbin:/usr/bin  config  -d /usr/obj/usr/src/sys/RIDCULLY  -I '/usr/src/sys/amd64/conf' '/usr/src/sys/amd64/conf/RIDCULLY'
*** Error code 64

Stop.
make[1]: stopped in /usr/src
*** Error code 1

Stop.
make: stopped in /usr/src

config: illegal option -- I
usage: config [-CgmpV] [-d destdir] sysname
config -x kernel

Was ist da schief gelaufen und wie bekomme ich den Kernel kompiliert? ;)

Grüße,

Sven
 
Wahrscheinlich versuchst du den Kernel einer neueren FreeBSD-Version zu bauen, als auf dem Host installiert ist. Daher erwartet das Buildsystem die Option -I für config(8), die dein /usr/sbin/config aber nicht hat. Der korrekte Weg wäre nun, zuerst mit "make buildworld" das Basissystem zu bauen. Du musst es nicht mal installieren. Das ist auch der Grund, weshalb man "buildworld" tunlichst vor "buildkernel" aufzurufen. Allerdings kannst du mit "make kernel-toolchain" ein wenig abkürzen. Das baut keine komplette Welt, sondern gerade genug um den Kernel zu bauen.
 
Du musst übrigens nicht wie im Handbuch eine Kopie von GENERIC anlegen. Meine config ist ziemlich kompakt:
Code:
include		GENERIC
ident		S403

# Keep that around for when re0 acts dumb
options		DEVICE_POLLING
options		HZ=1000

# I want text dumps
options		DDB
options		TEXTDUMP_PREFERRED
options		TEXTDUMP_VERBOSE

Mit nooption und nodevice können auch im GENERIC Kernel eingeschaltete Optionen deaktiviert werden. Näheres steht in config(5).
 
Die Idee klau ich mir für meinen nächsten Kernel, generic importieren und den Rest überschreiben.
 
Moin zusammen,

@Yamagi: Danke für die erhellenden Zeilen! Mit vorangegangenem % make kernel-toolchain baut der Kernel gerade :)

@Kamikaze: Oh das merke ich mir für nächstes Mal, danke für den Tipp!

Grüße von irgendwo auf der Nordsee,

Sven
 
Zurück
Oben