Last Update: "2012/01/27 10:02:45 makoto"
ソースを変更する
作るカーネルを追加する
カーネルと言えば、次の三つの指定・種類があります。
- release(8) の kern-GENERIC.gz 等に追加するもの
- sys/arch/${MACHINE}/conf の下の名前のうち有効なもの
(make するもの)
- MD カーネルとして、どれを使うか
このうち 1 と 2 は それぞれ
etc/etc.${MACHINE}/Makefile.inc (machine 毎) の
KERNEL_SET と BUILD_KERNELS で指定します
KERNEL_SETS= WALNUT EV64260 EXPLORA451 OPENBLOCKS200 OPENBLOCKS266 KUROBOX
KERNEL_SUFFIXES= img
BUILD_KERNELS= INSTALL_WALNUT INSTALL_OPENBLOCKS266 KUROBOX_MD
上の KERNEL_SETS が 1. の 「release(8) に追加するもの」、
BUILD_KERNELS が 2. の
「sys/arch/${MACHINE}/conf の下の名前のうち有効なもの」です。
1. に書いたものは 2. に重ねて指定する必要はありません。もし重ねて指定すると、
重複している、
と次のように、何度も言われます。
nbmake: "/export/evbppc-work/src/etc/Makefile" line 539:
warning: duplicate script for target "kern-KUROBOX" ignored
nbmake: "/export/evbppc-work/src/etc/Makefile" line 540:
warning: using previous script for "kern-KUROBOX" defined here
また 3 は 2 に書いたものを参照して、
src/distrib/${MACHINE}/md-kernel/Makefile 等に記述します。
MDSETTARGETS= INSTALL_WALNUT ${RAMDISK} - \
INSTALL_OPENBLOCKS266 ${RAMDISK} - \
KUROBOX_MD ${RAMDISK} -
上記の MDSETTARGETS で始まる一行の中に指定している三つ組は、それぞれ
KERNEL Image (ramdisk.fs) FILENAME
です。
最初の KERNEL で
使うカーネルを指定します。
最後の FILENAME に - とある時には netbsd-${KERNEL} 等、
それ以外の場合には名前そのものの指定になります。
この三つ組は
distrib/common/Makefile.mdset
で参照されています。
MD カーネルを作る
例えば macppc の場合には、次のところにあります。
ttyp2:makoto@st4200 12:23:59/050918(...checkout/src)> cd distrib/macppc/floppies
ttyp2:makoto@st4200 12:24:59/050918(...macppc/floppies)> ls -l
total 20
drwxr-xr-x 2 makoto wheel 512 Sep 5 23:36 CVS/
-rw-r--r-- 1 makoto wheel 151 Sep 5 23:28 Makefile
drwxr-xr-x 3 makoto wheel 512 Sep 6 00:15 bootfloppy/
drwxr-xr-x 3 makoto wheel 512 Sep 5 23:36 md-kernel/
drwxr-xr-x 3 makoto wheel 512 Sep 5 23:36 ramdisk/
特にこの中の md-kernel/Makefile が中心で、その中から ramdisk も参照されます。
カーネルの Makefile
カーネルを make する時の Makefile は
config GENERIC などをした時に、
どこからともなく現れます。
そこで、これをもし変更したいと思った時には、どこから現れるのか分っていない
と手が出ません。
例えば macppc なら次のところにあります。
src/sys/arch/macppc/conf/Makefile.macppc
sandpoint は次のところにあります。
src/sys/arch/sandpoint/conf/std.sandpoint
sysinst に追加
sysinst に date が必要な場合には、次のようにします。
Index: distrib/macppc/floppies/ramdisk/list
===================================================================
RCS file: /export/20050928/Repository/src/distrib/macppc/floppies/ramdisk/list,v
retrieving revision 1.1.1.1
diff -u -r1.1.1.1 list
--- distrib/macppc/floppies/ramdisk/list 29 Sep 2005 14:37:31 -0000 1.1.1.1
+++ distrib/macppc/floppies/ramdisk/list 29 Sep 2005 21:23:38 -0000
@@ -5,6 +5,7 @@
PROG bin/cat
PROG bin/chmod
PROG bin/cp
+PROG bin/date
PROG bin/dd
PROG bin/df
PROG bin/ed
sysinst
sysinst は distrib/utils/sysinst/ にあります。
sysinst を実行中の、操作の時に
customizeを選んだ時等の選択肢は
src/distrib/utils/sysinst/defs.h
src/distrib/utils/sysinst/arch/evbarm/md.h
(等)にあります。kernel は最大 8 種でその制限は上の一つ目にあります。
/etc/ttys
/etc/ttys を変更しておきたい場合:
macppc (だけ)なら
src/etc/etc.macppc/ttys
を変更します。
/dev/MAKEDEV
/dev/MAKEDEV はどこから来るか ?
./etc/etc.macppc/MAKEDEV.conf
./etc/MAKEDEV.tmpl
build.sh した時の記録を見ると、次のような部分があります。
install-etc-files ===> etc
# create etc/MAKEDEV
MACHINE=macppc MACHINE_ARCH=powerpc
NETBSDSRCDIR=/export/20070526tsc/src awk -f
/export/20070526tsc/src/etc/MAKEDEV.awk
/export/20070526tsc/src/etc/MAKEDEV.tmpl > MAKEDEV
|