Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650072
  • 博文数量: 197
  • 博客积分: 4858
  • 博客等级: 上校
  • 技术积分: 2162
  • 用 户 组: 普通用户
  • 注册时间: 2006-05-06 22:46
文章分类

全部博文(197)

文章存档

2011年(30)

2010年(21)

2009年(25)

2008年(80)

2007年(41)

分类: BSD

2008-11-17 14:23:29

操作系统:FREEBSD6
方式:使用cvsup更新升级系统

步骤1:升级准备的工作

代码:
# cd /usr/obj
# chflags -R noschg *
# rm -rf *
# cd /usr/src
# make cleardir
# make cleardir


步骤2:使用cvsup同步源代码树:
代码:
# ee /usr/share/examples/cvsup/stable-supfile

找到:*default tag
修改为:*default tag=RELENG_6_0
注释:tag=RELENG_6_0为同步到6.0中最新的稳定版源码.RELENG_6为6.*的最新的稳定版源码

代码:
#cvsup -h cvsup服务器地址 -g -L 2 /usr/share/examples/cvsup/stable-supfile


注释:以下是一些cvsup的地址
  • cvsup.freebsdchina.org
  • cvsup2.freebsdchina.org
  • cvsup3.freebsdchina.org
  • cvsup.scivoid.com
  • cvsup.cn.freebsd.org
步骤3: 建立新的源码树
代码:
#make buildworld

步骤4:建立新的内核
方法一:系统默认新的内核[新手推荐]

代码:
#make buildkernel
#make installkernel

方法二:自定制内核
你也可以在步骤3后建立自己定制的内核文件进行编译

代码:
# cp /usr/src/sys/i386/conf/GENERIC /usr/src/sys/i386/conf/自己内核文件的名字
# ee /usr/src/sys/i386/conf/自己内核文件的名字

进行相应的编辑

代码:
# cd /usr/src
# make buildkernel KERNCONF=自己内核文件的名字
# make installkernel KERNCONF=自己内核文件的名字

步骤4:重起系统
代码:
# reboot

步骤5:进入单用户模式
在启动文本菜单上选择"4"
再在 shell 提示符处执行:

代码:
# fsck -p ;检查文件系统
# mount -u / ;装载根分区
# mount -a -t ufs ;装载所有的ufs分区
# swapon -a ;打开交换空间

这会检查文件系统,重新装载 / 为读/写,参考 /etc/fstab 装载其它所有的 UFS 文件系统,然后打开交换 (swapping) 开关。

步骤6:安装新建的Stable树,保证内核和应用程序之间的同步:

代码:
#mergemaster -p

注意: 有时, 可能需要额外地执行一次 mergemaster -p 才能够完成 buildworld 步骤。 这些要求, 会在 UPDATING 中进行描述。 一般而言, 您可以简单地跳过这一步,只要进行的不是大跨度的 FreeBSD 版本升级

代码:
# make installworld 安装新源码树
# mergemaster 更新文件
# reboot


以上完成了!升级工作!
#uname -a
  • mergemaster -p的说明
mergemaster -p的作用是建立一个临时的根环境,把新的配置文件映射到这个环境当中,然后和系统的配置文件进行比较和处理,目的是保证系统配置文件的更新,这一点很重要!在执行"mergemaster -p"的过程中,主要是进行以下处理:
检测系统是否存在临时的根环境,如果存在,让用户选择是利用现有的还是删除它,然后新建!
*** The directory specified for the temporary root environment,
/var/tmp/temproot, exists. This can be a security risk if untrusted
users have access to the system.
Use 'd' to delete the old /var/tmp/temproot and continue 删除旧的/var/tmp/temproot
Use 't' to select a new temporary root directory 为temproot选择新的目录
Use 'e' to exit mergemaster 退出mergemaster
Default is to use /var/tmp/temproot as is
How should I deal with this? [Use the existing /var/tmp/temproot]
一般的处理是选 "d" ,删除原有的目录,系统开始重新建立这个临时的根环境。
  • mergemaster的说明
重新编译整个系统不会使用新的或改过的配置文件更新某些目录 (尤其像 /etc、/var 和 /usr)
更新这些文件最简单的方式就是使用 mergemaster(8),手工去做也是可以的,只要您愿意。不管您选择哪一种,一定记得备份 /etc 以防出错。
mergemaster操作中可能会遇到以下操作提示:
Use 'd' to delete the temporary 删除文件,不更新相应的系统配置文件
Use 'i' to install the temporary 安装文件,使用新的配置文件覆盖旧文件
Use 'm' to merge the temporary and installed versions 对旧的配置文件进行合并处理,并安装
Use 'v' to view the diff results again 察看新文件与旧文件的差异

=============================================================================

安装cvsup

cd /usr/ports/net/cvsup
make install

reboot

cp /usr/share/examples/cvsup/standard-supfile /usr

cd /usr

vi stand-supfile

*default host= 这里改成 cvsup.cn.freebsd.org
*default release=cvs tag=RELENG_这里改成版本 如 *default release=cvs tag=RELENG_4_9

保存!运行cvsup -g -L 2 standard-supfile

开始下载最新代码,等下载结束

cd /usr/src
make buildworld
make installworld

完成后,重新编译内核

cd /usr/src
make clean cleandir
删掉垃圾

mergemaster -cv
置换/etc底下的设定档

最后会出现
Do you wish to delete what is left of /var/tmp/tmproot?
选择yes 将保留下来那些没有动到的档案删除

cap_mkdb /etc/logoin.conf

重建 login.confdatabase

reboot

uname -a
阅读(714) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~