如何从10.2版本升级FreeBSD的10.3

保持你的FreeBSD服务器上更新是系统管理的重要组成部分。本指南将引导您完成整个升级过程。

介绍

FreeBSD不断发展; 该团队正在添加新功能和修补安全漏洞。 保持你的服务器操作系统是最新的确保更好的安全性和兼容性,和FreeBSD包括freebsd-update工具来使这个容易。 在本教程中,您将将运行FreeBSD 10.2-RELEASE的现有FreeBSD服务器升级到10.3.RELEASE-p4。

警告:在您开始这个过程中,执行您的服务器的完整备份。 DigitalOcean提供快照和备份,您可以依靠它来防止出现问题。 请在开始之前考虑使用其中一种方法来保存所有数据。 您可以了解所有关于快照本教程

先决条件

要遵循本教程,您需要:

  • 运行FreeBSD 10.2的服务器。
  • 用户帐户被配置为与运行命令sudo 我们将使用当你创建一个FreeBSD的Droplet将被自动创建默认的FreeBSD帐户。 要了解更多关于登录到您的FreeBSDDroplet和基础管理,检查出入门FreeBSD的系列教程。

第1步 - 获取和应用补丁

为了升级操作系统,我们首先需要获取目标版本的软件包和补丁。 登录到具有freebsd的帐户登录服务器。

ssh freebsd@your_server_ip

然后,使用freebsd-upgrade命令收集有关系统升级信息,并确定哪些需要改变。 运行以下命令:

sudo freebsd-update upgrade -r 10.3-RELEASE

我们使用-r开关指定我们想要升级到版本,这是10.3-RELEASE 很短时间后,您将看到以下输出:

src component not installed, skipped
Looking up update.FreeBSD.org mirrors... 4 mirrors found.
Fetching public key from update6.freebsd.org... done.
Fetching metadata signature for 10.2-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Fetching 2 metadata files... done.
Inspecting system... 

The following components of FreeBSD seem to be installed:
kernel/generic world/base world/doc world/games world/lib32

The following components of FreeBSD do not seem to be installed:

Does this look reasonable (y/n)? y

这给你一个机会来审查任何潜在的问题。 类型y并按ENTER继续。

注:请记住,本教程采用的是新鲜的FreeBSD服务器10.2指导您完成所有步骤FreeBSD基本系统升级到10.3版-RELEASE-P4。 如果您已修改或自定义了一些组件,请在继续之前创建备份,并接受本教程中描述的所有过程,风险由您自己承担。

一旦您同意继续,该过程将应用更新和修补程序。 您将看到以下输出:

Fetching metadata signature for 10.3-RELEASE from update6.freebsd.org... done.
Fetching metadata index... done.
Fetching 1 metadata patches. done.
Applying metadata patches... done.
Fetching 1 metadata files... done.
Inspecting system... 
Fetching files from 10.2-RELEASE for merging... done.
Preparing to download files... 
Fetching 10722 patches.....10....20....30....40....50....60....70....80....90
....100....110....120....130....140....150....160....170....180....190....200

    **. . .**

....10650....10660....10670....10680....10690....10700....10710....10720. done.
Applying patches... done.
Fetching 152 files... 
Attempting to automatically merge changes in files... done.

但是,该过程不能自动修补一切。 我们需要手动干预。

第2步 - 解决冲突

应用补丁的操作系统后, freebsd-update ,就会显示两次警告信息,您将需要手动解决在两个不同的配置文件中一些小冲突。 一个是/etc/rc.subr ,另一种是/etc/ssh/sshd_config

您看到的第一个警告如下:

The following file could not be merged automatically: `/etc/rc.subr`
Press Enter to edit this file in vi and resolve the conflicts
manually...

当您按下Enter ,在/etc/rc.subr文件中打开vi文本编辑器,你会看到下面的文字:

/etc/rc.subr文件有冲突要手动解决
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $
<<<<<<< current version
# $FreeBSD: releng/10.1/etc/rc.subr 273188 2014-10-16 22:00:24Z hrs $
=======
# $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $
>>>>>>> 10.3-RELEASE

通过删除与当前版本相关的行来修改此部分,这些行在上面用红色突出显示。 即使我们当前运行的是FreeBSD 10.2,该文件将引用10.1为“current”。删除这些行,使该部分看起来像下面的示例:

/etc/rc.subr准备好继续
# $NetBSD: rc.subr,v 1.67 2006/10/07 11:25:15 elad Exp $
# $FreeBSD: releng/10.3/etc/rc.subr 292450 2015-12-18 19:58:34Z jilles $

警告:Dig​​italOcean保持FreeBSD的Droplet的自定义配置和数据下/etc/rc.digitalocean.d/目录,它是在引用/etc/rc.subr的文件,请不要更改或删除相关的文件或配置DigitalOcean,下的自定义配置和数据/etc/rc.digitalocean.d/是什么让你Droplet起来,在一个良好的状态运行,并与DigitalOcean的API集成。

将更改保存到文件并退出编辑器。

一旦关闭文本编辑器,您将看到一行报告您刚刚更改的文件的成功合并。 然后你就会看到它说,第二个警告/etc/ssh/sshd_config的配置文件需要您注意:

/var/db/freebsd-update/merge/new//etc/rc.subr: 2087 lines, 47888 characters.

The following file could not be merged automatically: `/etc/ssh/sshd_config`
Press Enter to edit this file in vi and resolve the conflicts
manually...

和以前一样,当你按下ENTER ,你将与你就必须修改文本文件中提出的。 您需要更改的片段将类似于您编辑的第一个文件。

/ etc / ssh / sshd_config文件用冲突来手动解决
<<<<<<< current version
#       $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
#       $FreeBSD: releng/10.1/crypto/openssh/sshd_config 264692 2014-04-20 12:46:18Z des $
=======
#       $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $
#       $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $
>>>>>>> 10.3-RELEASE

再次,通过删除与当前版本相关的行来修改此部分,直到文件部分如下所示:

/ etc / ssh / sshd_config,准备继续
#       $OpenBSD: sshd_config,v 1.98 2016/02/17 05:29:04 djm Exp $
#       $FreeBSD: releng/10.3/crypto/openssh/sshd_config 296853 2016-03-14 13:05:13Z des $

将更改保存到文件并关闭编辑器。

一旦编辑器关闭时, freebsd-update过程中会显示您更改的每个文件,并询问是否变化看起来合理。 y两个问题继续安装。

一旦您同意更改,您将看到将更新的二进制文件和配置文件的列表。 这个列表很长; SPACE在一次向下滚动列表的一页。 或者,如果你不想查看列表,请键入q退出。 不要担心; 迫切q不会中止升级过程。

列表如下所示:

The following files will be added as part of updating to 10.3-RELEASE-p5:
/boot/kernel/ismt.ko
/boot/kernel/ismt.ko.symbols
/boot/kernel/linux64.ko
/boot/kernel/linux64.ko.symbols
/boot/kernel/linux_common.ko
/boot/kernel/linux_common.ko.symbols
/boot/kernel/mlx5.ko

    . . .

The following files will be updated as part of updating to 10.3-RELEASE-p5:
/.cshrc
/.profile
/COPYRIGHT
/bin/[
/bin/cat
/bin/chflags
/bin/chio

    . . .

查看完列表后,您将返回到终端提示。 您已准备好执行安装。

第3步 - 安装FreeBSD 10.3

更新已下载,必需文件已成功合并或配置,因此要安装下载的升级,请使用以下命令:

sudo /usr/sbin/freebsd-update install

这里是您将看到的输出:

src component not installed, skipped
Installing updates...
Kernel updates have been installed.  Please reboot and run
"/usr/sbin/freebsd-update install" again to finish installing updates.

安装提示您执行重新引导,因此请执行此命令重新启动计算机:

sudo reboot

您将断开与SSH会话的连接,重新启动将需要大约一分钟。 一旦您的机器恢复联机,请重新登录并继续下一步。

注意:必须重新启动服务器,以加载新的10.3-RELEASE-P4内核及其修补的二进制文件,这些文件只有在启动过程中加载。 不要继续进行下一步骤,而不重新启动。

第4步 - 完成安装过程

让我们检查我们的服务器的版本,以确保升级过程工作,并加载新的内核。 首先,登录到您的服务器:

ssh freebsd@your_server_ip

登录后,运行以下命令:

uname -a

并且您将看到以下输出,指示升级工作:

FreeBSD YOUR_HOSTNAME 10.3-RELEASE-p4 FreeBSD 10.3-RELEASE-p4 #0: Sat May 28 12:23:44 UTC 2016     root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC  amd64

但是我们还没有完成升级。 我们需要安装自发布以来已创造了可能发生的任何最终更新,因此运行freebsd-update一次。

sudo /usr/sbin/freebsd-update install

您将看到以下输出:

src component not installed, skipped
Installing updates...
Installing updates...
install: ///var/db/etcupdate/current/etc/mtree/BSD.debug.dist: No such file or directory
install: ///var/db/etcupdate/current/etc/periodic/daily/480.leapfile-ntpd: No such file or directory
 done.

忽略末尾的两个警告是安全的。 这两个文件将由此过程创建或更新。

当您升级FreeBSD时,您还应升级所有第三方安装的软件包,特别是如果您正在进行主要版本升级。 为此,请运行以下命令:

sudo pkg upgrade

输出将如下所示:

Updating FreeBSD repository catalogue...
FreeBSD repository is up-to-date.
All repositories are up-to-date.

    . . .

Processing entries: 100%
FreeBSD repository update completed. 25089 packages processed.
New version of pkg detected; it needs to be installed first.
The following 1 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        pkg: 1.5.6 -> 1.7.2

The process will require 242 KiB more space.
2 MiB to be downloaded.

Proceed with this action? [y/N]: y

键入y并按ENTER继续,你会看到下面的输出:

Fetching pkg-1.7.2.txz: 100%    2 MiB   1.3MB/s    00:02    
Checking integrity... done (0 conflicting)
[1/1] Upgrading pkg from 1.5.6 to 1.7.2...
[1/1] Extracting pkg-1.7.2: 100%
Updating FreeBSD repository catalogue...
Repo "FreeBSD" upgrade schema 2011 to 2012: Add depends formula field
Repo "FreeBSD" upgrade schema 2012 to 2013: Add vital field
FreeBSD repository is up-to-date.
All repositories are up-to-date.
Checking for upgrades (24 candidates): 100%
Processing candidates (24 candidates): 100%
The following 24 package(s) will be affected (of 0 checked):

Installed packages to be UPGRADED:
        xproto: 7.0.27 -> 7.0.28
        sudo: 1.8.13 -> 1.8.16_1
        rsync: 3.1.1_3 -> 3.1.2_1
        python27: 2.7.9_1 -> 2.7.11_2
        py27-setuptools27: 17.0 -> 20.0
        py27-pip: 7.0.3 -> 8.0.2
        perl5: 5.20.2_5 -> 5.20.3_12
        pcre: 8.37_4 -> 8.38_1
        libxml2: 2.9.2_3 -> 2.9.3
        libxcb: 1.11_1 -> 1.11.1
        libnet: 1.1.6_3,1 -> 1.1.6_4,1
        libiconv: 1.14_8 -> 1.14_9
        libX11: 1.6.2_3,1 -> 1.6.3,1
        kbproto: 1.0.6 -> 1.0.7
        indexinfo: 0.2.3 -> 0.2.4
        gobject-introspection: 1.42.0 -> 1.46.0
        glib: 2.42.2 -> 2.46.2
        gettext-runtime: 0.19.4 -> 0.19.7
        expat: 2.1.0_3 -> 2.1.1_1
        dbus: 1.8.16 -> 1.8.20
        curl: 7.43.0_2 -> 7.48.0_1
        ca_root_nss: 3.19.3 -> 3.22.2
        avahi-app: 0.6.31_3 -> 0.6.31_5

Installed packages to be REINSTALLED:
        dbus-glib-0.104 (option added: DOCS)

The process will require 5 MiB more space.
39 MiB to be downloaded.

Proceed with this action? [y/N]: y

再次,类型y ,随后ENTER继续。

该软件包将升级,但要确保你的用户可以访问到最新版本,运行rehash命令:

rehash

这样,升级过程完成。 但是如果出了问题怎么办?

第5步 - 回滚失败的安装(可选)

此整个升级过程应该顺利进行,但如果在升级过程中出现问题,您可以使用以下命令回滚最近安装的软件包:

sudo freebsd-update rollback

这将启动回滚过程,让你回到你在哪里。 您还可以还原在开始该过程之前进行的最近的备份。

结论

将操作系统升级到较新版本并及时应用安全补丁是正在进行的系统管理的重要方面。 freebsd-update命令使这两方面的任务很容易做到。 一旦您熟悉该过程,您就可以自己执行未来的升级。

要了解更多有关如何升级FreeBSD中,你可以阅读介绍基本FreeBSD的维护 ,或者检查在相应的章节FreeBSD使用手册