| NetBSD 解説 | sysinst | pkgsrc 各論 | packages | macppc | TsubaiBSD | 絹/software/全文検索
at www.ki.nu

NetBSD 解説

Last Update: "2007/03/15 08:50:29 makoto"

3.99.19

3.99.19 の古い kernel を作り直した時の記録です
usr/src/sys
usr/src/sys/common 
の二つを開けます。
             setenv FTP /e/u/j/ftp/pub/NetBSD/snapshot/20060506ts
109  18:54   mkdir 3.99.19
115  18:55   cd 3.99.19/
116  18:56   tar zxf  ${FTP}/source/sets/syssrc.tgz
117  19:04   tar ztvf ${FTP}/source/sets/src.tgz
118  19:04   tar zxvf ${FTP}/source/sets/src.tgz usr/src/common
config を用意します。今回は sys/arch/macppc/conf/ZS-L2-1M-PB2-SHM という名前で、内容は次の通り
# $NetBSD$
#
#       GENERIC kernel, plus ...

include "arch/macppc/conf/GENERIC"

options         ZS_CONSOLE_ABORT
options         L2CR_CONFIG="(L2SIZ_1M|L2CLK_20|L2RAM_PB2)"
options         SHMMAXPGS=2048

options         NKMEMPAGES_MAX=24576
options         DDB_ONPANIC=0
念の為 gcc-3.4.5 を使うことにします
                cd sys/arch/macppc/conf
                config ZS-L2-1M-PB2-SHM
                cd ../../compile/ZS-L2-1M-PB2-SHM
   131  19:13   env PATH=/usr/pkg/gcc34/bin:${PATH} make depend netbsd
何と ..
 -c ../../../../kern/kern_synch.c
{standard input}: Assembler messages:
{standard input}:654: Error: symbol `bpendtsleep' is already defined
と言われてしまう
    562 #if     defined(DDB) && !defined(GPROF) && !defined(DDB_ONPANIC)
    563         /* handy breakpoint location after process "wakes" */
    564         __asm(".globl bpendtsleep\nbpendtsleep:");
    565 #endif
add the red word. Or with some gcc version, you may need following change.
#if     defined(DDB) && !defined(GPROF) && !defined(DDB_ONPANIC) && DDB_ONPANIC != 0
赤字の部分を追加)。実はちょっと間違えて単に make と続けた時に
In file included from ../../../../net/if_bridge.c:107:
../../../../net/if_llc.h:54: warning: '__packed__' attribute ignored for field of type 'struct '
../../../../net/if_llc.h:58: warning: '__packed__' attribute ignored for field of type 'struct '
../../../../net/if_llc.h:62: warning: '__packed__' attribute ignored for field of type 'struct '
../../../../net/if_llc.h:74: warning: '__packed__' attribute ignored for field of type 'struct '
../../../../net/if_llc.h:83: warning: '__packed__' attribute ignored for field of type 'struct '
*** Error code 1
これは簡単には分らないが、消して見る (gcc 4.1.2 の時 ?) gcc-3.4.5 なら、これは言われないので戻す。

ちなみに、

options         NKMEMPAGES_MAX=24576
の行を追加した理由は次のような panic で、
panic: malloc: out of space in kmem_map
Stopped in pid 362.1 (nfsd) at  netbsd:cpu_Debugger+0x14:       addi    1,1,16
db> bt
at panic+1bc
at malloc+1c4
at ufs_readdir+3a8
at VOP_READDIR+4c
at nfsrv_readdir+5dc
at nfssvc_nfsd+56c
at sys_nfssvc+2c4
at syscall_plain+d8
at setfault+c54
db> 
この時は
vm.nkmempages = 12288 
だった。 一つのディレクトリに、沢山のファイルがあると、こうなるのでは ? という気も している。(例えば 数万の単位で)。 古い port-sparc のメール: http://mail-index.netbsd.org/port-sparc/2001/08/22/0000.html 次のように書くのはどうか ? と書いてある ?
options 	NKMEMPAGES_MAX="((24 * 1024 * 1024) >> PAGE_SHIFT)"	# default 24MB worth
PAGE_SHIFT が 12 ( PAGE_SIZE = 4096 ) だとすると、 今回の 24576 は 96 M 相当ということになるかな。
96*1024*1024/4096 = 24576
ufs が malloc する時に、だめだよって言えばいいのでは ? という気もするけれど 実は別の panic をします。実記憶が 224M なので、
224/4*1024*1024/4096 = 14336
を使って、もう一度作り直しました。
old pkgsrc

この画面は Jeedosaquin によって表示しています。

1.66 2008/03/08