これは日々の作業を通して学んだことや毎日の生活で気づいたことをを記録しておく備忘録である。
HTML ファイル生成日時: 2024/12/21 11:44:57.596 (台灣標準時)
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
必要であれば、再起動する。
以上で、カーネル及びユーザーランドを再構築することができた。