Chinaunix

标题: [NetBSD]还是重开一贴,编译MP内核出错(已解决) [打印本页]

作者: jazzly    时间: 2008-01-15 10:31
标题: [NetBSD]还是重开一贴,编译MP内核出错(已解决)
顺便问一下,我在编译 MP的内核时出现一个错误 (那台netbsd的机器是双PIII 的机器的)
-#error this needs a rewrite for MP

这个是怎么回事?我只在netbsd的maillist上查到一个相关内容。看是看不明白。编译不带MP的就能通过的。

http://mail-index.netbsd.org/port-i386/2007/01/05/0000.html

netbsd是4.0 正式版

以下是我的内核,是用adjustkernel 生成的。adjustkernel GENERIC > kernel

代码太长,贴不上来。请看
http://dinosaurier.googlepages.com/kernel

生成的是不带MP的,我再加入

options         MULTIPROCESSOR

options         APM_NO_IDLE
#options         DIAGNOSTIC        # STRONGLY RECOMMENDED
#options         LOCKDEBUG
#options         MPDEBUG
#options         MPVERBOSE
#options         DEBUG
options         MPBIOS                # configure CPUs and APICs using MPBIOS

编译就会报错,上面的错误

[ 本帖最后由 jazzly 于 2008-1-16 14:13 编辑 ]
作者: jazzly    时间: 2008-01-15 10:53
顺带问一下,没有X的情况下,在控制台怎样解决显示中文的问题??
zhcon好像用不了
作者: gvim    时间: 2008-01-15 15:19
有些内核模块不支持MP。
作者: jazzly    时间: 2008-01-15 15:20
那请问一下,哪个模块会用到kvm86.c 这个东西呢?我不是很清楚

难道是因为这个、、。??


# VESA framebuffer console
options         KVM86                   # required for vesabios
vesabios*       at vesabiosbus?
vesafb*         at vesabios?
options         VESAFB_WIDTH=800
options         VESAFB_HEIGHT=600
options         VESAFB_DEPTH=16
options         VESAFB_PM               # power management support
wsdisplay*      at vesafb? console ?

[ 本帖最后由 jazzly 于 2008-1-15 15:25 编辑 ]
作者: gvim    时间: 2008-01-15 15:41
options         KVM86                   # required for vesabios
vesabios*       at vesabiosbus?
作者: jazzly    时间: 2008-01-15 16:13
把这些注释掉后。
发生

  1. #    create  mykernel/.gdbinit
  2. rm -f .gdbinit
  3. echo "source ../../../../gdbscripts/bdump" >> .gdbinit
  4. echo "source ../../../../gdbscripts/kdump" >> .gdbinit
  5. echo "source ../../../../gdbscripts/msgbuf" >> .gdbinit
  6. echo "source ../../../../gdbscripts/pgrpdump" >> .gdbinit
  7. echo "source ../../../../gdbscripts/stats" >> .gdbinit
  8. echo "source ../../../../gdbscripts/vchain" >> .gdbinit
  9. echo "source ../../../../gdbscripts/vdump" >> .gdbinit
  10. echo "source ../../../../gdbscripts/xps" >> .gdbinit
  11. #    create  vers.c
  12. sh ../../../../conf/newvers.sh
  13. #   compile  mykernel/vers.o
  14. cc  -ffreestanding -fno-zero-initialized-in-bss   -mfpmath=sse -msse -march=pentium3 -O2 -Werror -Wall -Wno-main -Wno-format-zero-length -Wpointer-arith -Wmissing-prototypes -Wstrict-prototypes -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -Wno-sign-compare -Wno-pointer-sign -Wno-attributes -Wextra -Wno-unused-parameter  -fno-strict-aliasing    -Di386 -I.  -I../../../../../common/include -I../../../../arch  -I../../../.. -nostdinc -DLKM -DMAXUSERS=32 -D_KERNEL -D_KERNEL_OPT -I../../../../lib/libkern/../../../common/lib/libc/quad -I../../../../lib/libkern/../../../common/lib/libc/string -I../../../../lib/libkern/../../../common/lib/libc/arch/i386/string  -I../../../../dist/ipf  -c vers.c
  15. #      link  mykernel/netbsd
  16. ld -Map netbsd.map --cref -T ../../../../arch/i386/conf/kern.ldscript -Ttext c0100000 -e start -X -o netbsd ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o
  17. mpbios.o: In function `mpbios_pci_attach_hook':
  18. mpbios.c:(.text+0x1d4): undefined reference to `intr_add_pcibus'
  19. mpbios.o: In function `mpbios_scan':
  20. mpbios.c:(.text+0xf78): undefined reference to `local_apic'
  21. mpbios.c:(.text+0xfa2): undefined reference to `local_apic'
  22. *** Error code 1

复制代码

[ 本帖最后由 jazzly 于 2008-1-15 16:16 编辑 ]
作者: jazzly    时间: 2008-01-15 16:17
可能我得好好看一下编译内核的那些选项了。这么一直出错下去不是办法。
作者: szjungle    时间: 2008-01-15 20:16
直接编译 GENERIC.MP 会出错吗?
作者: jazzly    时间: 2008-01-16 12:30
直接编译 GENERIC.MP 是没有错的。但是我的机子不能开ACPI的,所以一定要修改
作者: abutter    时间: 2008-01-16 12:50
建议在MP的基础上进行修改 cat GENERIC GENERIC.MAP > MYOWN

然后进行相应的修改。
作者: jazzly    时间: 2008-01-16 13:33
mainbus0 at root

cpu* at mainbus?
#(# ioapic* at mainbus?


打开这项,好了




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2