FreeBSDをバージョン10.2から10.3にアップグレードする方法

前書き

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

前提条件

このチュートリアルを実行するには、次のものが必要です。

  • FreeBSD 10.2を実行しているサーバー。

  • `+ sudo +`でコマンドを実行するように設定されたユーザーアカウント。 FreeBSD Dropletの作成時に自動的に作成されるデフォルトの* freebsd *アカウントを使用します。 FreeBSD Dropletへのログインとその基本管理の詳細については、https://www.digitalocean.com/community/tutorial_series/getting-started-with-freebsd [Getting Started with FreeBSD]チュートリアルシリーズをご覧ください。

手順1-パッチの取得と適用

オペレーティングシステムをアップグレードするには、まず目的のリリースのパッケージとパッチを取得する必要があります。 * freebsd *アカウントでサーバーにログインします。

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

sudo freebsd-update upgrade -r 10.3-RELEASE

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

Outputsrc 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 」と入力し、「 ENTER +」を押して続行します。

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

OutputFetching 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」です。

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

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

「+ Enter 」を押すと、「 vi 」テキストエディタで「 / etc / rc.subr +」ファイルが開き、次のテキストが表示されます。

手動で解決するための競合のある/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 $

現在のバージョンに関連する行を削除して、このセクションを変更します。この行は、上記の赤で強調表示されています。 現在FreeBSD 10.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 $

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

テキストエディタを閉じるとすぐに、変更したファイルが正常にマージされたことを報告する行が表示されます。 次に、 `+ / 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ファイルで競合を手動で解決する

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

もう一度、ファイルのセクションが次のようになるまで、現在のバージョンに関連する行を削除して、このセクションを変更します。

/ 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 +」と答えて、インストールを続行します。

変更に同意すると、更新されるバイナリと設定ファイルのリストが表示されます。 このリストは非常に長いです。リストを一度に1ページ下にスクロールするには、「+ SPACE」を押します。 または、リストを確認したくない場合は、「+ q 」と入力して終了します。 心配しないでください。 「 q +」を押しても、アップグレードプロセスは中止されません。

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

OutputThe 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

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

Outputsrc 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セッションから切断され、再起動には約1分かかります。 マシンがオンラインに戻ったら、再度ログインして次の手順に進みます。

手順4-インストールプロセスの完了

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

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

uname -a

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

OutputFreeBSD  #0: Sat May 28 12:23:44 UTC 2016     [email protected]:/usr/obj/usr/src/sys/GENERIC  amd64

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

sudo /usr/sbin/freebsd-update install

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

Outputsrc 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をアップグレードするとき、特にメジャーリリースアップグレードを行う場合は特に、サードパーティのインストール済みパッケージもすべてアップグレードする必要があります。 それを行うには、次のコマンドを実行します。

sudo pkg upgrade

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

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

OutputFetching 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 」と入力し、続いて「 ENTER +」と入力して続行します。

パッケージはアップグレードされますが、ユーザーが最新バージョンにアクセスできるようにするには、 `+ rehash +`コマンドを実行します。

rehash

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

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

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

sudo freebsd-update rollback

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

結論

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

FreeBSDのアップグレード方法についてさらに学ぶには、https://www.digitalocean.com/community/tutorials/an-introduction-to-basic-freebsd-maintenance [FreeBSDの基本的なメンテナンスの紹介]を読むか、またはhttps://www.freebsd.org/doc/en/books/handbook/updating-upgrading.html[FreeBSD Handbook]の対応する章。