これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2025/10/23 09:33:09.857 (台灣標準時)
CVS を使って NetBSD のソースコードを取得する。以下のようにすれば、 NetBSD-current のソースコードを得ることができる。
# setenv CVSROOT :pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot
# setenv CVS_RSH ssh
# mkdir -p /somewhere/in/the/disk/src_0999
# cd /somewhere/in/the/disk/src_0999
# ${cvs} -q checkout -P src
# ${cvs} -q checkout -P xsrc
# ls -l
total 4
drwxr-xr-x 26 root wheel 1024 Feb 4 18:21 src
drwxr-xr-x 5 root wheel 512 Feb 4 18:43 xsrc
ソースコードは /usr 以下にあるようになっていると便利である。シンボリッ クリンクを張る。
# cd /usr # ls -F INSTALL/ bin/ include/ libdata/ local/ pkg/ share/ X11R7/ games/ lib/ libexec/ mdec/ sbin/ tests/ # ln -s /somewhere/in/the/disk/src_0999/src # ln -s /somewhere/in/the/disk/src_0999/xsrc # ls -F INSTALL/ bin/ include/ libdata/ local/ pkg/ share/ tests/ X11R7/ games/ lib/ libexec/ mdec/ sbin/ src@ xsrc@
カーネルの再構築のための設定ファイルを作成する。今回は、 GENERIC カー ネルの設定ファイルを使い、 nvmm (NetBSD Virtual Machine Monitor) の仮 想デバイスを追加したカーネルを作成する。
# cd /usr/src/sys/arch/amd64/conf # ls ALL INSTALL XEN3_DOM0 kern.ldscript.kaslr CVS INSTALL_XEN3_DOMU XEN3_DOMU majors.amd64 GENERIC MODULAR files.amd64 std.amd64 GENERIC_KASLR Makefile.amd64 kern.ldscript std.xen GENERIC_USERMODE NOCOMPAT kern.ldscript.Xen # cp -pi GENERIC OBS_GEN_20210204 # vi OBS_GEN_20210204 # diff GENERIC OBS_GEN_20210204 1193c1193 < #pseudo-device nvmm # NetBSD Virtual Machine Monitor --- > pseudo-device nvmm # NetBSD Virtual Machine Monitor
カーネルをコンパイルする。
# cd /usr
# mkdir obj
# cd src
# pwd
/usr/src
# ./build.sh -U -j 6 tools
# ./build.sh -U -j 6 kernel=OBS_GEN_20210204
.....
# link OBS_GEN_20210204/netbsd
/somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/x86_64--netbsd-ld -Map netbsd.map --cref -T netbsd.ldscript -Ttext 0xffffffff80200000 -e start -z max-page-size=0x200000 -X -o netbsd ${SYSTEM_OBJ:[@]:Nswapnetbsd.o} ${EXTRA_OBJ} vers.o swapnetbsd.o
NetBSD 9.99.79 (OBS_GEN_20210204) #0: Thu Feb 4 20:50:59 CST 2021
text data bss dec hex filename
21008964 717688 3473408 25200060 18085bc netbsd
mv -f netbsd netbsd.gdb
/somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/x86_64--netbsd-strip -g -o netbsd netbsd.gdb
===> Kernels built from OBS_GEN_20210204:
/somewhere/src_0999/src/sys/arch/amd64/compile/obj/OBS_GEN_20210204/netbsd
===> build.sh ended: Thu Feb 4 20:51:21 CST 2021
===> Summary of results:
build.sh command: ./build.sh -U -j 6 kernel=OBS_GEN_20210204
build.sh started: Thu Feb 4 20:46:43 CST 2021
NetBSD version: 9.99.79
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 9.99.79 amd64
HOST_SH: /bin/sh
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
DESTDIR path: /somewhere/src_0999/src/obj/destdir.amd64
RELEASEDIR path: /somewhere/src_0999/src/obj/releasedir
Updated makewrapper: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/nbmake-amd64
Building kernel without building new tools
Building kernel: OBS_GEN_20210204
Build directory: /somewhere/src_0999/src/sys/arch/amd64/compile/obj/OBS_GEN_20210204
Kernels built from OBS_GEN_20210204:
/somewhere/src_0999/src/sys/arch/amd64/compile/obj/OBS_GEN_20210204/netbsd
build.sh ended: Thu Feb 4 20:51:21 CST 2021
===> .
新たに作ったカーネルを / にコピーする。
# cd / # ls -l *netbsd* -rwxr-xr-x 1 root wheel 29143192 Feb 4 02:13 netbsd # cp -pi netbsd netbsd_9.99.79_original # cp -f /usr/src/sys/arch/amd64/compile/obj/OBS_GEN_20210204/netbsd /netbsd # cp -f /usr/src/sys/arch/amd64/compile/obj/OBS_GEN_20210204/netbsd /netbsd.999079.OBS_GEN_20210204 # ls -l *netbsd* -rwxr-xr-x 1 root wheel 29152664 Feb 4 20:56 netbsd -rwxr-xr-x 1 root wheel 29152664 Feb 4 20:59 netbsd.999079.OBS_GEN_20210204 -rwxr-xr-x 1 root wheel 29143192 Feb 4 02:13 netbsd_9.99.79_original
新たなカーネルで再起動する。
# shutdown -r now
新たなカーネルで起動した後、バージョンを確認してみる。
# uname -srm NetBSD 9.99.79 amd64
ユーザーランドを構築し、インストールする。
# cd /usr
# rm -rf obj
# mkdir obj
# cd src
# pwd
/usr/src
# ./build.sh -j 6 -U tools
.....
===> Tools built to /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
===> build.sh ended: Thu Feb 4 21:17:16 CST 2021
===> Summary of results:
build.sh command: ./build.sh -j 6 -U tools
build.sh started: Thu Feb 4 21:10:50 CST 2021
NetBSD version: 9.99.79
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 9.99.79 amd64
HOST_SH: /bin/sh
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
DESTDIR path: /somewhere/src_0999/src/obj/destdir.amd64
RELEASEDIR path: /somewhere/src_0999/src/obj/releasedir
Updated makewrapper: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/nbmake-amd64
Tools built to /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
build.sh ended: Thu Feb 4 21:17:16 CST 2021
===> .
# ./build.sh -j 6 -x -U distribution
.....
make distribution started at: Thu Feb 4 21:20:50 CST 2021
make distribution finished at: Thu Feb 4 22:34:47 CST 2021
===> Successful make distribution
===> build.sh ended: Thu Feb 4 22:34:47 CST 2021
===> Summary of results:
build.sh command: ./build.sh -j 6 -x -U distribution
build.sh started: Thu Feb 4 21:20:49 CST 2021
NetBSD version: 9.99.79
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 9.99.79 amd64
HOST_SH: /bin/sh
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
DESTDIR path: /somewhere/src_0999/src/obj/destdir.amd64
RELEASEDIR path: /somewhere/src_0999/src/obj/releasedir
Updated makewrapper: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/nbmake-amd64
Successful make distribution
build.sh ended: Thu Feb 4 22:34:47 CST 2021
===> .
# ./build.sh -x -U install=/
.....
make installworld started at: Thu Feb 4 22:45:08 CST 2021
make installworld finished at: Thu Feb 4 22:45:49 CST 2021
===> Successful installworld to /
===> build.sh ended: Thu Feb 4 22:45:49 CST 2021
===> Summary of results:
build.sh command: ./build.sh -x -U install=/
build.sh started: Thu Feb 4 22:45:08 CST 2021
NetBSD version: 9.99.79
MACHINE: amd64
MACHINE_ARCH: x86_64
Build platform: NetBSD 9.99.79 amd64
HOST_SH: /bin/sh
MAKECONF file: /etc/mk.conf (File not found)
TOOLDIR path: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64
DESTDIR path: /somewhere/src_0999/src/obj/destdir.amd64
RELEASEDIR path: /somewhere/src_0999/src/obj/releasedir
Updated makewrapper: /somewhere/src_0999/src/obj/tooldir.NetBSD-9.99.79-amd64/bin/nbmake-amd64
Successful installworld to /
build.sh ended: Thu Feb 4 22:45:49 CST 2021
===> .
ユーザーランドが新しいものに置き換わっていることが確認できる。
# ls -l /bin/ | head total 1774 -r-xr-xr-x 2 root wheel 18728 Feb 4 22:33 [ -r-xr-xr-x 1 root wheel 18808 Feb 4 22:33 cat lrwxr-xr-x 1 root wheel 11 Feb 4 22:33 chgrp -> /sbin/chown -r-xr-xr-x 1 root wheel 23152 Feb 4 22:33 chio -r-xr-xr-x 1 root wheel 14256 Feb 4 22:33 chmod -r-xr-xr-x 1 root wheel 30200 Feb 4 22:33 cp -r-xr-xr-x 1 root wheel 50208 Feb 4 22:33 cpio -r-xr-xr-x 1 root wheel 183640 Feb 4 22:33 csh -r-xr-xr-x 1 root wheel 23624 Feb 4 22:33 date
必要であれば、再起動する。
以上で、カーネル及びユーザーランドを再構築することができた。