升级源代码
如果你正在运行netbsd的发行版本(比如netbsd2.0),可能需要升级原代码,重建系统或者kernel,主要是为了安全补丁.
你可以通过anoncvs 和bransh tag升级当前版本的原代码.比如,checkout你的netbsd2.0原代码,你可以这样做:
$ echo "Host anoncvs.allbsd.org\
Port 2022\
Protocol 2" >> ~/ssh/config
$ cd /usr
$ env CVS_RSH=ssh cvs -d anoncvs-netbsd@anoncvs.allbsd.org:/cvsroot co -r netbsd-2-0 -P src
如果是升级原代码:
$ cd /usr/src
$ env CVS_RSH=ssh cvs update -dP
下面就是编译一个新kernel
(译者:先说说编译kernel的方法,现在可以使用2中方法.先说说老的方法)
1,取得原代码src
2,cd /usr/src/arch/i386(or other arch)/conf
3,cp GENERIC mykern
4,编辑mykern(根据你的需要:比如添加参数options,去掉不用的驱动,参数等等)
这里要说的怎么知道你的机器有那些设备呢.
dmesg|grep ' at '|more你会看到你的机器的设备.
如:[device] at dd
5,config mykern
这个命令为编译kern创建一个目录mykern
根据错误的信息纠正mykern里的配置,如果一切正常.则继续下一步
6,转到编译目录cd ../compile/mykern
7,make dpend
8,make
9,好了,kernel编译完成了.我的p42.4机器上,大概10分钟.
10,mv /netbsd /netbsd.old
备分老的kernel为netbsd.old
mv /usr/src/sys/arch/i386/compile/mykern/netbsd /
使用新kernel
11,reboot
现在我们使用的就是新kernel了.可以通过uname -a看看.
12.如果新kernel有问题.则可以继续使用老kernel,启动的时候按空格健,然后boot netbsd.old -s
进去后,mv /netbsd.old /netbsd
重起,这样又使用老kernel了.
第2个方法是使用build.sh
1,cd /usr/src
先看看UPDATING ./build.sh -h帮助
build.sh使用很简单.大致的形式是这样的
./build.sh 参数 target target...(targe主要是tools build distribution kernel install...)
升级稳定版本一般不需要升级/etc/所以我们使用build,注意哟.
当我们设定好kernel的配置文件后,即mykern后(你可以通过上面的config mykern看看有错误没有,有就根据提示纠正)
进入编译状态:
./build.sh -u -U tools
./build.sh -u -U kernerl=mykern
成功后,使用新kernel的方法同上._)
升级userland(基本库,程序,/ /sbin bin /usr中除pkg的部分)
./build.sh -u -U build(我的.p42.4上需要40分钟)
安装新的userland
./build.sh -U install=/
完毕.
如果我们不想编译整个系统,只对其中需要打补丁的部分升级,怎么办呢?
1,打补丁
通过cvs up 或者patch
2,到需要升级的软件目录下,比如/sendmail
cd gnu/usr.sbin/sendmail
make USETOOLS=no cleandir dependall
make USETOOLS=no install
其他:
建议使用cpuflags这个工具.它根据你的机器自动优化编译的参数,需要将其配置文件放入/etc/mk.conf中.
------------------------------------------
2升级到current
http://www.netbsd.org/Documentation/current/
上面说的是升级稳定的版本,如果是升级到current.(netbsd基本的就两个,release和current,你可以看看他们的branch tag:http://mail-index.netbsd.org/netbsd-announce/2005/01/13/0000.html)
你可以参照这篇文章.
NetBSD 从源代码升级到current的一点体会
http://www.linuxsir.org/bbs/showthread.php?t=129314
![nixsky[www.nixsky.com]](/templets/images/toplogo.gif)

