3.3版から 3.4版へアップグレードする
ここでは OpenBSD/i386 を 3.3版から 3.4版へアップグレードする手順を紹介します。
i386版では実行形式ファイルのフォーマットが a.out から ELF に変更になった関係で、
OSをソースコードからアップグレードすることはできません。
また、バイナリアップグレードは可能ですが、
OpenBSD チームはクリーンインストールすることを強く推奨しています。
そのため、「アップグレードする」 というタイトルですが、
実際にはインストールし直す手順になっています。
参考:
FAQ: 1.9 What is new in OpenBSD 3.4
(日本語訳)
-
インストールセットを手近なHTTPサーバに用意します。
当方のマシンは FDD も CD-ROM ドライブも取り外してあるので、
ネットワーク経由のインストールを行うことにしました。
公開のサーバ(ftp.jp.openbsd.org 等)から直接インストールしてもよかったのですが、
手近にHTTPサーバがあったので、そこに CD-ROM のインストールセット(/3.4/i386
の下全部)をコピーしてインストール元にしました。
なお、CD-ROM を Windows マシンで読んだ場合、ファイル名が化けているので、
各ディレクトリの TRANS.TBL を参照して正しく直す必要があります。
※ インストール時には 63MB〜124MB のデータを転送するので、
公開サーバからインストールするには十分高速なネットワークか忍耐が必要です。
-
インストール用のカーネルを入手します。
HDD からブートしてインストールやアップデートを行うには、
それ専用のカーネル(bsd.rd)を使います。
今回のアップデートでは、
実行形式ファイルのフォーマットが a.out から ELF に変更になった関係で、
特別なカーネル(bsd.rd-a.out)が必要です。
これは CD-ROM に含まれていないので、公開のサーバから入手する必要があります。
これを / に置きます。
→ ftp://ftp.jp.openbsd.org/pub/OpenBSD/3.4/i386/bsd.rd-a.out
-
バックアップを取ります。
OSインストール時には、
インストール対象のパーティション(/, /usr, /uar/local, /var
等を含むもの)は初期化(newfs)されるので、
消えて困るファイルは全てバックアップを取ります。
少なくとも以下に挙げるような設定ファイル、データファイルは必須でしょう。
独自にインストールしたソフトの設定ファイル、データファイルも忘れずに。
/etc/*
/var/named/etc/*
/var/named/master/*
/var/cron/*
/var/mail/*
/var/spool/*
/usr/local/etc/*
/home を別パーティションにしてある場合、OSインストール時に消されないので、
その下にコピーしておくのが手軽で便利です。
ただし、作業ミス等による破壊を考えると、
重要なデータは外部のメディアにバックアップを取るべきです。
-
インストールプログラムを起動します。
一旦シャットダウンした後、再起動します。
OpenBSD の最初のメッセージが表示され、
boot > のプロンプトが出たところで、
スペースバーを押して起動シーケンスを停止します。
そして、以下のようにインストール用の特別なカーネルを指定して起動します。
boot> boot wd0a:/bsd.rd-a.out〈Enter
-
ブートに成功すると以下の質問で止まるので、
i を入力してインストールを選びます。
・・・
(I)nstall, (U)pgrade or (S)hell? i〈Enter〉
-
いくつかの質問に答え、インストールを開始します。
Welcome to the OpenBSD/i386 3.4 install program.
・・・
Terminal type? [vt220] 〈Enter〉
Do you wish to select a keyboard encoding table? [n] 〈Enter〉
IS YOUR DATA BACKUP? ・・・
・・・
Proceed with install? [n] y〈Enter〉
-
ディスクパーティションのセットアップをします。
Cool! Let's get to it...
・・・
Available disks are: wd0.
Which one is the root disk? (or 'done') [wd0] 〈Enter〉
Do you want to use *all* of wd0 for OpenBSD? [no] yes〈Enter〉
Putting all of wd0 into an active OpenBSD MBR partition (type 'A6')...done.
・・・
Initial label editor (enter '?' for help at any prompt)
> p〈Enter〉
device: /dev/rwd0c
type: ESDI
disk: ESDI/IDE disk
label: ASI ARAID99 500
bytes/sector: 512
sectors/track: 63
tracks/cylinder: 16
sectors/cylinder: 1008
cylinders: 232581
total sectors: 234441648
free sectors: 0
rpm: 7200
16 partitions:
# size offset fstype [fsize bsize cpg]
a: 262017 63 4.2BSD 1024 8192 16
b: 786240 262080 swap
c: 156301488 0 unused 0 0
e: 1048320 1048320 4.2BSD 1024 8192 16
f: 6289920 2096640 4.2BSD 1024 8192 16
g: 33546240 8386560 4.2BSD 1024 8192 16
h: 114368688 41932800 4.2BSD 1024 8192 16
i: 78140160 156301488 4.2BSD 1024 8192 16
> q〈Enter〉
No label changes.
今回はパーティションの切り方を変更しなかったので、
ラベルエディタは p で現状を確認した後、
q で抜けました。
変更することも可能で、その場合には、
対象のパーティションを削除(d)してから、
追加(a)しなおす手順になります。
ただし、消えては困るデータがあるパーティションを変更してはいけません。
-
ディスクのマウントポイントの指定と初期化をします。
The root filesystem will be mounted on wd0a.
wd0b will be used for swap space.
Mount point for wd0e (size=524160k)? (or 'none' or 'done') /tmp〈Enter〉
Mount point for wd0f (size=3144960k)? (or 'none' or 'done') /var〈Enter〉
Mount point for wd0g (size=16773120k)? (or 'none' or 'done') /usr〈Enter〉
Mount point for wd0h (size=57184344k)? (or 'none' or 'done') done〈Enter〉
No more disks to initialize.
You have configured the following partitions and mount points:
wd0a /
wd0e /tmp
wd0f /var
wd0g /usr
The next step creates a filesystem on each partition, ERASING existing data.
Are you really sure that you're ready to proceed? [n] y〈Enter〉
・・・
ここではOSをインストールするパーティション(この例では
wd0e=/tmp, wd0f=/var, wd0g=/usr)のみを指定します。
ここで指定したパーティションは初期化(newfs)されるので、/home のパーティション等、
消えては困るデータがあるパーティションを指定してはいけません。
この例では wd0h と wd0i を指定から外しています。
ルートパーティション(wd0a)は必ず初期化されます。
-
ホスト名とネットワークのセットアップをし、root のパスワードを指定します。
System hostname? (short form, e.g. 'foo') myhost〈Enter〉
Configure the network? [y] 〈Enter〉
Available interfaces are: fxp0.
Which one do you wish to initialize? (or 'done') [fxp0] 〈Enter〉
Symbolic (host) name for fxp0? [myhost] 〈Enter〉
The default media for fxp0 is
media: Ethernet autoselect (100baseTX full-duplex)
Do you want to change the default media? [n] 〈Enter〉
IP address for fxp0? (or 'dhcp') 192.168.0.5〈Enter〉
Netmask? [255.255.255.0] 〈Enter〉
Done - no available interfaces fount.
DNS domain name? (e.g. 'bar.com') [my.domain] mydomain.jp〈Enter〉
DNS nameserver? (IP address or 'none') [none] 192.168.0.1〈Enter〉
Use the nameserver now? [y] 〈Enter〉
Default route? (IP address, 'dhcp' or 'none') 192.168.0.1〈Enter〉
add net default: gateway 192.168.0.1
Edit hosts with ed? [n] 〈Enter〉
Do you want to do any manual network configuration? [n] 〈Enter〉
Password for root account? (will not echo) ********〈Enter〉
Password for root account? (again) ********〈Enter〉
・・・
-
インストールセットのある場所を指定します。
Where are the install sets? (or 'done') h〈Enter〉
HTTP/FTP proxy URL? (e.g. 'http://proxy:8080', or 'none') [none] 〈Enter〉
Display the list of known http servers? [y] n〈Enter〉
Server? (IP address, hostname or 'done') 192.168.0.10〈Enter〉
Server directory? [/pub/OpenBSD/3.4/i386] 〈Enter〉
この例では、インストールセットを置いた手近なHTTPサーバを指定しています。
公開のサーバからインストールする場合には一覧からの選択で指定することもできます。
-
何をインストールするか選択し、ディスク上に書き込みます。
The following sets are available. Enter a filename, 'all' to select
all the sets, or 'done'. You may de-select a set by prepending a '-'
to its name.
[X] bsd
[ ] bsd.rd
[X] base34.tgz
[X] etc34.tgz
[X] misc34.tgz
[X] comp34.tgz
[X] man34.tgz
[X] game34.tgz
[ ] xbase34.tgz
[ ] xshare34.tgz
[ ] xfont34.tgz
[ ] xserv34.tgz
File name? (or 'done') [bsd.rd] all〈Enter〉
・・・
File name? (or 'done') [done] 〈Enter〉
Ready to install sets? [y] 〈Enter〉
・・・
Sets can be located on a (m)ounted filesystem; a (c)drom, (d)isk or (t)ape
device; or a (f)tp, (n)fs or (h)ttp server.
Where are the install sets? (or 'done') done〈Enter〉
この例では全てをインストールするように指定しています。
-
いくつかの質問に答え、インストールを完了します。
Do you expect to run the X Window System? [y] 〈Enter〉
Saving configuration files...done.
Generating initial host.random file...done.
What timezone are you in? ('?' for list) [Canada/Mountail] Japan〈Enter〉
Setting local timezone to 'Japan'...done.
・・・
CONGRATULATIONS! Your OpenBSD install has been successfully completed!
To boot the new system, enter halt at the command prompt. Once the
system has halted, reset the machine and boot from the disk.
# halt〈Enter〉
syncing disks... done
The operating system has halted.
Please press any key to reboot.
-
各種の設定ファイル、データファイルをバックアップから復元します。
ただし、一部のファイル(/etc/rc.conf, /etc/sysctl.conf
等)はバックアップから単純に戻すのではなく、
OSのインストール時に作られた標準の設定ファイルとマージするようにして復元する必要があります。
-
OSのソースをインストールし、最新の状態に更新し、再コンパイルします。
→ ソースを更新し、再コンパイルする
-
アプリケーションプログラム等を再コンパイルします。
マシンコードにコンパイルして実行するプログラムの全てが対象です。
なお、W^X 機能(プログラムから書き込みができるメモリセグメントではコード実行を禁止し、
実行可能なコードを置くメモリセグメントはプログラムからの書き込みを禁止するもの。
バッファーオーバーフォローのバグを突いた攻撃が困難になる)が導入されたのに伴い、
インストール手順を変えなければならないものがあります。
当方で確認した中では、
Emacs と w3m は、
そのままでは memory fault 等を起こすため、リンクオプションを追加する対処をしました。