BSD

disklabelの罠

NetBSD/amd64 3.0.1 (でなくても起こるけど) をいじってたときの話。

# disklabel sd1
disklabel: Can't read master boot record 0: Undefined error: 0
disklabel: ioctl DIOCGDINFO: Inappropriate ioctl for device

というエラーが出まくって,あれこれやっても直らない。
まあ元々初期化したいディスクだったので大胆にddで先頭をまっさらにしてfdiskして…というのもうまくいかない。
ふと,sd1 でなくて /dev/rsd1d を指定したら動いたり。
変だなあと思って ktrace で調べると,たまたまそこに sd1 というファイル(ゴミ)があって,それを開いて使おうとしていたらしい。
どうやら,fdisk も disklabel もディスク名を “sd1″ と指定したら,”sd1”, “sd1d”, ”/dev/rsd1″, “/dev/rsd1d” の順に探すようなのだが,マニュアルとかに書いてないよなあ…。

Solaris で pkgsrc/devel/gettext-tools 作れない件

/usr/pkg/bin/libtool が死ぬのが原因。というか Solaris の ksh が悪い?
shells/bash あたりをインストールして,/usr/pkg/bin/libtool の先頭行が #! /bin/ksh とかになってるのを #!/usr/pkg/bin/bash に直してやるとうまくいく。
直接編集はイクナイという向きは /etc/mk.conf に,

CONFIG_SHELL=${LOCALBASE}/bin/bash
WRAPPER_SHELL=${LOCALBASE}/bin/bash

とか書き足して,devel/libtool-base を make update とかしてやるとよい。かもしれない。

Mac mini で NetBSD/macppc

PowerPC の旧型 Mac mini が某電器で叩き売られていたのでつい買ってしまう。
通販サイトの過去の再安値(kakaku.com調べ)より安い。
早速電源をいれると画面が映らないとか。
別のディスプレイつないだりいろいろ調べた結果,付属のDVI-I→VGA変換アダプタが壊れてた。店に交換に行くのも面倒なので手持ちのアダプタで続行。
そんなわけでさくっと NetBSD/macppc (3.0) の ISO CD-R など焼いて入れてみましたが,起動しない。
うーん,sysinstで普通に入れたんじゃダメですか。NetBSDに初心者ふれんどりーなインストーラはいらないと思うけど,supportedとうたってるハードウェアに正しくインストールされないのはどうなのか。
結局手でHFSパーティション切ったりとかいろいろやって起動。
2007-07-24追記: いろいろというのはこんなかんじ
http://est.sblo.jp/article/1127559.html

インストールに関するドキュメントはとても立派なのがあるんだけれど,太古のPowerMacから全部網羅されているせいで私のような新参者にはちょっと読みにくかった。
とりあえず一通り終わって,あとは setenv auto-boot? true にするだけなんだけど,そうするとハマるという事例があるらしい。まあ,OpenFirmware に落として false に戻せばいいんだけど,専用キーボードがないと起動時に落とすというのができないらしい。キーボード(US)は取り寄せ中なので見送り。
そんなこんなでいろいろ微妙だし,内蔵無線LANとか使えないし,MacOSXに戻すかどうか悩ましい。OSXでも目的は達成できるんだけど、某所のネットワークに繋ぐときに「有償のウィルス対策ソフトを入れないと繋いじゃダメ」とか言われるのがアレ。

NetBSD/amd64 MPACPI

これまでのあらすじ:
仕事に自腹PCを使っていたものを置き換えるため,今年度予算の残り使途に安サーバを一台ねじ込んだ。
で,本日モノが届いた。
IBM e-Server xSeries 100 の一番安い奴。
Intel製のAMD64互換CPU(笑)でしかもデュアルコア(まあ,Celeron D 326ですが)つーことで,NetBSD/amd64 とか突っ込んでみる。
Celeronのくせに64bitx2。128bit級(間違い
MPBIOS経由だとCPUを一個しか認識しないようなのでMPACPIでカーネルを作り直したらうまく認識。
メモリもHDも少ないけれど,実験用サーバなのでこんなもんで十分。

NetBSD-3.0リリース

http://www.netbsd.org/Releases/formal-3/NetBSD-3.0.html
1.xから2.0リリースまでの長さを考えると,えらくあっさり3.0になりました。単に,バージョン番号のつけ方が変わったせいですが。
個人的に嬉しい新機能とかいうのはないのですが,対応ハードウェアが増えたおかげで,手持ちの余った部品がいろいろ流用できるようになりました。

Tomcat-5.5 on NetBSD-2.1

仕事の関係でTomcatをいじる。
最近のJava→最近のLinux(エミュレーション)が必要→NetBSD-1.xでは動かない
ということで NetBSD-2.1 をいれるところから。(そろそろ 3.0 が出そうですが)
OSのインストール後,pkgsrc/www/jakarta-tomcat55 を入れる。
インストール後の作業を指示通りにほげほげして /etc/rc.d/tomcat start しても起動しない。ログにエラーが吐かれている。

Java HotSpot(TM) Client VM warning: Can't detect initial thread stack location - find_vma failed
Error occurred during initialization of VM
Could not reserve enough space for object heap
Could not create the Java virtual machine.

1行目の find_vma failed は procfs をマウントしてないとこのエラーがでるらしい。そこで /etc/fstab に以下を追加。BSD の procfs だけでも一応動いたけど,念のため Linux 用も。

procfs /proc procfs rw
procfs /emul/linux/proc procfs rw,-o=linux

これで,エラーの1行目は消えたものの残りはそのまま。
メモリが足りないということなので ulimit でいろいろいじった結果 data seg size が足りないらしい。デフォルトで 131,072kbytes もあるんですが。
とりあえず /etc/rc.d/tomcat の中に ulimit -d unlimited とか(てきとう)書いてやると起動。
Google先生に聞くと似たようなエラー話は出てくるけれど,スタックが足りないとかいう話が多いような。こっちはスタックは足りてるんだけど。
まあとりあえず自作サンプルとかも動いたので,あとは JSP+Servlet のプログラミングを人に教えるだけです。教えるほど詳しくはないんだけど。というか,こういうゴテゴテしたの触りたくない… :-)