NetBSD お遊び日記 (2003年11月)。
$Id: diary-200311.html,v 1.35 2006/06/24 08:54:26 isaki Exp $
≪ 2003年10月 | 2003年12月 ≫

2003/11/02

[MI/atabus] メール消化中。リハビリ中ともいうかも。 10月上旬の話だけど、IDE コントローラが12個くらいに分割されたらしい。 Linux とかはすでにこういう風になってるけど、あっちは dmesg 見ても カーネルコンフィグと対応がとれないからどれがこの機械にアタッチ されてるコントローラか分からないのよね。 Linux 屋さんは自分で作っててアホな構造だとは思わないのかしら。 FreeBSD はカーネルコンフィグに何を書いたら何が有効になるのか 慣れてないといまいち分からないところがあるし (device pass とか?)。 その点 NetBSD はいいよね、カーネルコンフィグに書いてて dmesg に出てこないデバイスは間違いなく存在してないし、 カーネルコンフィグと dmesg に出てくるデバイス名は対応とれてるし。 [続き]

[MI/vinum] メール消化中。10月上旬、vinum がいきなり commit されたので、各所からツッコミを受けまくってる模様。

[x68k/commit] メール消化中に隣で何気なくコンパイルして みたカスタムカーネルがコンパイルエラーになったので、直して commit しとく。 でも commit した後で、その前にフルビルドは成功してる (= GENERIC カーネルのコンパイルは成功してる) はずなことに気付いたので、 もう一度見てみると M68040 が定義されてない時だけエラーになってた。 ああやってもた。てことでもっかい commit。まだリハビリ中…。 [続き]


2003/11/03

[ibmnws] メール消化中。10月中旬、NetBSD/ibmnws が出来てる。 53番目だっけ。もう何がなんらや分からんなってくるなあ。 openblocks405 はディレクトリ掘ってあるだけだし。

[MI/etc] メール消化中。10月下旬、某所でパフォーマンス問題で 盛り上がり中。bind(2) するために空いてるポートを探すのにビットマップを 使っても所詮1枚8KBじゃん、とかそれって速いのかとかそういう話らしい。 英語読めないのでその辺までしか理解できてへんけど、 みんなよくいろんなこと思いつくわねー。

[etc] 溜ってるメール2800通。


2003/11/08

[MI/DNS] おうちネットワークは NetBSD が多いのでなんとなく IPv6 が有効になっていて、意味もなく NFS が IPv6 で動いてたりしている。 そのためおうち DNS サーバには AAAA レコードが書いてあったりするんだけど 外部コネクションは IPv4 のみなので、外のホスト名が AAAA で引けても no route to host になって、次に A を引いてから通信が始まるので ちっとも嬉しくない。それだけならまだしも時々問題になっている AAAA に返事をしないお馬鹿サーバに名前を聞きにいった日にゃ NetBSD なクライアントからは見えないページとかができてしまう。 最初から NetBSD クライアントの IPv6 無効にしたカーネルで 暮らしゃ万事 OK なんだけど、そこはただの意地というもので。 という状況を回避するにはどうすればよかんべか、という話をずいぶん前に 大学の研究室に後輩を訪ねた時に話し合っていい案をもらったんだけど どういう案だったか忘れてしまった。むう。 要するに、自分の持ってないゾーンへの AAAA リクエストはルートサーバに 聞きに行かず即座に NXDOMAIN (だっけ?) を返すっていうことで、 意外と簡単な解決方法だったはずなんだけどな。 IPv6 は、研究してた時は面白かった (というか元々ネットワークは分からなくて 嫌いだったのに IPv6 に惹かれてネットワークの道に迷いこんだ) けど、 一般ユーザになってみると IPv6 イラネ派になるね。

[MI/bind] あとついでにいうと、NetBSD 1.5 についてくる BIND 8.2.2-P7 (古っ!) は、時々レスポンスが急激に悪くなって、 面倒だからサーバにログインしてさっさと起動し直す。 nsd とかいうネームサーバを試してみたけど 外の名前を引く方法がすぐに分からなかったのであまり粘ることなく さっさと断念。 BIND 9.2.3 にしてみたけど BIND 8 から 9 に上げるとそれはそれで 全体的なレスポンスの悪さが体感できるし。 まあしばらくこれ (BIND 9.2.3) で様子見ることにしよう。


2003/11/09

[x68k/commit] [元ネタ] 今週もひたすら溜っているメールを消化中。 先週自分が commit した x68k/x68k/trap.c の commit メールに追い付いた。 そのすぐあと cl さんが他の m68k port でも同じ修正をしていた。 そんな気もちらっとはしたんだけど、何の変更でどうなったのか全然 追えてなかったから他の port まで見る余裕なかったのよね (まあ自分が見て分かるかという問題はあるけど)、スマソ & サンクスコ。

[x68k/etc] source-changes@ とか見てると、 新しい gcc はなんかいろいろ厳しくなったため これまでエラーにならなかったところがエラーになるのでみんなで 片っ端から直してるっぽい。 でも jdolecek さんの sys/arch/x68k/x68k/disksubr.c 1.23 と sys/arch/x68k/dev/fd.c 1.59 の変更はちょっと diff 見ただけだと 意味が分からんなあ。今週ももう時間切れなので一応書き残しておく。

[x68k/par] もう一つ。sys/arch/x68k/dev/par.c 1.21 に jdolecek さんが変数 len の使い方間違うとるがなってメモしてる。

[etc] 溜ってるメール 800通。


2003/11/11

[x68k/emul]
☆ チン   マチクタビレタ〜
                         マチクタビレタ〜
        ☆ チン  〃  ∧_∧   /‾‾‾‾‾‾‾‾‾‾‾
          ヽ ___\(\・∀・) < X68000 Emulator on Java の公開まだ〜
             \_/⊂ ⊂_ )   \___________
           /‾‾‾‾‾‾ /|
        |‾‾‾‾‾‾‾|  |

いや嘘です。楽しみにしているとか待ち遠しいという意味です。


2003/11/14

[etc] 全然 NetBSD じゃないけど、 こないだの野球の五輪予選。日本、台湾、韓国、中国の4チームによる 決勝リーグは、総当たりで上位2チームが五輪出場。 最後の1試合(日本-韓国戦)開始前で以下のような成績だった場合、 この日韓戦のスコアによって五輪に出場できる2チームを求めよ、 っていうプログラムは if 文の羅列しかないんかしら。

チーム得点失点
日本20+22-1
台湾21+8-14
韓国11+10-6
中国03+3-22
ただし成績は 1. 勝敗 2. 勝敗が同じなら総失点の少ないほう 3. 総失点が同じなら総得点の多いほう、で決定する。 ほんとは総得点も同じなら打率かなんかで決めるらしいけどここでは不定とする (このケースでは実は起きないから考えなくてもいい)。 引き分けた時の扱いが分からんけど、ここでは勝敗差ということで ノーカウントにしてみた。 ちなみに日本が出場できるのは、韓国戦に
1. 勝つ (か引き分ける)
2. 13失点以内で負ける
3. 14失点以上でも5点差以内で負ける
のいずれか、になったはず。

[FreeBSD/ext2fs] FreeBSD ってカーネルに options EXT2FS って書けば Linux の ext2fs が使えるようになるんだったのか、 知らなかった…。_|‾|○
/sbin に mount_ext2fs は存在してるのに実行したらエラーが出るから 使えないもんだとばっかり思ってた。

(数分後)

しまった (マウントしようとしたパーティションは) ext3fs だった…。_|‾|○


2003/11/15

[MI/windows] メール消化中。 Windows 用のデバイスドライバを NetBSD で動かせるってのはどうだろう、 みたいな話が出てる。Linux のカーネルモジュールがアタッチできるように なるほうが簡単なんではないんかな。 FreeBSD もやってないところを見ると無理なんかしら。

[MI/carp] メール消化中。Common Address Redundancy Protocol。 VRRP みたいなもん、らしい。

[etc] 2カ月ぶりにメールをすべて消化した。 ま、どうせ読んでもほとんど意味分からんし(汗。

[MI/etc] __NetBSD_Version__ (sys/sys/param.h) って どうも1桁おかしいなーとは思ってたんだけどよく見たら 16進数じゃなくて BCD だった。知らんかった。

[MI/acpi] acpi 関係のデバイスを有効にしたカーネルにすると com* とか fdc とかのレガシーデバイスが acpi の下に生える ことに今ごろ気付いた。けど、今までのとどう違うんじゃろ。

[MI/atabus] [元ネタ] IDE コントローラが分割されてから 初めて i386 なクライアントのカーネルを上げてみた。うちのは piixide だった。メジャーなほうだと思うので面白くないくらい無問題。

piixide0 at pci0 dev 31 function 1
piixide0: Intel 82801BA IDE Controller (ICH2) (rev. 0x02)
piixide0: bus-master DMA support present
piixide0: primary channel wired to compatibility mode
piixide0: primary channel interrupting at irq 14
atabus0 at piixide0 channel 0
piixide0: secondary channel wired to compatibility mode
piixide0: secondary channel interrupting at irq 15
atabus1 at piixide0 channel 1


2003/11/16

[MI/msdosfs] デジカメの写真を吸い上げようとしたら スマートメディア (msdos fs) 上のファイルのタイムスタンプが ずれてることに気付いた。 しばらく i386 のカーネル上げてない間 (5月に同じくデジカメ絡みで 1.6R にしてから 昨日 1.6ZF に上げるまで) に msdos fs にタイムゾーンサポートが ついて、デフォルトで msdos fs を GMT とみなすようになったらしい。 うちはカーネルだけ -current でユーザランドは 1.6 か 1.6.1 のまま なので、このままでは使えない。 でも今週はたまたま i386 も何気にビルドしてみてたので、 その跡地から rescue/mount_msdos を /sbin にもってきて

# mount -t msdos -o -t32400 /dev/wd2e /mnt
とかする。で、なんでオフセットが秒単位なん? 分単位でええんじゃないの? 毎回 bc せないかんやん。

[MI/fxp] なんやらよく分かってないけど、vnlock(って ファイルシステム方面の関数だよね?) 絡みで fxp0: device timeout が 出るらしい問題のパッチとかいうのを筒井さんがポストされてた。 全然読んでなくてキーワードだけ目についただけなんだけど。 会社のサーバで使ってた FreeBSD の fxp がこないだ device timeout 起こしたんで、今度見てみるか。 11月8日頃 tech-kern の Re: How can I help with hung vnlock()'ed clients? ていうメール。


2003/11/20

[MI/disklabel] FreeBSD の親切インストーラのおかげで これまで素の HDD を newfs したことがほとんどなくて (何度かは出来たことあるんだけど)毎回手順を忘れてて、 manpage 読んでも理解できてなくて、結局どうせ同じ ffs だしとか思いながら FreeBSD のインストーラでさくっと領域確保して newfs が終わったところで、NetBSD につなぎ直して パーティションタイプだけ書き換えて使ってた漏れは逝ってよしでつか。 てことで、今度こそ書き残しておこう。

# fdisk -u wd1
# disklabel -i -I wd1
# newfs wd1
でも fdisk は絶対 Linux の fdisk のほうが便利だと思う。


2003/11/21

[x68k/poffd] [元ネタ(2002/03/16)] /etc/rc.conf に poffd=YES て書くだけでよかったのか、 今ごろ見つけたよ…。_|‾|○

[etc] 立っているビット数を数えるアルゴリズム。 以前、68000 エミュレータを書いてみてた時に立ってるビットの数を数える 必要があって、その時は絶対にもっとちゃんとしたアルゴリズムがあるはずだとは 思ったけどバージョン1相当のことしか思いつかなかった。 バージョン2は (テーブル使うので) 良し悪しがあるような気がするので置いとくとして、 バージョン3にはショックを受けた。 4以降はもはや意味不明なので漏れの場合ショックの受けようがない。

(2006/06/24 追記: まとめたページがこちらにできた模様。 ビットを数える・探すアルゴリズム)


2003/11/23

[i386/crypto] i386 の Blowfish CBC のアセンブリコードには 80386 の未実装命令 (bswapl ?) を使っているので、GENERIC のように I386_CPU が定義されてる場合はアセンブリ版は使えないねっていうことらしい (src/sys/arch/i386/conf/files.i386,v 1.246)。 bswapl ってバイトスワップとかかしら。#ifdef I386_CPU して書いちゃった ほうが早いような気がせんでもないが (いや知らんけどね)。

[MI/resolv] resolv.conf が書き変わっても、ずーっと動いたまんまの プロセスには反映されなくていやーんなのかしらと思ってたら、やっぱ そうだったみたい (PR#23485)。

[x68k/sysinst] 超久しぶりに -current のインストーラを 試してみる。source-changes@ 見てた限りだとちょくちょくいろんな変更が 加わってるのねーと思ってたけど、実際使ってみると (1.6 と比べて) 確かに変わってて使いやすくなってるような気がする。 あ、でも一個 ftp するたびに Hit any key to continue でとまるのは頂けないなあ。

[MI/sysinst] とってきた binary set を展開してるところを せっかくなので 1.6 以降で導入された progress bar で見たいと思ったら gzip: unknown optionn -- l とか言われて、バーは出なかった。 これって x68k の ramdisk イメージに入れてる gzip が x_gzip (簡易版) でこれには -l オプションがないからなんだけど、だとすると (grep してみた限り) 14 port で同じ症状のはずなんだけど誰も sysinst して遊んでないってことかしら。まあ全部マイナーな port だけどさ。 [続き(2003/12/27)]

[x68k/sysinst] メモ。MAKEDEV all で mknod: reload: File exists が 出た。2回作ろうとしたってことかしらん。 こないだの MAKEDEV MI 化の影響もまだ見てないからなあ。

[x68k/sysinst] もいっこメモ。たぶん一番最後の OK を押すと file system full で死んだ。

The installation of NetBSD-1.6ZF is now complete.  The system should boot
 :
At a miminum, you should edit /etc/rc.donf to match your needs. See
/etc/defaults/rc.conf for the default values.



                  uid 0, pid 12, command sysinst, on /: file system full

/: write failed, file system is full
[1]   Segmentation fault
#

[x68k/MAKEDEV] etc/MAKEDEV.tmpl に typo を見つけたんだけど、 manpage の regen の仕方が分からないので commit できなひ...。 どこで make すりゃええんじゃろ。build log 読めば分かるかも知れんけど たいぎいのでまた今度...。


2003/11/24

[x68k/MAKEDEV] やりかた分かった (というか勘違いしてただけだけど) ので commit しておく。

[MI/mew] Mew (1.9x + xemacs) って、スパムのたぶん処理できない 言語でかかれたサブジェクトのメールにあたるとそっから先受信したメールを インデックスに表示してくれないんだよね。自分の場合メールは休みの日の 終わりに M-o することにしてて、最近はさすがにそのあと ls Mail/inbox とか もやってるんだけど、今週はなんか話の流れが分からんなーと思ってたら 案の定20通くらい取りこぼしてやがった。 しかもかなり重要なお知らせメールが埋もれてた。 あやうく某所にログインできなくなるところだった。 Mew 最悪。でも Mew 2.x (もう 3.x が出てるらしいけど) は一度挑戦して みたけど、なんか気持ち悪くて使う気になれなかった。 また wanderlust にでも挑戦してみようかな。 あ、NetBSD ってば X で日本語ちゃんと扱えるから Sylpheed でもいいかしら。 kinput2 とウィンドウのフォーカスがいまいちな気がするけどこれは どこ (kinput2 or qvwm or X or 設定) の問題だろう。 とにかくメール取りこぼすのは最悪。 マルチリンガル云々言う前に処理できない言語は黙ってスルーしてくれ。


2003/11/26

[MI/grub] あんま NetBSD じゃないけど、GRUB って改めてすごーい、 と思ったので。会社で、 プライマリ/マスターでインストールした Linux の入った HDD を プライマリ/スレーブに移したら案の定起動しなくなったって話 (ちゃんと grub.conf は書き換えたつもりだったんだけどな、 あとここではまだ関係ないけど /etc/fstab もね)。 隣にある FreeBSD マシンで grub-0.93 をソースからコンパイルして (この場合インストールはしなくていい)

% cd grub-0.93
% ./configure
% gmake
% su
# cat stage1/stage1 stage2/stage2 | dd of=/dev/fd0 bs=512
ってやって GRUB フロッピーを作る。 でこの FD を当のマシンに入れて起動、grub プロンプトが出たらあとは 手動で
grub> root (hd1,0)
grub> kernel (hd1,0)/vmlinuz root=/dev/hdb2
grub> boot
で見事起動した この例は2つ目のドライブ(プライマリ/マスターが存在している時の プライマリ/スレーブ) の1つ目のパーティションにある vmlinuz を 起動している例。 デバイス名とかの補完が効くあたりが非常に助かる。 あとなんと言ってもいろんな OS を起動できるあたりがいいね。 これ1麻衣で Linux だろうが *BSD だろうが起動できる。

しかし *BSD のようにブートローダがきれいに分離されたのが 当たり前の環境で育った私には、LILO みたくカーネルを置いてある セクタにまで依存しているブートローダを喜んで使ってる人種を見ると もう馬鹿か阿呆かと…(以下吉野家テンプレ)。

[MI/grub] 今更感はあるけど、面白くなってきたので GRUB で遊んでみる。

プライマリ/マスターの1つ目のパーティションにある Windows2000 を起動する方法。

grub> root (hd0,0)
grub> makeactive
grub> chainloader +1
grub> boot
プライマリ/マスターの2つ目のパーティションにある NetBSD を起動する方法。
grub> root (hd0,1a)
grub> chainloader +1
grub> boot
これは NetBSD パーティションの先頭に書いてあるブートローダを呼び出して いるが、今度は試しに直接カーネルを呼んでみる。
grub> root (hd0,1a)
grub> kernel --type=netbsd /netbsd
grub> boot
で一応カーネルは上がるけど root device, swap device, root fs type を尋ねられる。grub-0.93 ではまだこれらのパラメータを渡すことは できないらしい。うーん惜しい。


2003/11/27

[MI/grub] もしやと思ってインストーラ用の mdsetimage された カーネルを Linux ファイルシステムの上においといて

grub> root (hd1,0)
grub> kernel --type=netbsd /netbsd-INSTALL.gz
grub> boot
ってやると見事インストーラが起動した。GRUB マンセー!!


2003/11/29

[etc] 謎。あ、3つの投票が平行してんのか。

[x68k/emulator] 何故かまた 68000 エミュレータを書き始めてみる。


≪ 2003年10月 | 2003年12月 ≫
井崎のホームページへ戻る
isaki@NetBSD.org / isaki@x68k.net