Remote upgrade FreeBSD 6.2 to 7.0

最近把一台freebsd 6.2远程通过ssh升级到了7.0,参考了一个台湾网友(小恶魔)的日志,详细步骤如下。

远程升级FreeBSD.6.2至7.0
  1. edit /etc/make.conf
  2. cd /usr/src && make update
  3. make -j4 buildworld
  4. make buildkernel KERNCONF=ALLBLUE70
  5. make installkernel KERNCONF=ALLBLUE70
  6. make installworld
  7. mergemaster -i
  8. shutdown -r now #*** reboot ***
  9. cd /usr/ports && rm INDEX-6* && make fetchindex && portsdb -u
  10. cd /var/db/pkg && rm pkgdb.db && pkgdb -F
  11. portupgrade -af
  12. cd /usr/src && make BATCH_DELETE_OLD_FILES=YES delete-old delete-old-libs
  13. shutdown -r now #*** reboot ***
  14. cd /usr/ports/misc/compat6x; make install clean;
Parsed in 0.008 seconds

针对需要注意的步骤讲解一下,特别注意的是,在进行所有步骤之前进行必要的校时工作。

edit /etc/make.conf
第一步主要是去掉一些make.conf中的非标准信息,并且正确设置SUPFILE,以便使得第二步的源码更新步骤正确进行,因为服务器是至强的,编译参数进行了一定的调优。

/etc/make.conf
CPUTYPE?=pentium4
CFLAGS= -O2 -pipe -funroll-loops
CXXFLAGS+= -fconserve-space
COPTFLAGS= -O -pipe -funroll-loops
NO_INET6= true
SUP_UPDATE=     yes
SUPHOST=        cvsup.cn.FreeBSD.org   
SUP=            /usr/bin/csup
SUPFLAGS=       -g -L 2 -z
SUPFILE=       /root/scripts/7.0-supfile  
PORTSSUPFILE=   /root/scripts/ports-supfile
Parsed in 0.005 seconds

supfile参照/usr/share/examples/cvsup/standard-supfile就可以了,不过要注意修改tag为RELENG_7_0
*default release=cvs tag=RELENG_7_0

第二步其实就是执行cvs源码更新和手工执行cvsup或csup是一样的,做完之后就可以开始buildworld了,-j参数根据CPU的个数和SMP进行相应调整。

第4,5步是编译内核和安装内核,由于之前我已经编译了自己的内核,发现7.0和6.2的内核配置差别不是太大,因此这次就大胆地直接编辑了自己的内核配置文件,直接编译新内核,对于不了解自己硬件的人,还是推荐编译GENERIC标准内核。

第6步是安装“世界”,这一步基本不会出现问题。

第7步是最烦人的,不过也是需要耐着性子做的,是各种配置文件的新旧版本对照修改,根据自己的情况来决定是新的,还是保留旧的,后者是整合两者。注意/etc/group文件也会提示有更新,保留旧的就可以了,不然后果可想而知。由于7.0的调整,有些服务已经被砍掉了,因此可以大胆删掉原来/etc/rc.d里的相关服务启动文件,主要有

ike nfslocking pccard pcvt ramdisk ramdisk-own usbd

台湾网友特别提到网卡用nve的,要改成nfe,不然可想而知,网卡不能启动,那就准备跑机房吧。

在第8步重启之后,其实可以说已经更新到7.0了,接下来的步骤都是收尾工作,无非是更新port数据库到新的7.0格式,重建pkg数据库,升级port,最后删除旧的没用的库文件,然后再重启一次。

最后一个步骤是为兼容以前一些6.0版本下的命令而特别安装的一个port,可以避免发生
/libexec/ld-elf.so.1: Shared object "libssl.so.4" not found

最后我的uname -a显示
FreeBSD ■■.■■■■.■■■ 7.0-RELEASE-p1 FreeBSD 7.0-RELEASE-p1