さくらVPSでPlan 9〜ネットワーク編〜
昨日はNICの認識に失敗するところまでしかできなかったが、@naobsdさんのおかげもあり、ネットワークが使えるようになった。これで本契約決定だなw
e1000ドライバには二つの問題があって、一つはcache line sizeが0と返ってくる点、もう一つはEEPROMのreadに失敗する点。前者はレジスタに32バイトになるように書き込んでみたが、CentOS上のlspci -vを見てもcache line sizeは表示されないので、ひょっとすると無視して0のままでよかったのかもしれない。ここは要チェック。
後者はPlan 9のドライバのせいではなく、QEMUのe1000ドライバのバグが原因らしい。NetBSDの開発者(@tsutsuiiさん)がバグレポートしているので、たぶんNetBSDでも同じ問題に遭遇するんじゃないかな。ということで、これを回避するために、etherigbe.cのat93c46r関数の
snprint(rop, sizeof(rop), "S :%dDCc;", bits+3);
を
snprint(rop, sizeof(rop), "CcS :%dDCc;", bits+3);
とすればOK。"Cc"を追加することでSKクロック入力信号をassert/negateされて、EEPROMの内部状態がクリアされるみたい。本来はSKとは関係なく、チップセレクト信号がassertされればいいらしい。パッチはこちら。
これでNICもちゃんと認識できるようになるので、あとは静的IPの設定をすれば終了。
まず、/bin/termrcに
ip/ipconfig -g <gw address> ether /net/ether0 <ip address> <netmask>
と書く。さらにDNSの設定をするために、/lib/ndb/localに次のような記述を追加する。
ipnet=sakura ip=<network address> ipmask=<netmask> dns=<name server> ipgw=<gw address>
あとはTightVNCのマウスのキャリブレーション方法がわかれば、快適なんだけど。。。