OpenOffice.org

ファイルを開いたりするとこんな感じで死ぬ。
(process:91246): GLib-GObject-CRITICAL **: gtype.c:2242: initialization assertion failed, use IA__g_type_init() prior to this function
(process:91246): GLib-CRITICAL **: g_once_init_leave: assertion `initialization_value != 0′ failed
(process:91246): GLib-GObject-CRITICAL **: g_object_new: assertion `G_TYPE_IS_OBJECT (object_type)’ failed
どうやらバグらしい。
http://www.nabble.com/Re:-GLib-GObject-CRITICAL-td13904374.html
とかに解決が載ってるが、手っ取り早いのは環境変数 OOO_FORCE_DESKTOP=gnome を設定すること。ただし、終了は ^C で・・・だが。

たいやき

20080227065.jpg
スタンプがいっぱいになった、たい焼き屋さんのスタンプカードがなくなってうろたえていたのだけど、無事に発見。
いま持ってるやつもあと5個でいっぱいなので、そしたらまとめて10個おまけしてもらうんだ♪

Mac

最近は ThinkPad を持ち歩くことが多かったのだが、昨日から MacBook.
ThinkPad は、ちゃんとした Unix 環境が入っているので不自由はないのだが、
やっぱりMac はいいね。

カメラ修理その後

修理 (オーバーホール込み) の見積りがきた。
Nikomat FTn: 17430円
Nikon F Photomic FTn: 33390円
だそうだ。2、3週間で直って返ってくるとのことで、楽しみ。
それぞれ、状態を問わなければ中古で買えそうな値段ではあるが、
動かない機械が動くようになる値段としては、ちっとも高くないね。

panic: No BIOS smap info from loader!

研究室の端末 PC はほとんどが hp 製品で、PentiumD 以降のプロセッサは EM64T なので、FreeBSD/amd64 を動かそうと思って準備している (いまは FreeBSD/i386 だが、diskless なので、親玉サーバでユーザ環境を作って DHCP の設定を変えるだけだ)。

ところが、最新の dx7400 を除くモデル (PentiumD な dc7600 や、Core2Duo な dx7300) では FreeBSD/i386 は起動するものの、FreeBSD/amd64 は kernel panic してしまう。

SMAP、というのはキムタクのあれではなくて、BIOS からもらえる System Memory mAP なのだが、これが hp のちょっと前の世代のマシンではうまく取得できないらしく、google で探すとかなりいろいろでてくるのだが、解決した気配はない。わかったことは、
– FreeBSD/i386 なら起動する、というマシンは loader prompt で smap コマンドを叩いても、何も出ない。つまり、FreeBSD/i386 でもちゃんと取得できていない (loader は同じみたいだしね)
– FreeBSD/amd64 がちゃんと起動するマシンは smap コマンドを叩くとちゃんとリストが出る
ということだ。

で、この panic を出しているのは
– sys/amd64/amd64/machdep.c の 898 行めで、loader が取得した値をそのまま使っている
– 対応するところは i386 だと、sys/i386/i386/machdep.c の 1751 行めあたりで、loader に頼らずに自力で取りにいっている
というわけだ。

さあて、どうするか。
私物の ThinkPad の SMAP table はこんな感じ。

SMAP type=01 base=00000000_00000000 len=00000000_0009d800
SMAP type=02 base=00000000_0009d800 len=00000000_00002800
SMAP type=02 base=00000000_000d2000 len=00000000_00002000
SMAP type=02 base=00000000_000e0000 len=00000000_00020000
SMAP type=01 base=00000000_00100000 len=00000000_bf5b0000
SMAP type=03 base=00000000_bf6b0000 len=00000000_0001c000
SMAP type=04 base=00000000_bf6cc000 len=00000000_00034000
SMAP type=02 base=00000000_bf700000 len=00000000_00100000
SMAP type=02 base=00000000_bf800000 len=00000000_00800000
SMAP type=02 base=00000000_f0000000 len=00000000_04000000
SMAP type=02 base=00000000_fec00000 len=00000000_00010000
SMAP type=02 base=00000000_fed00000 len=00000000_00000400
SMAP type=02 base=00000000_fed14000 len=00000000_00004000
SMAP type=02 base=00000000_fed18000 len=00000000_00001000
SMAP type=02 base=00000000_fed19000 len=00000000_00001000
SMAP type=02 base=00000000_fed1c000 len=00000000_00004000
SMAP type=02 base=00000000_fed20000 len=00000000_00070000
SMAP type=02 base=00000000_fee00000 len=00000000_00001000
SMAP type=02 base=00000000_ff000000 len=00000000_01000000
SMAP type=01 base=00000001_00000000 len=00000000_3c000000

http://www.uruk.org/orig-grub/mem64mb.html に、int 15h:e820h の説明がある。
Linux を dx7300 で起動してみると、

BIOS-provided physical RAM map:
BIOS-e820: 00000000_00000000 - 00000000_0009fc00 (usable)
BIOS-e820: 00000000_0009fc00 - 00000000_000a0000 (reserved)
BIOS-e820: 00000000_000e8000 - 00000000_00100000 (reserved)
BIOS-e820: 00000000_00100000 - 00000000_7efb1d00 (usable)
BIOS-e820: 00000000_7efb1d00 - 00000000_7f000000 (reserved)
BIOS-e820: 00000000_f4000000 - 00000000_f8000000 (reserved)
BIOS-e820: 00000000_fec00000 - 00000000_fed40000 (reserved)
BIOS-e820: 00000000_fed45000 - 00000001_00000000 (reserved)

みたいにちゃんと SMAP が取れているので、loader を hack すればなんとかなるかな?

FreeBSDのサイトの当該エントリもある。