Ошибка в компиляции ядра FreeBSD 8.0

1429
JBirch

Когда я пытаюсь скомпилировать свое собственное ядро ​​для FreeBSD 8.0, у меня возникают некоторые проблемы. На самом деле, я даже не могу пересобрать ядро ​​GENERIC без изменений!

Последние несколько строк, прежде чем я получаю ошибки при запуске make depend...

../../../amd64/amd64/genassym.c:227: error: 'struct pcpu' has no member named 'pc_tss' ../../../amd64/amd64/genassym.c:241: error: 'GUCODE32_SEL' undeclared here (not in a function) ../../../amd64/amd64/genassym.c:242: error: 'GUFS32_SEL' undeclared here (not in a function) ../../../amd64/amd64/genassym.c:243: error: 'GUGS32_SEL' undeclared here (not in a function) ../../../amd64/amd64/genassym.c:246: error: 'SEL_RPL_MASK' undeclared here (not in a function) *** Error code 1  Stop in /usr/src/sys/i386/compile/GENERIC. 

Это, опять же, без изменений в ядре GENERIC. Мое собственное ядро ​​добавляет только VESA и SC_PIXEL_MODE, но ошибки точно так же.

РЕДАКТИРОВАТЬ: Довольно интересно, что при запуске make cleandependя получаю следующий вывод, несмотря на компиляцию на машине amd64 и установку FreeBSD.

rm -f .depend machine amd64 cd ../../../modules; MAKEOBJDIRPREFIX=/usr/src/sys/i386/compile/SANDERS/modules KMODDIR=/boot/kernel DEBUG_FLAGS="-g" MACHINE=i386 KERNBUILDDIR="/usr/src/sys/i386/compile/SANDERS" SYSDIR="/usr/src/sys/i386/compile/SANDERS/../../.." make cleandepend ===> aac (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS ===> accf_data (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS ===> accf_dns (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS ===> accf_http (cleandepend) rm -f @ machine amd64 rm -f .depend GPATH GRTAGS GSYMS GTAGS ===> acpi (cleandepend) ===> acpi/acpi (cleandepend) "Makefile", line 4: "ACPI can only be compiled into the kernel on the amd64 and ia64 platforms" *** Error code 1  Stop in /usr/src/sys/modules/acpi. *** Error code 1  Stop in /usr/src/sys/modules. *** Error code 1  Stop in /usr/src/sys/i386/compile/SANDERS. 

Любое понимание будет высоко ценится :)

РЕДАКТИРОВАТЬ:

Выход uname -aявляется

FreeBSD jbirch.net 8.0-RELEASE FreeBSD 8.0-RELEASE #0: Sat Nov 21 15:02:08 UTC 2009 root@mason.cse.buffalo.edu:/usr/obj/usr/src/sys/GENERIC amd64 

а я боюсь /usr/make.confи /usr/src.confне существую Я поднял соответствующие страницы руководства, в которых говорилось, что они обычно находятся /etc/, но их там тоже не было.

1

1 ответ на вопрос

0
BCran

Похоже, система пытается собрать ядро ​​i386 в вашей системе amd64. Можете ли вы опубликовать вывод "uname -a", содержимое /usr/make.conf и /usr/src.conf, пожалуйста?

Обновление :

Перечитав исходный вопрос, вы обнаружите, что вы не следуете стандартному процессу сборки, описанному в Руководстве, поэтому, вероятно, все идет не так. Вы должны запустить, make buildkernelчтобы собрать новое ядро ​​и make installkernelустановить его; make dependи т. д. выполняются как часть внутренней сборки, но запускать их вручную с 4х дней не требуется.

Я подумал об этом, но я бы подумал, что вы сможете собрать 32-битное ядро ​​в 64-битной системе. О, хорошо, я отредактирую свой оригинальный пост с выводом и содержанием выше. JBirch 13 лет назад 0
Я обновил свой ответ, основанный на перечитывании вопроса: вы не должны запускать «make зависящий» - все, что вам нужно, это «make buildkernel». BCran 13 лет назад 0
Кажется, это нормально для компиляции ядра! Спасибо тебе за пояснение. JBirch 13 лет назад 0