FreeBSDをバージョン10.2から10.3にアップグレードする方法
序章
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アカウントでサーバーにログインします。
- ssh freebsd@your_server_ip
次に、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
これにより、潜在的な問題を確認する機会が得られます。 y
と入力し、ENTER
を押して続行します。
注:このチュートリアルでは、新しいFreeBSD 10.2サーバーを使用して、FreeBSDベースシステムをバージョン10.3-RELEASE-p4にアップグレードするためのすべての手順をガイドしていることに注意してください。 一部のコンポーネントを変更またはカスタマイズした場合は、続行する前にバックアップを作成し、このチュートリアルで説明されているすべての手順を自己責任で受け入れてください。
続行することに同意すると、プロセスは更新とパッチを適用します。 次の出力が表示されます。
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
を押すと、/etc/rc.subr
ファイルがvi
テキストエディタで開き、次のテキストが表示されます。
# $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を「現在」として参照しています。 これらの行を削除して、セクションが次の例のようになるようにします。
# $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
を押すと、変更する必要のあるテキストファイルが表示されます。 変更する必要のある部分は、最初に編集したファイルと同様になります。
<<<<<<< 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
もう一度、ファイルのセクションが次のようになるまで、現在のバージョンに関連する行を削除して、このセクションを変更します。
# $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
を押しても、アップグレードプロセスは中止されません。
リストは次のようになります。
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—FreeBSD10.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分かかります。 マシンがオンラインに戻ったら、再度ログインして次のステップに進みます。
注:ブートプロセス中にのみロードされる新しい10.3-RELEASE-p4カーネルとそのパッチが適用されたバイナリファイルをロードするには、サーバーを再起動する必要があります。 再起動せずに次の手順に進まないでください。
ステップ4—インストールプロセスの完了
サーバーのバージョンをチェックして、アップグレードプロセスが機能し、新しいカーネルがロードされていることを確認しましょう。 まず、サーバーに再度ログインします。
- ssh freebsd@your_server_ip
ログインしたら、次のコマンドを実行します。
- uname -a
アップグレードが機能したことを示す次の出力が表示されます。
OutputFreeBSD 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
をもう一度実行します。
- 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
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
もう一度、y
と入力し、ENTER
と入力して続行します。
パッケージはアップグレードされますが、ユーザーが最新バージョンにアクセスできるようにするには、rehash
コマンドを実行します。
- rehash
これで、アップグレードプロセスは完了です。 しかし、何かがうまくいかなかった場合はどうなりますか?
手順5—失敗したインストールのロールバック(オプション)
このアップグレードプロセス全体はスムーズに進むはずですが、アップグレード中に問題が発生した場合は、次のコマンドを使用して、最近インストールしたパッケージをロールバックできます。
- sudo freebsd-update rollback
これにより、ロールバックプロセスが開始され、元の場所に戻ります。 プロセスを開始する前に作成した最新のバックアップを復元することもできます。
結論
オペレーティングシステムを新しいリリースにアップグレードし、セキュリティパッチをタイムリーに適用することは、継続的なシステム管理の重要な側面です。 freebsd-update
コマンドを使用すると、これらの両方のタスクを簡単に実行できます。 プロセスに慣れたら、将来のアップグレードを自分で実行できるようになります。
FreeBSDをアップグレードする方法の詳細については、基本的なFreeBSDメンテナンスの概要を読むか、FreeBSDハンドブックの対応する章を確認してください。