3.5版から 3.6版へアップグレードする

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

参考: MINI-FAQ: Upgrading OpenBSD, Upgrade Guide: 3.5 to 3.6

ソースを更新する

  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_6 -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_6 -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_6 -Pd
    

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

  1. 以下のグループIDを追加します。 セキュリティ向上のための権限分離で使われるものです。
    _dhcp:*:77:
    _mopd:*:78:
    _tftpd:*:79:
    _rbootd:*:80:
    _afs:*:81:
    _ppp:*:82:
    _ntp:*:83:
    
  2. 以下のユーザIDを追加します。 セキュリティ向上のための権限分離で使われるものです。
    _dhcp:*:77:77::0:0:DHCP programs:/var/empty:/sbin/nologin
    _mopd:*:78:78::0:0:MOP Daemon:/var/empty:/sbin/nologin
    _tftpd:*:79:79::0:0:TFTP Daemon:/var/empty:/sbin/nologin
    _rbootd:*:80:80::0:0:rbootd Daemon:/var/empty:/sbin/nologin
    _afs:*:81:81::0:0:afs Daemon:/var/empty:/sbin/nologin
    _ppp:*:82:82::0:0:PPP utilities:/var/empty:/sbin/nologin
    _ntp:*:83:83::0:0:NTP Daemon:/var/empty:/sbin/nologin
    
  3. 必要とされるディレクトリを全て生成します。
    # cd /usr/src/etc
    # make DESTDIR=/ distrib-dirs
    

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

  1. カーネルをカスタマイズしていた場合には、 カーネルオプションの内容が以前と変わっている可能性があるので、 新旧の GENERIC を比較する などして違いを調べ、 必要に応じて、カーネル定義ファイルを変更します。 少なくとも、cpu0 の定義の追加と、bios0 の定義の変更が必要なようです。
  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
    # chmod -x bsd
    # cp bsd /bsd36
    # mv /bsd /bsd.old && ln /bsd36 /bsd
    
  3. pty デバイスのマイナー番号が変更されたので、デバイスを作り直します。
    # cp /usr/src/etc/etc.i386/MAKEDEV /dev
    # cd /dev
    # ./MAKEDEV pty0
    
  4. 新しいカーネルでリブートします。
    # reboot
    

ユーザーランドをコンパイルする

  1. 最初に新しいヘッダファイルをインストールします。
    # cd /usr/src
    # make obj && make cleandir && make includes
    
  2. 新しいヴァージョンのlibcをコンパイルしてインストールします。
    # cd /usr/src/lib/libc
    # make depend && make && env NOMAN=1 make install
    
  3. ユーザーランドを全コンパイルします。
    # cd /usr/src
    # make build
    
    これにはかなり時間が掛かります。

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

  1. 以下の手順で、ワーク領域に 3.6版のファイルをインストールし、 現在のファイルとそれとを比較し、必要であれば更新します。
    # mkdir /tmp/newroot
    # cd /usr/src/etc
    # make DESTDIR=/tmp/newroot distribution-etc-root-var
    
    なお、当方の環境では以下のファイルを更新しました。 参考にしてください。
    新ファイルを参考にして変更、または、新規作成したもの:
    /etc/ftpusers
    /etc/inetd.conf
    /etc/login.conf
    /etc/mail/*
    /etc/pf.conf
    /etc/rc.conf
    /etc/rc.local
    /etc/sysctl.conf
    
    新ファイルで置換、または、コピーしたもの:
    /etc/bgpd.conf
    /etc/changelist
    /etc/lynx.conf
    /etc/mtree/4.4BSD.dist
    /etc/mtree/special
    /etc/netstart
    /etc/ntpd.conf
    /etc/pf.os
    /etc/protocols
    /etc/rc
    /etc/rc.securelevel
    /etc/security
    /etc/services
    /etc/ssh/sshd_config
    /etc/systrace/usr_sbin_lpd
    /etc/systrace/usr_sbin_named
    /etc/ttys
    
  2. cksum と sum コマンドの場所が変わったので、 古い場所に残されている古いバイナリーを削除しておきます。
    # rm -f /usr/bin/cksum /usr/bin/sum
    
  3. 念のため、/dev 配下のデバイスファイルを再作成しておきます。
    # mkdir /dev.new
    # cd /dev.new
    # cp /usr/src/etc/etc.i386/MAKEDEV .
    # ./MAKEDEV all
    # cd ..
    # mv dev dev.old && mv dev.new dev
    
  4. リブートします。 新しい設定ファイルに従って起動するので、その動作を確認します。
    # reboot
    
  5. リブート後、古いデバイスファイルは削除しておきます。
    # rm -rf /dev.old
    

その他の更新

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