読者です 読者をやめる 読者になる 読者になる

KVM 上の OpenBSD 4.6 を release から stable へ移行する(失敗)

OpenBSD oogatta.com設定

その後

再度挑戦したところ成功しています。以下の手順と同じ手順をやり直しただけなのですが、ミスがあったのかもしれません…。

3つのフレーバー(再)

ずっと前にも書いたんですが、 OpenBSD は三つのフレーバーで運営されております。半年に一回リリースされたそのままのバージョンである "release" 。その release に必要最低限のパッチを当てていく(自分で)ものが "stable" 。そんで、次のリリースに向けて機能変更を含めたアップデートパッチを当てていく(自分で)ものが "current" です。

テオ様曰く、 current が一番安全であるように努めている、ということではありますが、サイトにばっちり「素人お断り」と書いてあるので、やめます。僕も昔は current を追いかけていましたが、パッケージはなくすべてソースからのコンパイルになるので何か一つうっかりすると依存の嵐に巻き込まれます。でも、半年に一回やってくる次のリリースバージョンには一番上げやすいんですよね。というかそろそろ 4.7 なんだけど VPS 上の場合どうするんだろう。 OpenBSD の場合サポートって2バージョン先までしかないので、 4.6 は実質あと半年しか持たないわけですが。

とはいえ、今回は ARP Networks の VPS 上で何かあっても困りますし、サーバなので "stable" で行きます。アップグレードのことは今度 ARP Networks さんにメールで訊いてみよっと。

ソースを準備

で、カーネルと userland のソースをまず用意します。いきなり CVS サーバからチェックアウトしてもいいのですが、 FTP ミラーから一旦 "release" 時のソースを持ってきて、そこから CVS update するようにオススメされています。なのでそうします。 FTP で落としてきた tar にはもともと CVS メタデータ付きです。僕は CSV は詳しくないのであれですが…。

カーネル( sys.tar.gz )と userland ( src.tar.gz )は大抵みんな /usr/src 以下に展開するみたいなので、もちろん僕もそうします。

# cd /usr/src
# wget ftp://ftp.lambdaserver.com/pub/OpenBSD/4.6/src.tar.gz
# tar xzf src.tar.gz
# wget ftp://ftp.lambdaserver.com/pub/OpenBSD/4.6/src.tar.gz
# tar src.tar.gz

とりあえずこれで一旦 release 時のソースが展開されました。あと、これ以外のソフトウェアに関しては FreeBSD 由来の ports というリポジトリになるわけですが、こっちはなんと ARP Networks さん標準装備でした。 /usr/pots に元々入ってた。

ちなみに current

ちなみにですが current にする場合は release を落として来ずに最初から snapshot を落としてきて、 CVSリポジトリも current 向けになります。 OpenBSD 上で X を上げていて、ブラウザの新しいバージョンを試したい場合なんかはやっぱり current だと思います。というか僕も昔 current を追っかけていたのですがそのマシン、 Thinkpad X40 がしばらく触っていなかったらお部屋の中に見当たりません。無くしました。 current にはご縁がなかったと言うことでしょう。今回は current 関係ありません。とにかく stable です。

ではチェックアウト

サーバは適当です。

# cd /usr/src
# export CVSROOT=anoncvs@obsd.cec.mtu.edu:/cvs
# cvs update -rOPENBSD_4_6 -Pd
# cd /usr/ports
# cvs update -rOPENBSD_4_6 -Pd

最初 subversion やらなんやらの癖で -P と -d を忘れてしまいましたが、再度。 ports は使ってないからいらないはずだけど一応やっときます。

終わったので、カーネルのリビルドです。緊張します。 VPS でこんなことやって大丈夫か!?という気がしますが、やらないと patch が当たらないのでしようがありません。だめだったらサポートさんに泣きつくしかありません。

# cd /usr/src/sys/arch/amd64/conf
# config GENERIC
# cd ../compile/GENERIC
# make clean && make depend && make
# make install

するっと終了。ここで一回リブートせよということなので、します。

あー、起動してこないよ、まいったね。端末から入ってみると、

exec /sbin/init: error 8
init: not found
panic: no init

だってさ!!あーあ!どうすんだよこれ!(泣)。

とりあえず、 VNC アクセスだとブートした瞬間につなげなくてどうしようもない感じなのでコンソールアクセスをもらう為に公開鍵を ARP Networks さんに送ります。あー…。しばらく oogatta.com おあずけです…。 KVM上 でカーネルビルドするの、やっぱ無謀だったか…。

http://scie.nti.st/2009/10/4/running-openbsd-4-5-in-kvm-on-ubuntu-linux-9-04

この問題っぽい感じもするんですが、 panic する場所が違うんですよねぇ。どうしたもんか。とりあえず公開鍵を送ったところで、今日は終了です。 KVM 上で OpenBSD を動かしてる事例自体がすくないのか、検索しても全くヒットしない!。代替が HDD の物理的な問題か、 init が違うアーキテクチャのもので起動できないとか、 MBR の問題とかあるけどはっきりしない。 LiveCD で起動して /sbin/init の存在を確認できる環境なら良かったけど、 それはさすがに不可能。これは OS リフレッシュになる予感がします。切ないぜ…。

みなさんも、やるな!手を出すな!カーネルリビルド of OpenBSD on KVM!!

その後の調査

まず、上の URL の問題では無かった。書いてある通りにカーネル設定をいじってみたが同じところでパニックして止まる。パニック箇所が違うので違う問題のようだ。それでは他に何だろうか?

/sbin/init

なんとか自動bootするまえに VNC で割り込むことができて、 ls などしてみる。

boot> ls /sbin/init
-r-x------ 0,7  287864  hd0a:/sbin/init

あるなあ…。場所とかその辺も思いっきり間違ってないし…。うーん…。

ふつうに bsd.rd とかも叩けるんで、そこから再インストールしてやろうとも思ったけど、さすがにそれはやめておいた。サポートの返事が来てたら、もう一回そうしていいか訊いてからにしようと思います。 KVM 環境良くわかってないし。