NetBSD のカーネルを構築する。 !!カーネル取得 最初はこう。 root@kahori[/usr/src]# cvs -d :pserver:anoncvs@anoncvs.netbsd.org:/cvsroot checkout src 2 回目以降はこう。 root@kahori[/usr/src]# cvs update -dP !! tools ビルド tools ってなに。カーネルをコンパイルするときに必要な道具たちだそうな。toolchain とかいう記述も見掛けた。 何も考えずに build.sh tools したら /etc/mk.conf がほげほげと大量にエラーが出た。/etc/mk.conf を置いたのは pkgsrc を使うときだったので最初に build.sh tools したときは /etc/mk.conf は存在してなかった。とりあえずこんなふうにして逃げる。 /etc/mk.conf の意味を調べんと。 root@kahori[/usr/src]# mv /etc/mk.conf /etc/mk.conf.src root@kahori[/usr/src]# ./build.sh tools : ===> Tools built to /usr/src/obj/tooldir.NetBSD-2.99.10-i386 ===> build.sh started: Sat Nov 6 19:04:15 JST 2004 ===> build.sh ended: Sat Nov 6 19:26:26 JST 2004 ===> Summary of results: build.sh command: ./build.sh tools build.sh started: Sat Nov 6 19:04:15 JST 2004 No nonexistent/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/src/obj/tooldir.NetBSD-2.99.10-i386 DESTDIR path: /usr/src/obj/destdir.i386 RELEASEDIR path: /usr/src/obj/releasedir Created /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake makewrapper: /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Updated /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Tools built to /usr/src/obj/tooldir.NetBSD-2.99.10-i386 build.sh started: Sat Nov 6 19:04:15 JST 2004 build.sh ended: Sat Nov 6 19:26:26 JST 2004 ===> . !! カーネルコンパイル あいからずいまだに GENERIC なんだが。 root@kahori[/usr/src]# ./build.sh kernel=GENERIC |& tee kernel.log : text data bss dec hex filename 6696898 155236 492948 7345082 7013ba netbsd ===> Kernels built from GENERIC: /usr/src/sys/arch/i386/compile/obj/GENERIC/netbsd ===> build.sh started: Sat Nov 6 22:11:25 JST 2004 ===> build.sh ended: Sat Nov 6 22:53:23 JST 2004 ===> Summary of results: build.sh command: ./build.sh kernel=GENERIC build.sh started: Sat Nov 6 22:11:25 JST 2004 No nonexistent/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/src/obj/tooldir.NetBSD-2.99.10-i386 DESTDIR path: /usr/src/obj/destdir.i386 RELEASEDIR path: /usr/src/obj/releasedir Created /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake makewrapper: /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Updated /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Building kernel without building new tools Building kernel: GENERIC Build directory: /usr/src/sys/arch/i386/compile/obj/GENERIC Kernels built from GENERIC: /usr/src/sys/arch/i386/compile/obj/GENERIC/netbsd build.sh started: Sat Nov 6 22:11:25 JST 2004 build.sh ended: Sat Nov 6 22:53:23 JST 2004 ===> . !! カーネルインストール root@kahori[/usr/src/sys/arch/i386/compile/obj/GENERIC]# make install rm -f /onetbsd ln /netbsd /onetbsd cp netbsd /nnetbsd mv /nnetbsd /netbsd !!ユーザーランドの構築 root@kahori[/usr/src]# ./build.sh build |& tee build.log : Build started at: Sat Nov 6 23:59:28 JST 2004 Build finished at: Sun Nov 7 05:41:41 JST 2004 ===> Successful make build ===> build.sh started: Sat Nov 6 23:59:04 JST 2004 ===> build.sh ended: Sun Nov 7 05:41:41 JST 2004 ===> Summary of results: build.sh command: ./build.sh build build.sh started: Sat Nov 6 23:59:04 JST 2004 No nonexistent/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/src/obj/tooldir.NetBSD-2.99.10-i386 DESTDIR path: /usr/src/obj/destdir.i386 RELEASEDIR path: /usr/src/obj/releasedir Created /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake makewrapper: /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Updated /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Successful make build build.sh started: Sat Nov 6 23:59:04 JST 2004 build.sh ended: Sun Nov 7 05:41:41 JST 2004 ===> . !! ユーザーランドのインストール root@kahori[/usr/src]# ./build.sh install=/ |& tee install.log : postinstall checks passed: etc_release wscons postinstall checks failed: postinstall defaults mtree gid uid periodic rc ssh x11 makedev postfix obsolete sendmail hosts To fix, run: /usr/src/etc/postinstall -s /usr/src -d // fix postinstall defaults mtree gid uid periodic rc ssh x11 makedev postfix obsolete sendmail hosts ================================ make installworld started at: Sun Nov 7 07:23:50 JST 2004 make installworld finished at: Sun Nov 7 07:38:15 JST 2004 ===> Successful installworld to / ===> build.sh started: Sun Nov 7 07:23:28 JST 2004 ===> build.sh ended: Sun Nov 7 07:38:15 JST 2004 ===> Summary of results: build.sh command: ./build.sh install=/ build.sh started: Sun Nov 7 07:23:28 JST 2004 No nonexistent/bin/nbmake, needs building. Bootstrapping nbmake MACHINE: i386 MACHINE_ARCH: i386 TOOLDIR path: /usr/src/obj/tooldir.NetBSD-2.99.10-i386 DESTDIR path: /usr/src/obj/destdir.i386 RELEASEDIR path: /usr/src/obj/releasedir Created /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake makewrapper: /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Updated /usr/src/obj/tooldir.NetBSD-2.99.10-i386/bin/nbmake-i386 Successful installworld to / build.sh started: Sun Nov 7 07:23:28 JST 2004 build.sh ended: Sun Nov 7 07:38:15 JST 2004 ===> . !! /etc 以下のファイルの更新 etcupdate -al してファイルの差分を見ようとしたら「 invalid charset name 」と怒られた。 環境変数 PAGER を less に設定してた。jless に設定して回避。 rin@kahori[~]% echo $PAGER less -X rin@kahori[~]% echo $PAGER jless -X ついでに環境変数 LESSCHARSET を設定してなかったので明示的に設定した。JLESSCHARSET と合わせるとこのような設定。 root@kahori[/usr/src]# echo $LESSCHARSET ascii root@kahori[/usr/src]# echo $JLESSCHARSET japanese ようやっと etcupdate 。 root@kahori[/usr/src]# etcupdate -al : postinstall checks passed: postinstall etc_release defaults mtree periodic ssh wscons makedev postfix postinstall checks failed: gid uid rc x11 obsolete sendmail hosts To fix, run: /etc/postinstall -s /usr/src -d / fix gid uid rc x11 obsolete sendmail hosts *** All done ひとまず言われたとおりに実行。 root@kahori[/usr/src]# /etc/postinstall -s /usr/src -d / fix gid uid rc x11 obsolete sendmail hosts : postinstall fixes passed: rc obsolete hosts postinstall fixes failed: gid uid x11 sendmail まだ fail してる。 etcupdate したときにチェック、修正した対象の確認。 root@kahori[/usr/src]# /etc/postinstall list Source directory: /usr/src Target directory: / Supported items: Item Description ---- ----------- postinstall /etc/postinstall being up to date etc_release /etc/release being up to date defaults /etc/defaults/ being up to date mtree /etc/mtree/ being up to date gid required GIDs uid required UIDs periodic /etc/{daily,weekly,monthly,security} being up to date rc /etc/rc* and /etc/rc.d/ being up to date ssh ssh configuration update x11 x11 configuration update wscons wscons configuration file update makedev /dev/MAKEDEV being up to date postfix /etc/postfix/ being up to date obsolete obsolete file sets and minor libraries sendmail sendmail configuration being up to date hosts /etc/hosts being up to date x11 と sendmail は /etc/postinstall したときに fail と出たが、list を見ると update したという知らせしか書いてない。これはこれでいいのか? あとは gid と uid かな。 !! 参考 * NetBSD-current の追跡 - etcupdate を使った設定ファイルと起動ファイルの更新 http://www.jp.netbsd.org/ja/Documentation/current/index.html#etcupdate]] *FreeBSD QandA 362 日本語の含まれるファイルを、kterm 上で jless を使って表示させると文字化けします。 http://www.jp.freebsd.org/QandA/HTML/362.html *less - NetBSD Manual Pages http://netbsd.gw.com/cgi-bin/man-cgi?less++NetBSD-current *Linux JM - Manpage of LESS http://www.linux.or.jp/JM/html/GNU_less/man1/less.1.html *Open/NetBSD Japanese Environment Setup Guide (less) - less の使用方法 http://www.jp.netbsd.org/ja/JP/Documentation/japanese/netbsd-jp03.html