序章

Note: As of July 1, 2022, DigitalOcean no longer supports the creation of new FreeBSD Droplets through the Control Panel or API. However, you can still spin up FreeBSD Droplets using a custom image. Learn how to import a custom image to DigitalOcean by following our product documentation.

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

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

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

前提条件

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

  • FreeBSD10.2を実行しているサーバー。
  • コマンドを実行するように構成されたユーザーアカウント sudo. For the purposes of this tutorial, we will use the user freebsd. To learn more about FreeBSD servers and its basic management, check out the Getting Started with FreeBSD tutorial series.

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

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

  1. ssh freebsd@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 $

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

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

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 freebsd@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

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

結論

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

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