序章

FreeBSDは絶えず進化しています。 チームは新機能を追加し、セキュリティの脆弱性にパッチを適用しています。 サーバーのオペレーティングシステムを最新の状態に保つことで、セキュリティと互換性が向上します。FreeBSDには、これを簡単にするためのfreebsd-updateツールが含まれています。 このチュートリアルでは、FreeBSD10.2-RELEASEを実行している既存のFreeBSDサーバーを10.3.RELEASE-p4にアップグレードします。

警告:オペレーティングシステムのメジャーリリース間のほとんどすべてのアップグレードと同様に、このプロセスには、障害、データ損失、またはソフトウェア構成の破損という固有のリスクが伴います。 包括的なバックアップと広範なテストを強くお勧めします。

これらの問題を回避するために、可能であれば、インプレースでアップグレードするのではなく、新しいFreeBSDサーバーに移行することをお勧めします。 アップグレード時にソフトウェア構成の違いを確認する必要がある場合もありますが、コアシステムの方が安定性が高い可能性があります。 新しいLinuxサーバーに移行する方法に関するシリーズを確認できます。これは、新しいFreeBSDサーバーに移行するときにもほとんど適用されます。

前提条件

このチュートリアルに従うには、次のものが必要です。

  • FreeBSD10.2を実行しているサーバー。
  • sudoでコマンドを実行するように構成されたユーザーアカウント。 FreeBSDドロップレットを作成するときに自動的に作成されるデフォルトのfreebsdアカウントを使用します。 FreeBSD Dropletへのログインとその基本的な管理の詳細については、 Get Getting Started withFreeBSDチュートリアルシリーズをご覧ください。

ステップ1—パッチの取得と適用

オペレーティングシステムをアップグレードするには、最初に宛先リリースのパッケージとパッチをフェッチする必要があります。 freebsdアカウントでサーバーにログインします。

  1. ssh [email protected]your_server_ip

次に、freebsd-upgradeコマンドを使用して、システムアップグレードに関する情報を収集し、何を変更する必要があるかを判断します。 次のコマンドを実行します。

  1. sudo freebsd-update upgrade -r 10.3-RELEASE

-rスイッチを使用して、アップグレードするバージョン(10.3-RELEASE)を指定します。 しばらくすると、次の出力が表示されます。

Output
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にアップグレードするためのすべての手順をガイドしていることに注意してください。 一部のコンポーネントを変更またはカスタマイズした場合は、続行する前にバックアップを作成し、このチュートリアルで説明されているすべての手順を自己責任で受け入れてください。

続行することに同意すると、プロセスは更新とパッチを適用します。 次の出力が表示されます。

Output
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は2つの警告メッセージを表示し、2つの異なる構成ファイルでいくつかのマイナーな競合を手動で解決する必要があります。 1つは/etc/rc.subrで、もう1つは/etc/ssh/sshd_configです。

表示される最初の警告は次のとおりです。

output
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

上記の赤で強調表示されている現在のバージョンに関連する行を削除して、このセクションを変更します。 現在FreeBSD10.2を実行していますが、このファイルは10.1を「現在」として参照しています。 これらの行を削除して、セクションが次の例のようになるようにします。

/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 $

警告: DigitalOceanは、FreeBSDドロップレットのカスタム構成とデータを/etc/rc.digitalocean.d/ディレクトリーの下に保持し、/etc/rc.subrファイルで参照されます。 DigitalOceanに関連するファイルまたは構成を変更または削除しないでください。/etc/rc.digitalocean.d/の下のカスタム構成とデータは、Dropletを良好な状態で実行し、DigitalOceanのAPIと統合するためのものです。 。

変更をファイルに保存して、エディターを終了します。

テキストエディタを閉じるとすぐに、変更したファイルが正常にマージされたことを報告する行が表示されます。 次に、/etc/ssh/sshd_config構成ファイルに注意が必要であることを示す2番目の警告が表示されます。

Output
/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を押して、リストを1ページずつ下にスクロールします。 または、リストを確認したくない場合は、qと入力して終了します。 心配しないで; qを押しても、アップグレードプロセスは中止されません。

リストは次のようになります。

Output
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—FreeBSD10.3をインストールする

更新がダウンロードされ、重要なファイルが正常にマージまたは構成されたため、ダウンロードしたアップグレードをインストールするには、次のコマンドを使用します。

  1. sudo /usr/sbin/freebsd-update install

表示される出力は次のとおりです。

Output
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.

インストールにより、再起動を実行するように求められるため、次のコマンドを実行してマシンを再起動します。

  1. sudo reboot

SSHセッションから切断され、再起動には約1分かかります。 マシンがオンラインに戻ったら、再度ログインして次のステップに進みます。

注:ブートプロセス中にのみロードされる新しい10.3-RELEASE-p4カーネルとそのパッチが適用されたバイナリファイルをロードするには、サーバーを再起動する必要があります。 再起動せずに次の手順に進まないでください。

ステップ4—インストールプロセスの完了

サーバーのバージョンをチェックして、アップグレードプロセスが機能し、新しいカーネルがロードされていることを確認しましょう。 まず、サーバーに再度ログインします。

  1. ssh [email protected]your_server_ip

ログインしたら、次のコマンドを実行します。

  1. uname -a

アップグレードが機能したことを示す次の出力が表示されます。

Output
FreeBSD YOUR_HOSTNAME 10.3-RELEASE-p4 FreeBSD 10.3-RELEASE-p4 #0: Sat May 28 12:23:44 UTC 2016 [email protected]:/usr/obj/usr/src/sys/GENERIC amd64

しかし、アップグレードはまだ完了していません。 リリースの作成後に発生した可能性のある最終更新をインストールする必要があるため、freebsd-updateをもう一度実行します。

  1. sudo /usr/sbin/freebsd-update install

次の出力が表示されます。

Output
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.

最後にある2つの警告は無視しても安全です。 両方のファイルは、このプロセスによって作成または更新されます。

FreeBSDをアップグレードするときは、特にメジャーリリースのアップグレードを行う場合は、サードパーティがインストールしたすべてのパッケージもアップグレードする必要があります。 これを行うには、次のコマンドを実行します。

  1. sudo pkg upgrade

出力は次のようになります。

Output
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を押して続行すると、次の出力が表示されます。

Output
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コマンドを実行します。

  1. rehash

これで、アップグレードプロセスは完了です。 しかし、何かがうまくいかなかった場合はどうなりますか?

手順5—失敗したインストールのロールバック(オプション)

このアップグレードプロセス全体はスムーズに進むはずですが、アップグレード中に問題が発生した場合は、次のコマンドを使用して、最近インストールしたパッケージをロールバックできます。

  1. sudo freebsd-update rollback

これにより、ロールバックプロセスが開始され、元の場所に戻ります。 プロセスを開始する前に作成した最新のバックアップを復元することもできます。

結論

オペレーティングシステムを新しいリリースにアップグレードし、セキュリティパッチをタイムリーに適用することは、継続的なシステム管理の重要な側面です。 freebsd-updateコマンドを使用すると、これらの両方のタスクを簡単に実行できます。 プロセスに慣れたら、将来のアップグレードを自分で実行できるようになります。

FreeBSDをアップグレードする方法の詳細については、基本的なFreeBSDメンテナンスの概要を読むか、FreeBSDハンドブックの対応する章を確認してください。