某日記

(後期)

平成12年10月21日(土曜日)

Crusoe

古巣の LaVie MX だが、カタログにも APM 未サポートと書いてあるし、 BIOS のメニューにも電源管理の項目が一切無いので、 ACPI オンリーらしいぞよ。

なんとなく、LOOX も ACPI オンリーっぽいのう。 早く S2-S4 (suspend/hibernation)サポートしないと、 PC-UNIX でノートパソコン使えなくなってしまうがな。

…なんとなく Linux VM が一番簡単で、UVM はちょっと難しく、 Mach VM は非常に難しい、という気がしてるのだが、嘘かのう。 もっとも、NetBSD の場合は MI に作らにゃならん、 というある種の足枷があるので、FreeBSD より難しいかものう。 あるいは、X 動かしてる時に、ビデオチップの再初期化は誰がやるのか、 ってのを考えだすと夜も寝れないのだが。Win では、ビデオドライバが それをやるんじゃないか、という気がするし、もしそうなら、 それを X でやるにはビデオドライバを kernel に仕込むか、 あるいは X サーバに何かイベントを送ってやらんといけないわけよのう。

BETA

らしいぞよ。

M18

家での常用のブラウザにしようかと思う。 どうせコミケ 4.75 だって落ちる時は落ちるし、 M18 は今の所落ちたことが無い気がする。 ただ、おとといビルドした版は debug print を無効にしたはずなのに あいかわらず debug print されるので、ビルドし直そうかな。

ふぐーふぐー

初モノ。楽しみである。

平成12年10月22日(日曜日)

ひる

タダ酒イベント発生で眠い目をこすって秋葉へ。

夕方

その後、上野方面でビールと日本酒飲み。 F1 の話や菅野よう子のお話なぞ。 おいしゅうござんした。

帰り。こがさんと、ぬるっと化した SF メテオメトロカードの実力を 計るため、上野広小路から SF カードで入場。今までは切符→定期と わざわざ切符を買って接続していたのだが、フェアスルーシステム のせいおかげで、ぬるっと→定期というシーケンスが可能になった。

さて、最寄駅。 精算機にどっちを先に入れりゃいいのか良くわからんかったのであった。 わたしゃ実装屋なので、素直に実装した場合に一番都合のよい実装方法を 半ば無意識のうちに論理的に考えた結果、 定期を先に入れた方が「フラグが立ってない」ことから、 これが乗り継ぎであることが一目瞭然なので整合性が 取れるという結論に達したわけである。 よって、定期を先に入れようと思ったのだが、機械をみると、 「最初の券を先に入れろ」という有無を言わせぬニュアンスの記述があったので、 釈然としないもののその記述を信用し、ぬるっと SF カードを挿入。 何か表示が怪しげなものの、何かの入力を要求していたので次に定期を挿入。 すると、しばし考え込んだ後(←これ結構不安を感じる)、 ちゃんと SF カードから 160 円だけを引き、 0 円の精算券を返して来た。をを、賢いではないか。

CD

今日買った CD :

  1. Whisper Not / Keith Jarrett, Gary Peacock, Jack DeJohnette
  2. せんせいのお時間 7 時間目

1 だが、これは非常に素晴らしい。 恐らく、今年の Swing Journal の大賞はこれになると思う。 去年のキースジャレットのソロアルバムは、 ちょっと今一つで心配しておったのだが、 これは文句なしにキースジャレットの音でござるよ。 キースジャレットがここまで弾き倒すのも珍しい。

2 はまだ聞いておらず。

BGM

そうえば、菅野よう子で思い出したのだが、 カードキャプターさくらの音楽はオープニングから BGM や挿入歌に至るまで、 「あそこで奇をてらう必然性は必ずしもないけど実際には奇をてらった音楽」 ばっかだと思うのだが、でもどれもアニメの方を邪魔していないし、 それどころかトータルで見て非常に素晴らしいものばかりだと思うぞよ。 まあ、なにをもって「奇をてらった」と言うかにも依るだろうけど。 以下長いので略\

M18

M18 をオレ標準のブラウザにする。farewell communicator。 長い間ありがとう。

平成12年10月23日(月曜日)

某 users

バカ増殖中(笑)。もともとのポストはもちろんのこと、 あれに反応すること自体が net abuse だと思わんといかんぞ。 もっとも、あの ML の存在自体が net abuse 臭いけど(ぉ \

じゃんぷ

ぎゃははは、HUNTER×HUNTER、 4 ページ目からが下書き原稿でござるよ。 仕事するのがよっぽど嫌なんだろうなぁ。 そんなのアシ君にやらせちゃえばいいのに(笑)。 とりあえず、仕事するのが嫌でも引き受けた以上きっちり仕上げる 鳥山明を見習いましょう(3点)。

ヒカルの碁は和谷×ヒカル。しげ子ちゃんかわいいぞ(←ダメ人間)。

…他に読むところ無いんですけど(涙)。

うー

まわりがみんな休んでるからモチベーション上がらんがな。 何か上からハードディスク(DTLA-307030)が降ってきたので、 オレマシン NetBSD 化計画でもやるかのう…。

iconv

うーむ、iconv でござるか…。 Citrus の目標としては、iconv と locale の mb ⇔ wc まわりの 統合というのがあるのであった。 iconv の処理というのはとどのつまり、

外部ストリーム
(分解と再構成)
内部ストリーム
(テーブル変換)
内部ストリーム
(合成)
外部ストリーム

ということなのだけど、この、外部ストリームを parse して分解したりとか、 内部ストリームから外部ストリームを合成したりする作業は、 実は locale の mb ⇔ wc まわりと大した違いはなかったりする。

しかしながら、世の中にあまたある iconv 実装は CSI になっておらず、 内部ストリームとして UCS4 (つまり 32bit 整数の配列)を 使ってるのが多かったりする。これはダサい。 まあ、glibc みたいに、逆に iconv と locale の mb ⇔ wc まわりを Unicode で統一するというやりかたは、ある意味潔いのだが。

さて、我々はどうするべきか。もちろん CSI は維持しなければならんのである。 ここで一つ触れておくべきことは、 大抵の外部コードは複数のキャラクタセットを合成したものに なっているという点。 たとえば EUC-JP は ISO-8859-1, JISX0208, JISX0201, JISX0212 から成るし、SJIS は JISX0201 の一部と JISX0208 から成る。 もし、EUC-JP や SJIS から Unicode へ変換する場合、 各文字に対して単純に通し番号を付けて変換しちゃっても悪くはないのだけど、 それは非常にダサいし空間の無駄が大きい方法なので、 普通は各キャラクタセットごとに変換するわけね。

ところが、この「分解してから変換する」というのが 結構曲者だったりするので、ダサい iconv 実装では 「キャラクタセットごとに分解してから一度 Unicode に変換」 という方法を取る。 こうすると「Unicode キャラクタセット」という単一の キャラクタセットとの間の相互変換に帰着できるから、 問題が単純化するんですな。 そのかわり、Unicode に思いっきり依存してしまうのだけども。 CSI を保つためには、ちゃんと分解したままの状態で変換しないと いけないのだけど、効率を考えると、どういう粒度で分解するのが良いのか、 いまひとつ判然としない。 つまり、上のグラフのフロー制御をどういうふうにやるか、 ということなのだけど、具体的には、「一文字ずつ分解しながら変換」から 「全部分解して一気に変換」までさまざまな方法が考えられる。 一般的に言って前者は遅いし、後者はメモリを食うわけですな。 同じような分解を必要とする X のフォントセットの扱いなんかはこの中道で、 「同じキャラクタセットが続く間をひとまとめにして扱う」という方法を 取っているのだけど、ここでもちろんそういうやりかたをとることもできる。

さーて、どうしましょうかね。

Dual

いまさら Dual Celeron マシンでも作るかと画策中。 伝説の Dual Celeron 専用(事実誤認)ボード ABit BP6 は 中古なら結構見掛けるので、 あとは中古の PPGA Celeron 300 を根気良く探せばよさげ。 別に 400 とか 433 でもいいのだけど、面倒っちぃちぃちゃんは 500 程度が限界なようなので、fsb=100 で動かすには 300 くらいが適当な模様。

平成12年10月24日(火曜日)

PSI

うちの会社の上流が 9 時間くらい止まってました。腐ってます。 たぶんうちの会社は PSI と手を切るでしょう。 もはや東京インターネット関係の義理もないし。

IP unreachable な生活(その 1)

給与体系の説明と考査面接。6.5 %(旧給与制度比)。

IP unreachable な生活(その 2)

コアタイム明けに秋葉。購入物:

  • ABit BP6(中古) : 8000 円くらい
  • Celeron PPGA 300MHz リテール版(中古) × 2 : 計 9000 円ちょい
  • メモリ 128MHz 2 枚 : 計 16000 円ちょい
  • 放熱用シリコングリース : 700 円くらい

IP unreachable な生活(その 3)

上から Celeron 600 なコンパックの microATX マシンが降って来たので、 ブースを片付ける。これにこないだの DTLA-207030 と Win2000 を入れれば、 あと 2 年は戦える。

…そうこうしているうちに復旧し、 メールなどの処理をしていたら、中途半端なことに(涙)。

Dual

というわけで、家サブマシンのメインボードを Dual Celeron にすげかえ。 もともと 300MHz/66MHz の Celeron を 450MHz/100MHz の設定で動かした。 FreeBSD-4.1R を入れて、SMP カーネルを構築。あっさり動く。

ベンチマーク。FreeBSD-4.1R の GENERIC カーネルで make -j4 した時間。UP:8分29秒、SMP:5分ジャスト。 まあ、こんなもんでしょうな。

しかし、こんなに手軽に SMP なマシンが作れてしまうのね。

平成12年10月25日(水曜日)

エンターテインメント方面

そうかぁ、おーごしだったのかぁ(謎)。 きっとわざと分るようにやってるんだろうね(笑)。 そもそも金髪の人は、あっち方面で何か言う時は ogochan@以下略 で メール投げてたと思うぞ :-)

というわけで

ワークステーションのおと状態。

主なスペック:Celeron 600MHz, i815, CD-R 搭載、10GB HDD, 64MB memory。 ちなみに、 これ

メモリ

横のマシンから 64M をひっこ抜いて挿す。

ぬ、抜けないよぅ

CD-R を右のベイに移そうとしてるのだが、電源ケーブルが固くて抜けない。 弛緩剤テコで抜く。

HDD 交換

こいつは 3.5in HDD ベイが 1 つしかないのが不満。 もともと付いてた Seagate の 10G の HDD を外して付ける。 ところが、入れるところがよく分らず四苦八苦。

sleep

私の記憶が確かならば 、 perl の sleep には小数が渡せます。

給料日

…見かけ上今月の給料が謎の大台に乗る :D。 交通費の支給と、給与体系変更に伴う 9 月分の差分の上乗せが 重なったからだが。今月末にはボーナスもあるし、 非常にコストパフォーマンスが悪い生活をしているはずなのに、 いつのまにか残高も見かけ上謎の大台に乗るのう。

マシン名

izayoi と命名。

回転

切腹とか 。 あるいは、とらハ 2 のオープニングを avi なしで再現しようと思うと、 いきなり必要だな。

怪文書

厳密さは求めてません。


などということを一年くらい前に考えたことがあったので、 今日の帰りのバス内で考えを文書化。 もうちょい完成度を上げてから振ろう。

脳内ダンプメモ:例: euc-jp から utf8 への変換における構成要素案。

  • euc encoder/decoder "/usr/lib/i18n/es/euc.so"
  • euc-jp specialization "/usr/lib/i18n/cs/euc-jp.so" or "/usr/share/i18n/cs/euc-jp.dat"
  • jisx0208 to ucs4 translator "/usr/lib/i18n/csconv/jisx0208/to_ucs4.so" or "/usr/share/i18n/csconv/jisx0208/to_ucs4.dat
  • utf8 encoder/decoder "/usr/lib/i18n/es/utf8.so"

…とりあえず、so とかそんなもんは使わんで、 たとえば「euc-jp から utf8 決めうち」みたいな プロトタイプでも作るんだろうな。 こういうことをやるために去年の今ごろ dynamic loadable class framework を 作りかけたのだけど、まあそこまで大げさにするまでもないでしょうな。

平成12年10月26日(木曜日)

かいもの

あずまんが大王とアフタヌーン。ちよちゃんのアレが外れるクッションほしー。

周波数

指数関数ですがな 。 どんな音でも 2 倍するとオクターブ上がるのだから、 オクターブの間の各音は対数を取った時に等間隔になってないと、 どんどんシと次のドの間隔だけが広がってしまいますがな。 具体的には、C * pow(2,n/12) とか表される。 ちなみに、普通は必要な精度でテーブルを作ってしまいますが。

これは、心理学のウェーバーの法則というやつです。 人間は、いろんな物理的刺激を対数で知覚するように作られてますので、 音程は 2 の対数だし、音の大きさは dB という単位で表すと具合が良い。 こうすることによって、ダイナミックレンジを広く取ってるわけですな。

↑嘘でした。 音程は倍音の問題ですな。平均律は人工の音階ですわ。

Win2000

やっぱりデスクトップクライアント OS としては良いぞよ。 Win9x のような変な落ち方しないし、 Win の UI はバランスが良いので落しどころとしてはこんなもんかなぁと思う。

まあ、OS 自体はちょっと重いのだけど、 今度のマシンは U-DMA66 と HDD 7200rpm が効いているので、 旧環境よりもはるかに快適だ :-)

Dual

デュアルマシンだが、どうも Win98 との相性が悪い。 突然刺さったり落ちたり、起動しなくなったり。 Once more Again がいつもおんなじような画面エフェクトでコケる。 デュアルのせいかと思いきや、 1CPU にして、クロックも標準的な設定にしてもやっぱり Once more Again が画面エフェクトでコケてるので、 どうもこのボードと G200 との相性のような気がする。

平成12年10月27日(金曜日)

きのう

眠かったのだが、6:30 くらいまでいぢりまわす。

…Riva128 に付け直しても同じところで落ちるんですけど…。 AGP かのう。ちゃんと 66MHz になるように設定してあるのだけどのう。 ちなみに落ちるのは、 Once more Again で画面が白くフラッシュするところ(←意味明瞭)です。 それとも、インストール法がインチキだから (Win98 入れ直してゲームのレジストリだけ継承した)かのう。 WinMe でも入れようかと思ったら、 「HDD に古い Win が入ってるからアップデート版じゃないとダメよん」 とか言われる。ブッ殺す。ハトビーム(←謎)

とりあえず、帰ったらうちの腐れ Mystique を PCI に挿してみよう…。

うーん、ATX なミニタワーケースを買って来て、 古いマザーを Win 専用に回すのが一番安いかな…。 今使ってるミドルタワーは、電源容量が大きくて Dual には良いのだ。 ただでさえ本やらキーボードやらがらくたやらで狭い部屋なのに、 どんどんマシンが増えてくんですけど(涙)。

スタック

リストで supercede しちゃダメ?

世界最小最軽量

ちんまい と持ち帰りに便利なのに(←やめなさい)。 あるいは取り回しが楽(←それもやめなさい)。

@会社

やる気減退中。おやすみなさい。

野球

しかし、昨日のプロ野球ニュース見てたらすごかったねぇ。 あからさまな誤審が 2 つもあったよ。 一つは一塁のタイミング。どーみてもセーフ。でもアウト。 もう一つは二塁のタッチ。どーみても追いタッチ。でもアウト。 特に、後者は試合の勝ち負けを左右してたと思うぞ。

さっさとビデオを導入すれば済む話なのに、 審判神格論みたいな実態が全く伴ってない精神論とか、 「ゲームの流れが妨げられるから」 とか妙な理屈こねてビデオの導入を渋ってるから、 星野監督から「審判はフェアじゃない」とか言われちゃうんだよ。 実際には、たぶんアンフェアなことなんてないんだろうけど、 でもフェアなら信頼性が低くてもいいってわけじゃないぞよ。 見てる方もやってる方も気分悪いと思うぞ。

こういうのは、がしがしマスコミが叩かなければいけないよ、ホント。

8G over

うーん 、 lilo も新しい奴を使うと LBA 対応してたはずだし、grub という手もあるので、 単に「Linux は 8G 超でブートしない」と書くと不適切です。

ちなみに、NetBSD-current は 8G 超も平気。

GRUB はいいよー 、 と電波送ってみる。 コマンドがややこしいのだけど、基本操作さえ覚えちゃえば楽。 基本的に最新のものを使った方がよいので、 takehiro さんとこから拾って来るのが無難。

まあ、info を読んで下され。

平成12年10月28日(土曜日)

BP6

うーむ、どうも私の買った個体が外れだった気がする。

腐ってる症状 1 :シングル CPU の正しい設定で Win98/Me/FreeBSD を起動、そのままシャットダウンして電源切り、 10 秒後に再度電源を投入すると、けたたましく BEEP 音が鳴って、 BIOS の初期化すらできないことが多い。 数分待つと直るみたい。

腐ってる症状 2 :シングル CPU の正しい設定で、 Win98+DirectX 7 の Diagnostic の途中で刺さる。 ちなみに、Mystique(PCI), Riva128(AGP), G200(AGP) のどれも 同じ刺さりかたをするので、ビデオカードではない。

そもそも、Celeron 300A を 300/66 でシングルで動かしても 安定動作しないんだもんなぁ…。

メモ:ABit BIOS Update

… BIOS アップデートしてもダメでした。 しゃあないので古いマザーに戻しましたとさ (;_;)

平成12年10月29日(日曜日)

昨日

/2 さん迎撃でふぐ@三浦屋。 うまかったですにゃ。でも、鍋は煮すぎでちょっと失敗風味。 ひつまぶしもうまいにゃー。やっぱり、関西風の香ばしい鰻の方が好みだにゃ。

その後、ばるさんちで MU-2000 試聴。歌ってますがな。

帰り。ぬるっと関東を駆使して新大塚→後楽園→武蔵小杉と帰る。 途中後楽園の地下で武蔵小杉行き最終 00:05 を待っていたら、 matsumot さんに出会う。うへー、土曜日のこんな時間までお仕事ですか。 やっぱり 7F は(以下略)。

今日

体調悪く布団をかぶってぬくぬくしてみる。

LOOX S

ほう、そんなに安いのか 。 この動かない ACPI を動かそう、にはもってこいかも…。

NIC

壊れる壊れないじゃなくて、安物は動かないことがあるのです :D 。 NIC は最低 5000 円くらい出さないとまともなものは買えません。 5000 円出しても 2114x は避けた方が無難だが。 蟹さんとか VIA Rhine はほんっと安かろう悪かろうで、 パフォーマンスでないし、場合によっては安定動作しないし散々です。 いいつつ、私は VIA Rhine の乗った、一枚 1000 円の赤 NIC を 愛用してたりするが、これとて金さえあれば買い替えたいのは確か。

今買うなら、秋葉でバルクが比較的安く出回ってる 3c905B-TX か、 fxp なボードのどっちかでしょうな。両方とも 5000 円台中ごろのお値段。 905B はたぶん現品限りの気がするのでお早めに。 3com のボードは、高いけどまずまともに動く。 どうも Solaris for Intel だとダメとかいう噂があるけど、 それはそもそも Solaris for Intel が腐ってるんだから仕方が無い :D

そうえば、蟹さんは $3/chip らしいのう。どおりで 980 円とかで NIC が 作れるわけだ :D

MVP

いやだから木曜日の 2 塁塁審が MVP ですって

めも

driveropts=burnproof

平成12年10月30日(月曜日)

むにゅ

ねむねむにゅ。昨日 NetBSD-current の make release が終るのを待ってたら 30:30 就寝。

UBC

merge への準備段階に入った模様。すばらしい。

ACPI CA

msmith がどうやら -current へ統合した模様。 暇なときに ACPI CA と OSPM 部分をパクってこよう。

NetBSD-current

インストールしてリブートすると、no /dev/console とかのたまうぞよ。

ああ、xmisc.tgz が無かったから途中で止まっちゃったのね。I see 。 もいちど CD から起動して MAKEDEV all 。

ルビ(るび)

なんぞを rids に仕込む。\ruby[るび]{ルビ}とか使う。

… IE でルビのところを選択してコピーすると、「ルビ(るび)」というのが クリップボードに入るのね。

マシン構成

俺ブースのマシン構成を変えてみる。以下リスト(予定含む):

マシン旧ホスト名旧OS旧概要新ホスト名新OS新概要
DPENS C400/6.4/W8C/64aoiWin系オレメインtshiozak_c400Win系テスト用(or 上司ドナドナ)
EXD/815 C600N/AN/AN/AizayoiWin2000オレメイン
EP/C466/6A/8/64Chatsuneごった煮研究用aoiNetBSDオレホーム
K6 233MHztenguFreeBSDオレホームtenguごった煮研究用

この他に、alpha 433MHz な NT マシンやら、K6 166 MHz なテストマシンやら MMX 166MHz なテストマシンやらがいるけど、こいつらは現状維持。

…これで FreeBSD を私の身の回りから一掃 :-)。 まあ、使ってないものの kotori には入ってるし、 必要に応じて研究用マシンにも入れるだろうが。

…あ、CVSup どうしよう(←バカ)。runsocks 使うから、 static link 版というわけにもゆかんし…

うーん、Modula-3 を NetBSD で動かすのは、FreeBSD からパクって来ると 実はそんなに難しくないんじゃないか、という気はする。 ブートストラップだけ FreeBSD の m3-boot コンパイラを借りるとして、 多分、一番めんどいのは m3/m3core/src/unix/freebsd-2/ 以下を NetBSD のヘッダに合わせて書き換えることなんじゃないか、という感じ。

…ま、めんどうくさいから compat-freebsd だな<弱過ぎ

aoi に入ってないもののリスト(括弧は必然性の無いもの): cvsup, (freetype), (gettext), (gimp), (glib+gtk), (jgroff), im(>141), (imlib), (jpeg), (libIDL), (libpng), mew(>1.95b37), ncftp, (netpbm), (rpm), rsync, ruby, socks5, (tamago), (texi2html), (w3m), wget, (xdu), perl5

呪文

甘いっ、甘すぎるぞ沢野口クン。 ただ漠然と呪文を憶えるだけでは単なる魔法オタクなのだ。 憶えた呪文をいかに効率的に使えるか、 それがプロとアマチュアの違いなのだ。 某胸なし魔道士もそんなことを言っていた気がするぞ。 だから、そんなにすごいボキャブラリは持ってないけどすごいプロというのは 世の中にそれなりに存在するぞよ。

まあ、あるに越したことはないし、 知らんといざという時に困る知識もあるのだが、 ただ、大抵はそれそのものの知識は無くても、 情報の調べかたさえ知ってれば済んだりするのがお仕事ですな。

さて…

テーブルのトータルサイズを最小にするには、UCS2 → ISO-2022 を 1 テーブルで やった方がいいのだが、例えば EUC-JP では C や K より J を優先する、 というような変換をするためには、UCS2 → JISX0208、 UCS2 → KSC、とかを別々にした方がいいね。その方が実装も楽だし。 UCS2 → ISO-2022 を 1 テーブルでやる方法だと、必然的に ISO-2022 系は 一つのエンコーディングスキーム系列として扱うことになるので、 あまりカッコ良くないな、という気がするのであった。

月野うさぎ

世の中どうせそんなもんだ(←暴言) 。 私は理系モノはだいたい平気だけど、 文系モノになると小学校で習う漢字 1000 字とかすら怪しいし、 そういう意味では大差ない。

ま、今時、そんなダサい就職試験やってるような企業の方が以下略だよな。 そりゃ、N 社の技術系みたいに算数(not 数学)の試験が出るのも それはそれでアレだけど、 あれは「技術屋としてよっぽど向かない君」を落すための試験だから、 まだ意味があるよ。

ちなみに A 社は基本的に面接だけで決まるのだが、 新卒中途とも謎の SPI テストみたいなのを受けさせられて、 これがよっぽど酷いと落ちるらしいぞよ。 いずれにしろ A 社は面接を通るのが非常に難しい。 まず一次面接で i 永さんにバシバシ落されるらしいぞよ(ぉ。 …そうえば、今は jin ちゃん面接(a.k.a. 社長面接)ってあるんだろうか。 今は社長乱立状態だから、そろそろ差別化を計って総帥とか名乗ればいいのに(ぉ。

…4F はいつになったら人が増えるんでしょうか(涙)。

平成12年10月31日(火曜日)

環境

とりあえずメールの読み書きできる環境を aoi に構築、 tengu を落して HDD を aoi につないで吸い出し中。

CVSup

COMPAT_FREEBSD にしたが、動かなくて悩む。 runtime error で落ちる。しかも libm3 。

該当部分のコードを読む(libm3/src/uid/POSIX/MachineIDPosix.m3):


…おいおい、勘弁してくれよ、 これじゃネットワークインターフェース 11 個で溢れるやんけ (buf の宣言を参照)。これだから PASCAL は(←えらい偏見)。 GENERIC カーネルだと ppp やら tun やら gif やらが認識されるので、 2 枚 NIC を挿してる aoi だと 12 個もインターフェースがあるのであった。

カーネルを再構築して解決。ちゃんと C で書いてよ…

…でも、何で list.ifc_len/BYTESIZE(struct_ifreq) が 11 超えるんだろうな。 謎だ。

…原因わかりました。

まず、SRC Modula-3 の問題点。 根本的に libm3 の上のパートは SIOCGIFCONF の叩き方が 間違ってます。昔は上記の方法で良かったようですが、 おそらく 4.3BSD → 4.4BSD のタイミングで SIOCGIFCONF の セマンティックが変更になっていて、もはや ifreq は固定サイズの レコードとはなっておらず、sockaddr の実際のサイズによって長さが 変化するようです。4.3BSD セマンティックの SIOCGIFCONF は、 COMPAT_43BSD が有効な時だけ、OSIOCGIFCONF として参照することができます。

で、NetBSD の問題点その 1 。上記の SIOCGIFCONF のセマンティックの変更に netintro(4) が追従してない。もっとも、これは 4.4BSD のせいだと思う。

NetBSD の問題点その 2 。SIOCGIFCONF のセマンティックを さらに最近変えた形跡がある。sys/net/if.c の 1.69 までは、 SIOCGIFCONF の ifc_len には 「実際にバッファへと格納したバイト数」が戻って来ていたのですが、 1.70 からは「全部の情報を格納するために充分なバイト数」が戻るように なりました。これによって、上のコードが動かなくなったわけですな。 この仕様自体は reasonable だと思うのですが、 こんな incompatible な変更をする時は、ちゃんと番号変えて欲しいなりよ…。

…さーて、どうしたもんでしょ…。