NetBSD お遊び日記 (2003年1月)。
$Id: diary-200301.html,v 1.28 2003/02/03 03:43:56 isaki Exp $
≪ 2002年12月 | 2003年2月 ≫

2003/01/02

[etc] 年末ずっと風邪で死んでて今ごろ復活。

[etc/backup] 全然 NetBSD じゃないけど、年末に昔 MSX で作った プログラムを久々に動かしてみようと思ってディスクを dd で読んでみたら、 予想通りというか I/O エラー出まくりで、かろうじて一部に残骸は留めているものの めちゃくちゃなイメージが出来上がった。うーん、2年前に読んだ時はまだ 読めたんだよね。その時のイメージを残してあると思って安心してたら そのイメージがどこにも残ってなくてガーソ。 あーあ、もうどこにもバックアップとってないんだよねえ。 物理バックアップはとりませう。

とガカーリ(2ch風)しながら、別の i386 マシンのドライブに入れて 試したところあっさり(正しく)読み込めた。ドライブの相性なんかな。 よかったよかった。 今年は「FDD にしかないデータ」廃止年間。 あ、それいうと MD とかに移してなくてオーディオテープにしか残ってない 音楽データもまだいくつかあるんだったっけ。 あとはビデオテープは言うに及ばず...。 そういう意味じゃ今年は「磁気情報」廃止年間かな。 磁気でしか保存されてないアナログ/デジタル情報はすべて DVD 系に移行すべきか。 って DVD 系のハードを1つも持ってないんだけどね。

[etc/backup] そんな訳で (いや以前から少しは思ってたけど) おうちサーバもただの IDE のディスク1本に全ての情報を信頼しきったように 入れてて何のバックアップもとってないのがさすがに恐くなってきた。 RAID ボード買ってくるか software RAID でもいいから RAID1 でもしようかな。 [続き]


2003/01/03

[MI/cc1] x68k という激遅環境で何かをビルドしながら 別窓で ps ax とかすると、cc が起動した /usr/libexec/cc1 とかが まる見えなんだが、なんでこいつら /var/tmp に中間ファイル作ってんだろ。 うちの x68k の1台は /var/tmp は NFS だけど /tmp は bmd0 (ramdisk) なので /var/tmp より /tmp のほうが倍近く速い環境なので、 そういうのは /tmp に作ってもらわないと困るのよね。 てことでちょっと調べたところ make に TMPDIR=/tmp を渡せばいいらしい。


2003/01/04

[i386/aubktr] I/O データかどっかの安いキャプチャカードに ついてる unconfigured なデバイスって オーディオキャプチャ用のデバイスなのね。 今日 current-users に外人さんからドライバ書いたぜっていうメールが来てた。 さっそくコンパイルしてみる。

bktr0 at pci2 dev 3 function 0
bktr0: interrupting at irq 10
bktr0: Warning - card vendor 0x10fc (model 0x4030) unknown.
bktr0: Pinnacle/Miro TV,  tuner.
aubktr0 at pci2 dev 3 function 1: Brooktree product 0x0878 (rev 0x11)
aubktr0: interrupting at irq 10
audio1 at aubktr0: half duplex, mmap
ま、見たままだが。しかも用途なし。


2003/01/05

[x68k/hdc] 今日の fsck はそれっぽいところで panic してるらしい。 hdc_dataio_intr() が ltsleep() してコンテキストスイッチが 発生した先の tcp_input() で何か起きたってことか? 意味が分からないので db に落ちてもあまり役には立たないらしい...。

?(124f6c,1,487a0000,14b338,8) at 97b70:panic
?(14b33c,1,0) at 886b6:lockmgr
?(14b338,487a0000,0,1) at df668:uvm_fault
?(8,401076d,487a0024) at f614c:trap
?(15e0b0,38c340,c005,38c350,17) at 46:faultstkadj
?(38c300,28,6,1,70ca6c) at 9e6c:tcp_input
?(70ca74,70ca64,6) at 96e2:tcp6_input
?(38c300) at 2a7ec:ip6_input
?(70cac0,f5fa8,0,2,2) at 29e06:ip6intr
?(0,2,2,16cc20,1) at f5464:netintr
?(9,0,0) at f5fa2:trap
?(7051f8,0) at 5a8:Lsir1
?(15d2e0,116,136d92,1,0) at 8ed4a:ltsleep
?(371800,80) at 10a6d4:hdc_dataio_intr
?(371800,80) at 10a5a2:hdc_dataio
?(371800,2300,287000,386d00,37186c) at 10a382:hdc_intr
?(37186c,0,387000) at 10a020:hdc_scsipi_request
?(37186c) at 106184:scsipi_run_queue
?(387000,21009,386d00,385800,385d00) at 106362:scsipi_execute_xs
?(386d00,70cd24,6,29d0000,10000) at 1075a4:scsi_scsipi_cmd
?(386d00,70cd24,6,29d0000,10000,4,ea60,38f150,21009) at 10457c:scsipi_command
?(386d00,3858d0,38f150) at 108ff6:sdstart
?(38f150,38f150,10000) at 108df6:sdstrategy
?(108c7c,0,800,100000,1090a6) at 89dc6:physio
?(800,70cebc,0) at 109146:sdread
?(70ce68,10000,70ce80,b71d2,70ce68) at bb840:spec_read
 :

[x68k/netboot] また無謀にもネットワークブートできる ブートローダって、、とか思い始めた。 というのも、hdc の実験に使っている x68k のカーネルは Human68k の ftp.x で読み込むんだけど、これがまあ不安定で 1.5MB ほどのカーネルだと 5回に1回くらいしか読み込みに成功しない。0.7MB くらいのカーネルだと もう少し確率上がるんだけどねえ。


2003/01/08

[x68k/x] 先週末から x68k で xsrc なんぞをビルドしている。 昨日うちに帰った時には HDD の音がしてなかったので無事終わったのかな。 ディスプレイつけて見てないので分からないけど。

[MI/RAID] [元ネタ] とか思ってたら、 タイミングよく UNIX Magazine 1月号に坂下秀さんが I-O データの ハードウェア IDE RAID カードについて記事を書かれていた。 Solaris だと使えなかったとしか書いてないけど(笑)。 I-O データ 行って 調べてみたけど、これはいいねえ。 うちの場合、すでに存在している HDD のミラーリングをしたいので、 ちょうどいいかも。 最初はソフトウェア RAID をやってみようかと思ってた。というのも、 なにやら NetBSD にそんな機能があるみたいだし、それよりなにより うちのサーバはマザーボードがちょいお古なので 80GB の HDD (構築当時は 30GB) を使うために PCI-IDE ボードを買ってきて使っている。 故に、そこにもう1本 HDD 買ってきて 2本でソフトウェア RAID (RAID1) するのが 安上がりでそれなりに美しいかなとは思ってたんだけど、 こちらもタイミングよく BSD Magazine 14号に掲載されてるソフトウェア RAID の記事によると、どうやら newfs から始めないといけないっぽくて それだとすでに存在している 80GB HDD の他にもう2本 HDD を別に用意した ほうがよさげ (いや厳密には必要じゃなくても構築時の事故とか考えるとね) なので、ちょい迷ってたところ。

だけど R-IDE2-LE、実売3万円弱って結構それなりのお値段するのね。 安いっちゃあ安いんだろうけど、3万円出して買ってきた挙げ句に 某記事みたく、はい動きませんでした、では シャレにならんしね。Solaris と比べるのが間違いか?


2003/01/12

[MI/ddb(4)] ddb(4) の存在を知る...(汗。

[MI/acroread] 日本語 PDF 読むには pkgsrc から print/acroread と font/acroread-jpnfont を入れればいいらしい。

[amiga/autoconf] 去年の9月末に MI の autoconf 周りが変更になって x68k はそのあおりを受けてコンソールに何も表示されなくなってしまってた。 それを調べてる時に amiga/amiga/autoconf.c を見ると同じ構造してたので amiga もコンソール表示されなくなってるんちゃうかなーとぼんやり思ってたら 今週になって おんなじ修正 (rev 1.88, 1.89) が入ってた。やっぱし...。 しかしこれって ad hoc な修正なのでマジで真似されてもアレなんだけど。

[x68k/hdc] キタ━━(゜∀゜)━━ !!

hdc_sched()hdc_select()hdc_intr()hdc_dataio_intr()hdc_dmaintr()hdc_dataio_intr()
hdc_dmaintr()hdc_done()
Data modified on freelist: word 0 of object 0x3d1600 size 64 previous type free
(0x0 != 0xdeadbeef)
おそらくメモリを踏みつぶしたとかが原因だろうと思っていろいろ 調べようとしてたら、それとは全然非同期にそれっぽいメッセージが出た。 free したあとの領域を触ってるってことだよね。 たぶん書き込んでるんだろうね。 だから毎回違ういろんなところでエラーが出るとか言うことかしらん。


2003/01/13

[x68k/hdc] てかもっと基本的なこととして DATAOUT フェーズの処理が いまいちなだけのような気がしてきた。

[x68k/netboot] オリジナルセカンダリブートローダの遊び方。 boot は make 出来ているとして、

# dd if=/usr/mdec/fdboot_ustar of=/dev/fd0c bs=8k count=1 conv=sync,notrunc
# cp boot USTAR.volsize.4540
# tar cf a.tar USTAR.volsize.4540
# dd if=a.tar of=/dev/fd0c bs=512 seek=16
として作ったフロッピーから起動する。 tar で圧縮する時に ./ とかつけずに USTAR から始めないといけない。

[x68k/netboot] とりあえずいつも通り printf() だけの空の 関数ばっかりでっちあげて、MI なところから怒られるあたりまで到達。

NetBSD/x68k Netboot, Revision 0.1
       (isaki@erika.local, Mon Jan 13 21:33:59 JST 2003)

Press return to boot now, any other key for boot menu
booting ne0:netbsd - starting in 0 seconds.
Starting ne0:netbsd, flags 0x0
ne_match
netboot: no interfaces left untried

[Hit key to reboot]
普通の人なら出来たとは口が裂けても言わないのだが、 意味が分かってない私にはコンパイル通してここまで来ただけでかなりの達成感(ぉ。

[x68k/netboot] まずは ne_match を呼ぶようなのでそっから 作ればいいらしい。...やはりいきなり挫折の予感。

[x68k/netboot] arch/i386/stand/lib/netif あたりから NE2000 用の コードを拝借。inb, outb とかはマクロで逃げるとしても delay() って どうやって実装しよう。本物の x68k カーネルだと、MPU 種別ごとにクロック数を 測定してそっから計算した回数のループを回ってるような感じなので、 ブートローダで使うにはちょっと大がかりすぎな気がする。 やっぱ x68k なら timer C 叩くってのが王道なのかしら。 Human68k ですら MFP 叩いたことないので、ちょっとどきどき。

[x68k/netboot] とりあえずのところ、精度悪すぎだけど IOCS_ONTIME() で誤魔化しとくか。


2003/01/17

[etc/mount_ustar] って誰か作んないかなー。いらないのかな?


2003/01/18

[x68k/netboot] delay() は IOCS_ONTIME() で誤魔化した。 チップを見つけて初期化するまでは出来たらしい。


2003/01/19

[MI/nathanw_sa] nathanw_sa ブランチがマージされた。 NetBSD でも pthread が使えるらしい。さっそく cvs update して build してみるけど、texinfo でとまる(toolchain/19898)。 うう、texinfo なんかいらないのに...。早く直してけれー。

[MI/nathanw_sa] toolchain/19898 は問題の cp だけコメントアウト すると動いた。けどこれってブートストラップのほうだから、本チャンの texinfo でも同じエラーでとまる予感...。

[MI/nathanw_sa] texinfo は lukem さんがさくっと直してくれた。 けど今度は lkm/vfs/ufs/lfs (ってこのディレクトリ名はシャレか?) あたりで とまる。<sys/sa.h> を足したら動いたけど、なんで苦情が出てないんだろ。 x68k だけか?

[x68k/netboot] どーやってカニさんチップとお話しよう..と 思って散々データシートを見渡したりウェブで調べたりしたけど、 結局何も考えずに inb, outb とかを x68k 用に定義し直して あげるだけでお話できてるみたい。ちゃんと自分の MAC アドレスが 取得できてる。おまけにちゃんと RARP パケットも投げてるみたい。 なーんだ、お話できてるかどうかが分からずにはまっていただけだったのか。 ってもしかして netboot は動いてるけど rarpd がないから返事が返って こないだけの話か...。

[x68k/netboot] いやさすがに違うか。 ソースアドレスが 00:00:00:00:00:00 のままだ。

[MI/rarpd] ちなみに3秒で分かる rarpd の設定方法 。google ってすごーい。

[MI/nathanw_sa] って最後に flist でこけるし。

[x68k/netboot] bootp とか RARP を投げることは出来ていて、 サーバも返事をしてるのに、それを受けとってくれない。 CURR が上がらないからパケットが届いていないことになっている。 こっから先はどうやって調べたらいいもんだろうか...。

[x68k/netboot] 違った..。受信したパケットの長さをレジスタから 読み込む時のバイトオーダが逆なのが原因だった。RTL8019AS は (エンディアンをひっくり返す機能が用意されているが未実装なので) 常にリトルエンディアンなので i386 だから動いてたのねー。 le16toh() 入れるだけで自分にアドレスつけるところまで出来た。 すげー、万歳。でも nfs は出来ない。なんでだろ。


2003/01/26

[x68k/build] 先週から大物の commit が続いててなかなか x68k の build に成功しない。boot_ufs が壊れてるんだけど、 コンパイル通るように直しても、実行してみるとそれよりも全然手前で エラーが出る。はてどうしたもんだか。

[x68k/netboot] NE2000 の受信バッファ(ウィンドウ?)の 計算がおかしかったので、短いパケットなら受け取れたけど長いパケットが 受け取れなかったってことらしい。そこを直したら動いた。 x68k で network boot 万歳。 しかし i386 の NE2000 ネットワークブートはほんとに動いてるのか?


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