当我尝试为 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 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64
恐怕/usr/make.conf
和/usr/src.conf
不存在。我查阅了相关的手册页,上面说它们通常位于/etc/
,但那里也不存在。
答案1
看起来系统正在尝试在您的 amd64 系统上构建 i386 内核。您能发布“uname -a”的输出、/usr/make.conf 和 /usr/src.conf 的内容吗?
更新:
重新阅读原始问题后,似乎您没有遵循手册,这可能是出错的原因。您应该运行make buildkernel
以构建新内核并make installkernel
安装它;make depend
等作为内部构建的一部分运行,但自 4.x 时代以来就不再需要手动运行。