3.0版から 3.1版へアップグレードする
ここでは OpenBSD を 3.0版から 3.1版へアップグレードする手順を紹介します。
基本的には、同じ版の中で修正パッチを適用する手順と同じですが、
機能の追加/変更/削除もあるので、その対応も必要になります。
なお、これはアップグレードの手順の一例にすぎません。
環境や設定が異なれば、この手順のままではうまくいかない可能性もあります。
参考:
OpenBSD FAQ: Upgrading OpenBSD
(日本語訳)
-
ソースの更新に、Anonymous CVS
を使うため、インターネットへの接続できる環境を整えます。
-
/usr/src 配下を更新するため、以下のようなスクリプトを実行します。
#!/bin/sh -e
CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs
CVS_RSH=/usr/bin/ssh
export CVSROOT CVS_RSH
cd /usr/src
cvs -d $CVSROOT -q up -rOPENBSD_3_1 -Pd
-
必要であれば、XFree86 を更新するため、以下のようなスクリプトを実行します。
#!/bin/sh -e
CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs
CVS_RSH=/usr/bin/ssh
export CVSROOT CVS_RSH
cd /usr/XF4
cvs -d $CVSROOT -q up -rOPENBSD_3_1 -Pd
-
必要であれば、ports を更新するため、以下のようなスクリプトを実行します。
#!/bin/sh -e
CVSROOT=anoncvs@anoncvs.jp.openbsd.org:/cvs
CVS_RSH=/usr/bin/ssh
export CVSROOT CVS_RSH
cd /usr/ports
cvs -d $CVSROOT -q up -rOPENBSD_3_1 -Pd
-
mtree コマンドにオプションが追加されたので、
事前にコンパイルとインストールを行います。
# cd /usr/src/usr.sbin/mtree
# make cleandir && make obj && make depend && make
# make install
-
必要とされるディレクトリを全て生成します。
# cd /usr/src/etc
# make DESTDIR=/ distrib-dirs
-
カーネルをカスタマイズしていた場合には、
カーネルオプションの内容が以前と変わっている可能性があるので、
新旧の GENERIC を比較するなどして違いを調べ、
必要に応じて、カーネル定義ファイルを変更します。
-
カーネルをコンパイルします。
カスタマイズしたカーネルのコンパイルは、以下の GENERIC の部分を差し替えて実行します。
なお、トラブル時に GENERIC 版も必要になるかもしれないので、
両方を作っておくのが良いでしょう。
# cd /usr/src/sys/arch/i386/conf
# /usr/sbin/config GENERIC
# cd /usr/src/sys/arch/i386/compile/GENERIC
# make clean && make depend && make
-
新しいカーネルでは、
古い環境でコンパイルした Packet Filter 制御系のコマンドがエラーになります。
そのため、Packet Filter が設定通りに動作しません。
Packet Filter を使用していた場合には、
セキュリティ上の問題があるので、ネットワークとの接続を切り離しておきます。
-
カーネルを置き換え、リブートします。
# chmod -x bsd
# cp bsd /bsd31
# mv /bsd /bsd.old && ln /bsd31 /bsd
# reboot
-
新たに導入されたリグレッションテスト用のフレームワークをインストールする。
# cd /usr/src/share/mk
# make install
-
OS を全コンパイルします。
# cd /usr/src
# rm -rf /usr/obj/*
# make obj && make build
環境設定によっては、make 時に share/zoneinfo/Makefile でエラーが発生するかもしれません。
その場合は、share/zoneinfo/Makefile の REDO の設定について確認し、
環境に合わせた適切な設定をしてから再実行すれば大丈夫です。
-
ssh 関連の設定ファイルの置き場所が変わったので、移動します。
# cd /etc
# mv ssh*_* ssh/
なお、/etc/ssh/sshd_config, /etc/rc, /etc/changelist
に設定ファイルを絶対パスで指定している部分があるので、
次項の作業の中で新しいパスに変更する必要があります。
-
/etc 配下の各ファイルに変更が必要です。
以下の手順で、ワーク領域に 3.1版のファイルをインストールし、
現在のファイルとそれとを比較し、必要であれば更新します。
また、不要になったファイルは削除します。
# mkdir /tmp/newroot
# cd /usr/src/etc
# make DESTDIR=/tmp/newroot distribution-etc-root-var
なお、当方の環境では以下のファイルを更新しました。
参考にしてください。
新ファイルを参考にして変更したもの:
/etc/inetd.conf
/etc/rc.conf
/etc/ssh/ssh_config
/etc/ssh/sshd_config
/etc/sysctl.conf
新ファイルで置き換えたもの:
/etc/afs/README
/etc/changelist
/etc/daily
/etc/kerberosV/krb5.conf.example
/etc/ksh.kshrc
/etc/login.conf
/etc/mail/*
/etc/mrouted.conf
/etc/mtree/*
/etc/netstart
/etc/protocols
/etc/rc
/etc/rpc
/etc/security
/etc/services
/etc/ssl/x509v3.cnf
-
/dev 配下のファイルの更新も必要です。
当方では、以下の手順によりディレクトリごとファイルを生成し直しました。
# mkdir /dev.new
# cd /dev.new
# cp -p /tmp/newroot/dev/MAKEDEV* .
# ./MAKEDEV all
# cd ..
# mv dev dev.old && mv dev.new dev
-
reboot します。
新しい /etc/* ファイルの設定に基づき起動するので、その動作を確認します。
パケットフィルタの動作状況は、pfctl -s info などにより確認できます。
-
XFree86 も新くなっている(4.2.0)ので、
使用しているのなら、コンパイル、インストールします。
-
ports で提供されているプログラムも、新くなっているものがあるので、
必要に応じて、インストールし直します。