さくらVPSでPlan 9〜ネットワーク編〜

昨日はNICの認識に失敗するところまでしかできなかったが、@naobsdさんのおかげもあり、ネットワークが使えるようになった。これで本契約決定だなw

e1000ドライバには二つの問題があって、一つはcache line sizeが0と返ってくる点、もう一つはEEPROMのreadに失敗する点。前者はレジスタに32バイトになるように書き込んでみたが、CentOS上のlspci -vを見てもcache line sizeは表示されないので、ひょっとすると無視して0のままでよかったのかもしれない。ここは要チェック。

後者はPlan 9のドライバのせいではなく、QEMUe1000ドライバのバグが原因らしい。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のマウスのキャリブレーション方法がわかれば、快適なんだけど。。。