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
 
を使って、もう一度作り直しました。
   |