PerlのモジュールをCPANから導入するときに
いろいろ追加して、失敗した。と、思ったのは、pkgsrcとの整合性が……ちうことだったり……。
pkgsrcにあるやつ、pkgsrcにないやつ、pkgsrcよりも新しいバージョンを入れる必要があるやつ。で、分類した上で、うまく整合性がとれるように違うディレクトリにインストールするとか、していかないとダメなんじゃないだろうか……。
めんどくさー
みんなどうやってるんだろう
いろいろ追加して、失敗した。と、思ったのは、pkgsrcとの整合性が……ちうことだったり……。
pkgsrcにあるやつ、pkgsrcにないやつ、pkgsrcよりも新しいバージョンを入れる必要があるやつ。で、分類した上で、うまく整合性がとれるように違うディレクトリにインストールするとか、していかないとダメなんじゃないだろうか……。
めんどくさー
みんなどうやってるんだろう
mad-pから
Perlをもうひとつインストールする。
と、コメントを頂く。ありがとうございます。でも……、かなり、面倒ですね……。そして、けんとさんから、
pkgsrc にないモジュール、pkgsrc よりも新しいモジュールをインストールしたいときは、インストールしたいモジュールの pkgsrc を書いてしまうのが楽だと思われます。とくに CPAN モノの場合は pkgsrc を書くのはすごく簡単。
と……。えーと、ここで、「おお、なるほど、そうすればいいのか!」と、作り始めてしまうと、メールアドレスが一つ増えるというオチですか?(ぉ
まぁ、冗談はともかく、作ってしまうというのはたしかに楽かもしれません。あとは、俺Patchを管理する方法はあるけど、おれpkgsrcはどうやって作ればいいんだ?とか、そんな感じかな?
これが出来ないと、2月から、仕事がらみで面倒なことになるなぁ。と、思っていることがひとつ。
【会社VPN鯖】====インターネット=====【NetBSD家鯖】----【NotePC】
というネットワークで、NotePCと会社VPN鯖の間でIPsecによる通信がしたい。ということ。
このまえ、IRCでダメなんじゃない?と、言われて、やっぱそうだよなぁ。と、思っていたんだけど、IPSecパススルー機能のついたブロードバンドルーターで大丈夫だったりするらしい。
どういうことなの?と、調べてみると、NAT Traversal(RFC3489)というものを利用すれば、大丈夫ということらしい。本当に?っていうか、NetBSDではどうやればいいんだ?う~ん。要調査だな
とある方からタレコミがありました。NetBSDで問題なくできるようです。ただし、ipfを利用している場合には、ipf.confにいくつかの設定が必要です。必要なのは、proto 50と51を通す。UDPの500を通す。ということになります。
どうして、それらを通す必要があるのかについては、port139ケーキオフのページの一番下、「IPsec NAT Traversal」のPDFを見るといいのかも
しかし、なぜか、認証エラーが出ますよ(笑)。しかも、AirH"経由でも出るな。なんだかなぁ。ただ、これは、うちの会社の受け側の問題ぽいから、問い合わせてみるか……
引越をした頃から、tlp0が、tlp0: receive error: CRC errorなどとエラーを吐くようになっていて、どうも気になってしょうがなかったので、ヨドバシ・ドットコムから、コレガのCG-LAPCIGTとバッファローのギガビット対応スイッチングハブLSW-GT-8NSRを買ったわけです。
このNICは、RealTekのRTL8169Sという石をつかっているので、NetBSDだと、reとして、利用できるはずです。
で、今日、届いたので、さっそくNetBSDの鯖に取り付けたわけです。ところが、
Corega product 0xc107 (ethernet network, revision 0x10) at pci1 dev 9 function 0 not configured
と言われてしまって、使えないわけです。たぶん、石は対応しているので、このカードをその石のドライバが認識するようにしてやればいいはずだよな。と、いうことで、いろいろ調べたりしたわけです。
まずは、/sys/dev/pci/pcidevsを以下のように修正して、0xc107に名前をつけてあげるわけです。
*** /sys/dev/pci/pcidevs Wed May 4 14:49:57 2005 --- /sys/dev/pci/pcidevs.new Wed May 4 11:57:23 2005 *************** *** 1314,1319 **** --- 1314,1321 ---- /* Corega products */ product COREGA CB_TXD 0xa117 FEther CB-TXD 10/100 Ethernet product COREGA 2CB_TXD 0xa11e FEther II CB-TXD 10/100 Ethernet + product COREGA LAPCIGT 0xc107 CG-LAPCIGT + /* Corollary Products */ product COROLLARY CBUSII_PCIB 0x0014 \"C-Bus II\"-PCI Bridge
そして、awk -f devlist2h.awk < pcidevsで、pcidevs.hとpcidevs_data.hを生成します。このとき、生成されたPCI_PRODUCT_??という名前を後で使うので覚えておきます。
このカードの名前がができたわけで、この名前をreのドライバが認識できるよう修正してあげるわけです。
*** /sys/dev/pci/if_re_pci.c Wed May 4 14:49:56 2005 --- /sys/dev/pci/if_re_pci.c.new Wed May 4 12:46:02 2005 *************** *** 106,111 **** --- 106,113 ---- "RealTek 8169 Gigabit Ethernet" }, { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8169, RTK_HWREV_8169S, "RealTek 8169S Single-chip Gigabit Ethernet" }, + { PCI_VENDOR_COREGA, PCI_PRODUCT_COREGA_LAPCIGT, RTK_HWREV_8169S, + "Corega CG-LAPCIGT Gigabit Ethernet" }, { PCI_VENDOR_REALTEK, PCI_PRODUCT_REALTEK_RT8169, RTK_HWREV_8110S, "RealTek 8110S Single-chip Gigabit Ethernet" }, { 0, 0, 0, NULL }と、こんな感じで追加します。そして、カーネルを作り直して(
./build.sh kernel=GENERIC)、そのカーネルで起動するわけです。そうすると、re0 at pci1 dev 9 function 0: Corega CG-LAPCIGT Gigabit Ethernet re0: interrupting at irq 11 re0: Ethernet address 00:0a:79:69:e0:6b re0: using 256 tx descriptors ukphy1 at re0 phy 7: Generic IEEE 802.3u media interface ukphy1: RTL8169S/8110S 1000BASE-T media interface (OUI 0x00e04c, model 0x0011),rev. 0 ukphy1: 10baseT, 10baseT-FDX, 100baseTX, 100baseTX-FDX, 1000baseT, 1000baseT-FDX, auto
という感じで認識されるです。
ただ、よくわからかったのは、if_re_pci.cにこんな感じで追加していいのかどうか、だったりするわけで……。個人的には、問題なく使えているので、いいんですが、お作法として、ここでいいのかどうか?ってのが、よくわからないんですよね。そもそも、Cのソース読めないので(ぉ。
「send-prしておけばいいんじゃない?」というお告げがあったので、send-prしておこうか、と、とりあえず過去のPRを検索してみた。ありゃ?同様のパッチがすでにレポートされてるじゃないですか……。
NetBSD Problem Report #27102: Add request for Corega CG-LAPCIGT
とはいえ、ちょっと、放置されているみたいなので、おいらも、送っておくことにする。
NetBSD Problem Report #30173: Add request for Corega CG-LAPCIGT
文面が99%同じなのは、英語を考えるのが面倒なので、コピペしたから。おかげで、Venderまでunknownになっているdemsgになってしまっている……。(全部コピペかよ(笑))
ドライバが対応してなくてこまっていたけれど、とりあえず、調査しようか……と、ソースを開く。
えーと、このへんに、printfを入れてあげればいいのね……。えーと、16進数で出力した方がいいかんじってことは、%Xだな。と、考えつつ、おいらが足した行は
printf "HWREV:%X\n",hwrev;
だったりして、エラーが出てコンパイルできず、小一時間悩む。
自分がperlになじみすぎていることに気がつき、ちゃんと書き直し、作り直したカーネルで新マシンを起動。
dmesgを確認しながら、アレ?これって、正しく認識されているなぁ。とか、思ったら、8139SBの話だから、おれには関係ないなぁ。と、思っていた修正のHWREVと同じHWREVだったらしい。
ま、いいけど……。
さすがに、1年以上ほったらかしは、まずいでしょう。ということで、入れ替えすることに。NetBSDの年末の-currentで起動することを確認して、pkgをほぼ同じものをインストールして、あとは、設定ファイルを移行すれば何とかなるだろう……。と、はじめたものの……
はまったところ
1.bindが9になっていた。シリアルがYYYYMMDDhhmmだと、大きすぎると文句を言われる罠
2.postfixが動かない。master.cfで、smtpがコメントアウトされているらしい。
3.spamassassinの設定をTLECのuser_prefを使うようにしたら、何かとエラーを吐く罠
あー、そうだ。その影響で、nabe.hauN.orgではircdが動いてません。とりあえず、どうしようかなぁ。といった感じ。そもそも、ircdをコンパイルする気力がないので、もしかしたら、そのままかも……
そんなはまり初めでした
ネットワークがおかしいよ。と、家人から携帯にメールが届いたものの、外からsshで問題なくログインできるし、なにがおかしいのかな?といったところ。
ただ、家庭内のいろんな機器にpingが通じないから、hubか、NICだろうなぁ。と、思いながら、帰宅。
切り分けの結果、NICらしきことはわかったので、近所の山田に買いに行き(Corega CG-LAPCIGTR)、さくっと、交換。
しかし、考えてみれば、内蔵NICと一本しかないPCIにNICを刺して、ルータとして運用するというのは、内蔵NICが飛んでしまったときには、マザーを交換しないとダメなわけで……。まじめに何か考えた方がいいのだろうか……
家のルータにそこまで考えなくてもいい。というのが、答えか?