3.0版から 3.1版へアップグレードする

ここでは OpenBSD を 3.0版から 3.1版へアップグレードする手順を紹介します。 基本的には、同じ版の中で修正パッチを適用する手順と同じですが、 機能の追加/変更/削除もあるので、その対応も必要になります。 なお、これはアップグレードの手順の一例にすぎません。 環境や設定が異なれば、この手順のままではうまくいかない可能性もあります。

参考: OpenBSD FAQ: Upgrading OpenBSD (日本語訳)

ソースを更新する

  1. ソースの更新に、Anonymous CVS を使うため、インターネットへの接続できる環境を整えます。
  2. /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
    
  3. 必要であれば、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
    
  4. 必要であれば、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
    

コンパイル前の準備を行う

  1. mtree コマンドにオプションが追加されたので、 事前にコンパイルとインストールを行います。
    # cd /usr/src/usr.sbin/mtree
    # make cleandir && make obj && make depend && make
    # make install
    
  2. 必要とされるディレクトリを全て生成します。
    # cd /usr/src/etc
    # make DESTDIR=/ distrib-dirs
    

カーネルをコンパイルする

  1. カーネルをカスタマイズしていた場合には、 カーネルオプションの内容が以前と変わっている可能性があるので、 新旧の GENERIC を比較するなどして違いを調べ、 必要に応じて、カーネル定義ファイルを変更します。
  2. カーネルをコンパイルします。
    カスタマイズしたカーネルのコンパイルは、以下の 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
    
  3. 新しいカーネルでは、 古い環境でコンパイルした Packet Filter 制御系のコマンドがエラーになります。 そのため、Packet Filter が設定通りに動作しません。 Packet Filter を使用していた場合には、 セキュリティ上の問題があるので、ネットワークとの接続を切り離しておきます。
  4. カーネルを置き換え、リブートします。
    # chmod -x bsd
    # cp bsd /bsd31
    # mv /bsd /bsd.old && ln /bsd31 /bsd
    # reboot
    

OS の他の部分をコンパイルする

  1. 新たに導入されたリグレッションテスト用のフレームワークをインストールする。
    # cd /usr/src/share/mk
    # make install
    
  2. OS を全コンパイルします。
    # cd /usr/src
    # rm -rf /usr/obj/*
    # make obj && make build
    
    環境設定によっては、make 時に share/zoneinfo/Makefile でエラーが発生するかもしれません。 その場合は、share/zoneinfo/Makefile の REDO の設定について確認し、 環境に合わせた適切な設定をしてから再実行すれば大丈夫です。

設定ファイル等を更新する

  1. ssh 関連の設定ファイルの置き場所が変わったので、移動します。
    # cd /etc
    # mv ssh*_* ssh/
    
    なお、/etc/ssh/sshd_config, /etc/rc, /etc/changelist に設定ファイルを絶対パスで指定している部分があるので、 次項の作業の中で新しいパスに変更する必要があります。
  2. /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
    
  3. /dev 配下のファイルの更新も必要です。
    当方では、以下の手順によりディレクトリごとファイルを生成し直しました。
    # mkdir /dev.new
    # cd /dev.new
    # cp -p /tmp/newroot/dev/MAKEDEV* .
    # ./MAKEDEV all
    # cd ..
    # mv dev dev.old && mv dev.new dev
    
  4. reboot します。 新しい /etc/* ファイルの設定に基づき起動するので、その動作を確認します。 パケットフィルタの動作状況は、pfctl -s info などにより確認できます。

その他の更新

  1. XFree86 も新くなっている(4.2.0)ので、 使用しているのなら、コンパイル、インストールします。
  2. ports で提供されているプログラムも、新くなっているものがあるので、 必要に応じて、インストールし直します。