××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
OpenBSD
版权所有:www.openbsd.org
翻译:Acheng from www.bsdplus.org
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
注意: OpenBSD升级只支持从一个发行版到紧邻的下一个发行版,请勿进行跳跃式升级。
强烈建议升级前通读这篇指南并完全理解它。如果需要升级的机器是至关重要或者是不在本地,推荐你在一个完全一样的且位于本地的系统上先进行测试,确保升级过程无误,然后再进行实际的升级。
升级是一种将系统带至最新版本的方便的方式。但是,升级的结果并不是要完全和一个全新安装的OpenBSD4.1一模一样。特别是一些旧的库文件在升级过程中不会被删除,因为一些旧的应用程序不会在此过程中升级,而它们仍然需要这些库文件。如果你确实想要删除这些旧文件,那么全新安装可能是最佳的选择。
内容列表:
升级前
检查一下你是否对内核做过任何改改。比如,你可能曾经用config命令更改过网络设备以使用一个非默认的设置。将所有的更改记录下来,以便在新的4.1版的内核中重做这些更改。
rc.conf:和前一版本不同,新版的升级过程假定用户不会对/etc/rc.conf文件作任何修改。如果你曾经改过,将这些更改合并到/etc/rc.conf.local文件中。如果/etc/rc.conf.local文件不存在,就将/etc/rc.conf文件拷贝并重命名为/etc/rc.conf.local,并记得 将脚本的最后一行删掉。如果已经存在,将/etc/rc.conf文件的内容添加到/etc/rc.conf.local文件的前面并 将最后一行删除,然后再继续下面的过程。
ARM用户(armish,zarurs)特别注意:如果没有使用标准安装内核并且更改过ABI,升级过程将会略有不同。安装内核后以及安装用户环境(userland)前请勿重启系统.
升级过程
安装内核方式升级
如果你可以访问到系统的控制台,最容易也是最安全的方式就是以安装媒体或bsd.rd重启系统,然后跟随升级步骤并完成“最后步骤”中的步骤就可以了。这个过程和安装过程非常相似。
在amd64和i386上,一个方便的从安装内核上启动的方式就是将4.1版的bsd.rd拷贝至启动盘的根分区,当系统启动至出现boot> 提示符时键入“boot bsd.rd”命令即可。
不安装内核升级
不推荐使用此方式。如非万不得已,请使用安装内核方式安装。
有时候,我们需要在无法使用标准的安装内核方式来升级一台机器。常见的例子就是当机器不在本地你无法访问系统的控制台时。此时的升级请仔细遵从下面的步骤:
最后步骤:
1. 更新/etc
无论是用正规的安装内核方式进行升级,还是使用非常规的方式,都有一些步骤都需要手工进行。
1.1 新的用户和组
4.1中引入一个RIP和一个host state守护进程,要使用新的进程,需要创建新的用户和组。以root身份运行下面的命令来添加相应的用户和组:
这两个命令会添加需要的_ripd和_hoststated用户和相应的组。你的环境或许可以让你拷贝/粘贴这两个命令。
1.2 系统行为变动
这不是一个4.0到4.1的完整的变动列表,只是一些会在升级过程中影响到大多数用户的重要的变动。如果你需要一个完整的变动列表,请参阅plus41.html和CVS更新日志。
1.3 /etc文件变更
请将etc41.tgz解压到一个临时目录:
下列文件可以原封不动地拷贝至/etc目录下:
注意,你可以在本地修改这些文件,但需要在修改后进行手工合并。如果你不是使用默认的sendmial配置的话,需要特别注意mail/*。
下面是拷贝/粘贴这些文件的所需的命令,假定你将etc41.tgz解压到上面推荐的位置:
如果你在以前版本中没有对下列文件做过更改的话,也可以直接拷贝,否则请将更改手工合并:
对这些文件的变更存放在这个补丁文件中。你可以试着以root用户运行下面的命令来使用此文件:
这个命令将会测试这些变更和你的系统的匹配情况;如果你想真正的应用这些变更,请去掉“-C”参数。注意,如果你曾经自定义过这些文件,或者这些文件没有及时更新,或者你是从3.9的某个snapshot进行升级,这些变更可能不会完全地应用到你当前的系统上。在这样的情况下,你需要手工应用这些变更。如果你无法轻松访问某台机器的控制台,请在应用前先进行测试。
下面三个文件的有些变更,你应该查看一下,但是他们不大可能需要直接拷贝或合并(比如,如果你在使用pf.conf,看一下其中建议的策略变更,然后决定它们是否使用于的你的用途)。
最后,使用newaliases更新aliases数据库,用mtree创建新的目录:
2. 检查内核
注意:大部分用户可以跳过这一过程。
如果你是按照指示进行不安装内核方式的升级,你已经完成。但是如果你用的是安装内核的方式并且你曾经对4.0版的内核做过修改,很可能你需要更改4.1版的内核。这可能就和使用config命令调整某个设备一样简单,或者这意味着需要一次重新编译,如果你的调整没有包含在GENERIC的内核里。请在考虑重新编译内核前参阅FAQ5-Building the system from source。
3. 升级软件包
如果你在系统上安装了任何软件包(package),你应该在完成系统升级过程后对他们进行升级。但是请注意,很多软件包需要在升
级前或升级后进行进一步的配置。请具体信息请参考这些软件的升级指南。
已知下列软件包会在升级过程中出现严重问题,这可能会影响到很多用户。某个软件包不在这个列表中并不意味着它的升级过程不会出现问题。你需要检查测试你自己使用的软件。
此软件包支持使用pkg_add -u选项直接进行升级。比如,要升级你所有的软件包,首先将PKG_PATH变量指向你CD上或者是最近的FTP
镜像上的软件包目录,然后使用下面的命令:
这里-u表明升级模式,-i指定互动模式,以便在pkg_add遇到有歧义时提示你输入选择。更多信息,请参考pkg_add的用户手册和FAQ的软件包管理部分。
www.OpenBSD.org
OpenBSD
版权所有:www.openbsd.org
翻译:Acheng from www.bsdplus.org
××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××××
注意: OpenBSD升级只支持从一个发行版到紧邻的下一个发行版,请勿进行跳跃式升级。
强烈建议升级前通读这篇指南并完全理解它。如果需要升级的机器是至关重要或者是不在本地,推荐你在一个完全一样的且位于本地的系统上先进行测试,确保升级过程无误,然后再进行实际的升级。
升级是一种将系统带至最新版本的方便的方式。但是,升级的结果并不是要完全和一个全新安装的OpenBSD4.1一模一样。特别是一些旧的库文件在升级过程中不会被删除,因为一些旧的应用程序不会在此过程中升级,而它们仍然需要这些库文件。如果你确实想要删除这些旧文件,那么全新安装可能是最佳的选择。
内容列表:
- 升级前
- 升级过程
- 最后步骤
升级前
检查一下你是否对内核做过任何改改。比如,你可能曾经用config命令更改过网络设备以使用一个非默认的设置。将所有的更改记录下来,以便在新的4.1版的内核中重做这些更改。
rc.conf:和前一版本不同,新版的升级过程假定用户不会对/etc/rc.conf文件作任何修改。如果你曾经改过,将这些更改合并到/etc/rc.conf.local文件中。如果/etc/rc.conf.local文件不存在,就将/etc/rc.conf文件拷贝并重命名为/etc/rc.conf.local,并记得 将脚本的最后一行删掉。如果已经存在,将/etc/rc.conf文件的内容添加到/etc/rc.conf.local文件的前面并 将最后一行删除,然后再继续下面的过程。
ARM用户(armish,zarurs)特别注意:如果没有使用标准安装内核并且更改过ABI,升级过程将会略有不同。安装内核后以及安装用户环境(userland)前请勿重启系统.
升级过程
安装内核方式升级
如果你可以访问到系统的控制台,最容易也是最安全的方式就是以安装媒体或bsd.rd重启系统,然后跟随升级步骤并完成“最后步骤”中的步骤就可以了。这个过程和安装过程非常相似。
在amd64和i386上,一个方便的从安装内核上启动的方式就是将4.1版的bsd.rd拷贝至启动盘的根分区,当系统启动至出现boot> 提示符时键入“boot bsd.rd”命令即可。
不安装内核升级
不推荐使用此方式。如非万不得已,请使用安装内核方式安装。
有时候,我们需要在无法使用标准的安装内核方式来升级一台机器。常见的例子就是当机器不在本地你无法访问系统的控制台时。此时的升级请仔细遵从下面的步骤:
- 将安装文件放在一个“好”地方。确保磁盘空间足够!
- 启动时将全部“不安全”应用程序停掉:升级期间的某个时间PF将会停止运行,但是你的应用程序将会正常启动和运行。因此任何依靠PF来提供安全保障的应用程序都应该在升级前停掉,而且在完成升级并验证PF的运行之前都不应重新启用。或许还有一些其他的应用程序你也希望在升级过程中禁用,把他们也停止。
- 检查内核:虽然大部分人可以跳过这一步,但你如果更改过4.0版的内核,你也需要更改4.1版内核。尤其是当你远程执行升级过程的时候,你更需要确保系统在重启的时候不会出现问题。如果内核的某个方面需要调整,最安全的方式就是在一个本地的4.1系统上进行这些调整。这可能就和使用config命令调整某个设备一样简单,或者需要一次重新编译,如果你的调整没有包含在GENERIC的内核里。请在考虑重新编译内核前参阅FAQ5-Building the system from source。
- 安装新内核
export RELEASEPATH=/usr/rel # 你保存文件的地方
cd ${RELEASEPATH}
rm /obsd ; ln /bsd /obsd && cp bsd /nbsd && mv /nbsd /bsd
cp bsd.rd bsd.mp /
注意其中拷贝原来内核文件的步骤:这样可以保证即使出现意外的断电或宕机的情况,升级过程中也总有一个可以启动的内核。
cd ${RELEASEPATH}
rm /obsd ; ln /bsd /obsd && cp bsd /nbsd && mv /nbsd /bsd
cp bsd.rd bsd.mp /
注意其中拷贝原来内核文件的步骤:这样可以保证即使出现意外的断电或宕机的情况,升级过程中也总有一个可以启动的内核。
- 安装新的/etc/firmware文件:由于一些上传的firmware文件可能已经被更新过,你需要更新/etc/firmware目录。这只会影响很少一些设备的用户,但所有的用户都可以使用这一步而不会引起任何危害。要从base41.tgz文件中提取firmware文件,请以root帐户运行下面的命令:
cd /
tar -C / -xzpf ${RELEASEPATH}/base41.tgz ./etc/firmware
tar -C / -xzpf ${RELEASEPATH}/base41.tgz ./etc/firmware
- 重启新内核(不适用于ARM用户):可能很多人都想跳过这一步,但是它应该现在就执行。通常,新内核会运行旧的用户环境(userland)应用程序(比如reboot),但是新的用户环境常常在旧内核上无法工作。
注意:ARM用户(armish/zaurus)应该跳过这一步。
- 安装新的用户环境应用程序。现在不要安装etc41.tgz和xetc41.tgz,因为这样将会覆盖你现在的配置文件!
export RELEASEPATH=/usr/rel
cd ${RELEASEPATH}
tar -C / -xzpf base41.tgz
tar -C / -xzpf comp41.tgz
tar -C / -xzpf game41.tgz
tar -C / -xzpf man41.tgz
tar -C / -xzpf misc41.tgz
tar -C / -xzpf xbase41.tgz
tar -C / -xzpf xfont41.tgz
tar -C / -xzpf xserv41.tgz
tar -C / -xzpf xshare41.tgz
注意:不是所有的文件集都需要安装,但你如果原来的内核安装过某一个文件集,那你现在肯定也需要安装他们。
注意:/etc目录下的文件将会在下面的步骤中单独处理,这也是为什么现在不要安装etc41.tgz和xetc41.tgz。
cd ${RELEASEPATH}
tar -C / -xzpf base41.tgz
tar -C / -xzpf comp41.tgz
tar -C / -xzpf game41.tgz
tar -C / -xzpf man41.tgz
tar -C / -xzpf misc41.tgz
tar -C / -xzpf xbase41.tgz
tar -C / -xzpf xfont41.tgz
tar -C / -xzpf xserv41.tgz
tar -C / -xzpf xshare41.tgz
注意:不是所有的文件集都需要安装,但你如果原来的内核安装过某一个文件集,那你现在肯定也需要安装他们。
注意:/etc目录下的文件将会在下面的步骤中单独处理,这也是为什么现在不要安装etc41.tgz和xetc41.tgz。
- 升级/dev。安装base41.tgz时就会将新的MAKEDEV文件拷贝到/dev下,你只需要做下面的操作即可:
cd /dev
./MAKEDEV all
./MAKEDEV all
- 按下面所述升级/etc
- 重启
在这个过程中,sendmai(8)会产生类似如下的错误信息:
Nov 1 12:47:05 puffy sm-mta[16733]: filesys_update failed: No such file or dire
ctory, fs=., avail=-1, blocksize=380204
你可以完全忽略这些信息,或者你可以在一开始就停掉sendmail服务。
Nov 1 12:47:05 puffy sm-mta[16733]: filesys_update failed: No such file or dire
ctory, fs=., avail=-1, blocksize=380204
你可以完全忽略这些信息,或者你可以在一开始就停掉sendmail服务。
最后步骤:
1. 更新/etc
无论是用正规的安装内核方式进行升级,还是使用非常规的方式,都有一些步骤都需要手工进行。
1.1 新的用户和组
4.1中引入一个RIP和一个host state守护进程,要使用新的进程,需要创建新的用户和组。以root身份运行下面的命令来添加相应的用户和组:
useradd -u88 -g=uid -c"RIP Daemon" -d/var/empty -s/sbin/nologin _ripd
useradd -u89 -g=uid -c"HostState Daemon" -d/var/empty -s/sbin/nologin _hoststated
useradd -u89 -g=uid -c"HostState Daemon" -d/var/empty -s/sbin/nologin _hoststated
这两个命令会添加需要的_ripd和_hoststated用户和相应的组。你的环境或许可以让你拷贝/粘贴这两个命令。
1.2 系统行为变动
这不是一个4.0到4.1的完整的变动列表,只是一些会在升级过程中影响到大多数用户的重要的变动。如果你需要一个完整的变动列表,请参阅plus41.html和CVS更新日志。
- pf.conf中隐含定义“flags S/SA keep state"
现在pf.conf中的pass规则默认是隐含flags S/SA keep state。pf也添加了新的no state和flags any选项来覆盖这些默认值。原有的规则集可以继续加载,但由于新的默认值限制性更强,他们的行为可能会稍有不同;含有无状态过滤(no state)的规则集或者要求在中间(intermediate)数据包上创建状态信息的规则集应该得到更新以显式地要求这些行为。
尤其要注意enc0接口,因为在过滤IPSec流量时流动状态(floating states)是个潜在的问题:状态需要绑定在接口上以避免未加密的流量在isakmpd进程退出后通过接口。因此,enc0接口上的所有规则集应该显式地加入keep state (if-bound)语句。
尤其要注意enc0接口,因为在过滤IPSec流量时流动状态(floating states)是个潜在的问题:状态需要绑定在接口上以避免未加密的流量在isakmpd进程退出后通过接口。因此,enc0接口上的所有规则集应该显式地加入keep state (if-bound)语句。
- FreeBSD和NetBSD DOS MBR分区不再用于存储disklables,disklable也不再查询这些分区
结果是,只有FreeBSD或者NetBSD DOS MBR分区的磁盘在spoofed disklable中不再拥有一个‘a'分区。这些磁盘上的dsiklable在第一扇区上存储和加载。这个行为可能会找到一个旧的有问题的disklable。要使用现有的disklable,使用fdisk(8)将分区类型更改为OpenBSD('A6')。
- amd64,i386,macppc和mvmeppc在没有找到OpenBSD分区时不再尝试从第一个NetBSD分区启动。
同样,使用fdisk(8)将分区类型更改为OpenBSD('A6')。
- 启用/禁用启动时进程统计的新方式
如需在启用启动时统计,你需要设置新的rc.conf变量"accounting=YES"。/var/account/acct文件的存在不再让此功能自动启用。
- spamd(8)默认运行在greylist模式
以前版本中greylist必须以 -g参数启用,新版中它是一个默认的运行时模式。-b参数(以前用于指定spamd在哪个IP上侦听)可以用来指定spamd只以blacklist-only模式运行;新的-l参数则用于指定spamd在哪个IP上侦听。
- spamd.conf现在存储于/etc/mail目录下
spamd.conf以前存储于/etc目录下,现在则移动至/etc/mail。将你的spamd.conf移动只/etc/mail以便spamd可以加载合适的配置信息。
- 内核感应器(sensors)sysctl MIB更改为分级结构
现在sysctl MIB不仅包含sensor设备的名称,还包含其类型和索引信息。以前当你运行“sysctl hw.sensors",你可能得到”hw.sensors.12=it0, Temp 1, 25.00 degC" ,现在则会得到"hw.sensors.it0.temp0=25.00 degC"。使用新的设备名称更新你的sensorsd.conf文件。
1.3 /etc文件变更
请将etc41.tgz解压到一个临时目录:
tar -C /tmp -xzpf ${RELEASEPATH}/etc41.tgz
下列文件可以原封不动地拷贝至/etc目录下:
etc/daily
etc/disktab
etc/hoststated.conf
etc/magic
etc/monthly
etc/netstart
etc/rc
etc/rc.conf
etc/ripd.conf
etc/sasyncd.conf
etc/security
etc/weekly
etc/mail/Makefile
etc/mail/localhost.cf
etc/mail/sendmail.cf
etc/mail/submit.cf
etc/mail/spamd.conf
etc/mtree/*
var/www/conf/bgplg.css
var/www/conf/bgplg.foot
var/www/conf/bgplg.head
var/www/htdocs/bgplg/*
etc/disktab
etc/hoststated.conf
etc/magic
etc/monthly
etc/netstart
etc/rc
etc/rc.conf
etc/ripd.conf
etc/sasyncd.conf
etc/security
etc/weekly
etc/mail/Makefile
etc/mail/localhost.cf
etc/mail/sendmail.cf
etc/mail/submit.cf
etc/mail/spamd.conf
etc/mtree/*
var/www/conf/bgplg.css
var/www/conf/bgplg.foot
var/www/conf/bgplg.head
var/www/htdocs/bgplg/*
注意,你可以在本地修改这些文件,但需要在修改后进行手工合并。如果你不是使用默认的sendmial配置的话,需要特别注意mail/*。
下面是拷贝/粘贴这些文件的所需的命令,假定你将etc41.tgz解压到上面推荐的位置:
cd /tmp/etc
cp daily disktab hoststated.conf magic monthly netstart rc rc.conf ripd.conf sasyncd.conf security weekly /etc
cp mtree/* /etc/mtree/
cp mail/Makefile mail/localhost.cf mail/submit.cf /etc/mail
cp mail/sendmail.cf /etc/mail # Careful on this one!!
cp mail/spamd.conf /etc/mail # OR... mv /etc/spamd.conf /etc/mail
cd /tmp/var/www
cp conf/bgplg.css conf/bgplg.foot conf/bgplg.head /var/www/conf
mkdir /var/www/htdocs/bgplg
cp htdocs/bgplg/* /var/www/htdocs/bgplg/
cp daily disktab hoststated.conf magic monthly netstart rc rc.conf ripd.conf sasyncd.conf security weekly /etc
cp mtree/* /etc/mtree/
cp mail/Makefile mail/localhost.cf mail/submit.cf /etc/mail
cp mail/sendmail.cf /etc/mail # Careful on this one!!
cp mail/spamd.conf /etc/mail # OR... mv /etc/spamd.conf /etc/mail
cd /tmp/var/www
cp conf/bgplg.css conf/bgplg.foot conf/bgplg.head /var/www/conf
mkdir /var/www/htdocs/bgplg
cp htdocs/bgplg/* /var/www/htdocs/bgplg/
如果你在以前版本中没有对下列文件做过更改的话,也可以直接拷贝,否则请将更改手工合并:
etc/changelist
etc/ftpusers
etc/login.conf
etc/newsyslog.conf
etc/services
etc/sysctl.conf
etc/mail/aliases
var/cron/tabs/root
etc/ftpusers
etc/login.conf
etc/newsyslog.conf
etc/services
etc/sysctl.conf
etc/mail/aliases
var/cron/tabs/root
对这些文件的变更存放在这个补丁文件中。你可以试着以root用户运行下面的命令来使用此文件:
cd /
patch -C -p0 < upgrade41.patch
patch -C -p0 < upgrade41.patch
这个命令将会测试这些变更和你的系统的匹配情况;如果你想真正的应用这些变更,请去掉“-C”参数。注意,如果你曾经自定义过这些文件,或者这些文件没有及时更新,或者你是从3.9的某个snapshot进行升级,这些变更可能不会完全地应用到你当前的系统上。在这样的情况下,你需要手工应用这些变更。如果你无法轻松访问某台机器的控制台,请在应用前先进行测试。
下面三个文件的有些变更,你应该查看一下,但是他们不大可能需要直接拷贝或合并(比如,如果你在使用pf.conf,看一下其中建议的策略变更,然后决定它们是否使用于的你的用途)。
etc/hostapd.conf
etc/pf.conf
etc/sensorsd.conf
etc/pf.conf
etc/sensorsd.conf
最后,使用newaliases更新aliases数据库,用mtree创建新的目录:
newaliases
mtree -qdef /etc/mtree/4.4BSD.dist -p / -u
mtree -qdef /etc/mtree/4.4BSD.dist -p / -u
2. 检查内核
注意:大部分用户可以跳过这一过程。
如果你是按照指示进行不安装内核方式的升级,你已经完成。但是如果你用的是安装内核的方式并且你曾经对4.0版的内核做过修改,很可能你需要更改4.1版的内核。这可能就和使用config命令调整某个设备一样简单,或者这意味着需要一次重新编译,如果你的调整没有包含在GENERIC的内核里。请在考虑重新编译内核前参阅FAQ5-Building the system from source。
3. 升级软件包
如果你在系统上安装了任何软件包(package),你应该在完成系统升级过程后对他们进行升级。但是请注意,很多软件包需要在升
级前或升级后进行进一步的配置。请具体信息请参考这些软件的升级指南。
已知下列软件包会在升级过程中出现严重问题,这可能会影响到很多用户。某个软件包不在这个列表中并不意味着它的升级过程不会出现问题。你需要检查测试你自己使用的软件。
- postgresql: 你必须在升级前对数据库做一个dump备份以便在升级后进行恢复。
此软件包支持使用pkg_add -u选项直接进行升级。比如,要升级你所有的软件包,首先将PKG_PATH变量指向你CD上或者是最近的FTP
镜像上的软件包目录,然后使用下面的命令:
# pkg_add -ui -F update -F updatedepends
这里-u表明升级模式,-i指定互动模式,以便在pkg_add遇到有歧义时提示你输入选择。更多信息,请参考pkg_add的用户手册和FAQ的软件包管理部分。
www.OpenBSD.org