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

ここでは OS の版数を2.9版から 3.0版へアップグレードする手順を紹介します。 基本的には、同じ版の中で修正パッチを適用するのと同じですが、 機能の追加/変更/削除もあるので、その対応が必要になります。

なお、これはアップグレードの手順の一例にすぎません。 CD-ROM を使ったアップグレードも可能なはずですが、当方の環境では、 最初のインストールの直後に CD-ROM ドライブを外してしまったため、試していません。

参考: 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_0 -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_0 -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_0 -Pd
    

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

  1. 以下のユーザIDを追加します。
    smmsp:*:25:25::0:0:Sendmail Message Submission Program:/nonexistent:/sbin/nologin
    popa3d:*:26:26::0:0:POP3 server:/var/empty:/sbin/nologin
    proxy:*:71:71::0:0:Proxy Services:/nonexistent:/sbin/nologin
    
  2. 以下のグループIDを追加します。
    smmsp:*:25:
    popa3d:*:26:
    proxy:*:71:
    
  3. パケットフィルタを使用していた場合には、新しい定義ファイルを準備します。 定義ファイルが ipf.rules から pf.conf に変わりましたが、 一部を除いて書式は変わっていないようです。 コピーして確認/変更するのが良いでしょう。 新しい書式の説明は、 man pf.conf にあります。
  4. NAT を使用していた場合には、新しい定義ファイルを準備します。 定義ファイルが ipnat.rules から nat.conf に変わり、 書式もかなり違っています。 コピーして変更するのが良いでしょう。 新しい書式の説明は、 man nat.conf にあります。
  5. 必要とされるディレクトリを全て生成します。
    # 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. 新しいカーネルでは、IP Packet Filter が動作しなくなります。 使用していた場合は、/etc/rc.conf を変更して、起動しないようにします。 また、フィルタリングが行われなくなり、セキュリティ上の問題があるので、 ネットワークとの接続を切り離しておきます。
  4. カーネルを置き換え、リブートします。
    # chmod -x bsd
    # cp bsd /bsd30
    # mv /bsd /bsd.old; ln /bsd30 /bsd
    # reboot
    

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

  1. make コマンドが変わったので、 最初に、そこだけコンパイルとインストールを行います。
    # cd /usr/src/share/mk
    # make install
    # cd /usr/src/usr.bin/make
    # make clean && make obj && make depend && make
    # make install
    
  2. KerberosV をコンパイルします。 これを先にしておかないと、全コンパイルが途中で失敗します。
    # cd /usr/src/kerberosV
    # make obj
    # cd lib/roken
    # make
    # cd ../../usr.bin/asn1_compile
    # make
    # make install
    
  3. OS を全コンパイルします。
    # cd /usr/src
    # rm -rf /usr/obj/*
    # make obj && make build
    

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

  1. /etc と /dev 配下の各ファイルにも変更が必要です。 以下の手順で、ワーク領域に 3.0版のファイルをインストールし、 現在のファイルとそれとを比較し、必要であれば更新します。 また、不要になったファイルは削除します。
    # mkdir /tmp/newroot
    # cd /usr/src/etc
    # make DESTDIR=/tmp/newroot distribution-etc-root-var
    
    なお、当方の環境では以下のファイルを更新しました。 参考にしてください。
    新ファイルを参考にして変更したもの:
    /etc/inetd.conf
    /etc/newsyslog.conf
    /etc/rc.conf
    /etc/rc.local
    /etc/sysctl.conf
    /etc/syslog.conf
    
    新ファイルで置き換えたもの:
    /etc/afs/
    /etc/changelist
    /etc/daily
    /etc/kerberosIV/README
    /etc/kerberosIV/krb.equiv
    /etc/kerberosIV/krb.extra
    /etc/kerberosV/README
    /etc/kerberosV/krb5.conf.example
    /etc/ksh.kshrc
    /etc/login.conf
    /etc/mail/
    /etc/moduli  (旧名称は /etc/primes)
    /etc/mtree/
    /etc/netstart
    /etc/ppp/ppp.conf.sample 
    /etc/rc
    /etc/remote
    /etc/security
    /etc/services
    /etc/sshd_config
    /etc/sudoers
    /etc/weekly
    /etc/wsconsctl.conf
    /dev/MAKEDEV
    
    不要になったので削除したもの:
    /etc/ipf.rules
    /etc/ipnat.rules
    
  2. /dev 配下のデバイスファイルも追加/削除が必要です。
    以下の手順により、デバイスファイルを生成し直します。
    cd /dev
    ./MAKEDEV all
    
    削除は手動で行う必要があります。 当方の環境では、以下を削除しました。
    /dev/audio
    /dev/audioctl
    /dev/ipauth
    /dev/ipl
    /dev/ipnat
    /dev/ipstate
    /dev/mixer
    /dev/music
    /dev/sequencer
    /dev/sound
    
  3. sendmail のバージョンが変わりました。 セキュリティが強化されたため、設定を変更する必要があります。 手順は、 New sendmail version (日本語訳) を参考にしてください。
  4. reboot します。 新しい /etc/* ファイルの設定に基づき起動するので、その動作を確認します。 新しいパケットフィルタの動作状況は、pfctl -s info などにより確認できます。

その他の更新

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