OpenWrtで
OCNIPv6につなごうと思ってゴソゴソやっていたら、n_hdlcがkernelに入っていなくてl2tpが
動かせなかった。
ないのならいれてしまえぃ、と思ったら、結構手間取ったので、メモ。
クロスコンパイル環境が必要。VMware上に作ってあったwww.centos.org - The Community ENTerprise Operating Systemに作る。OpenWrtのクロスコンパイル環境をDebianに構築してhello,worldするよ! - sdkt4aの日記やOpenWrt/BuildRoot - PukiWikiなどを参考にする。一度最新版のコードをチェックアウトしてきて、用意されているスクリプトを動かして必要なツール類を一通り揃えてしまうのが楽。
WLR-G54では最新版(kamikaze)は動かないようなので、whiterussianと呼ばれる1つ前のバージョンをチェックアウトする。
そして、一通りビルドしてみる。svn checkout https://svn.openwrt.org/openwrt/tags/whiterussian_0.9
bin/の下にあるopenwrt-~.trxが出来上がったfirmware。これをWLR-G54にインストールして、起動することを確認する。 make world
一度make worldすると、build_mipselというディレクトリが作成されている。build_mipsel/linux/Makefile にある DRIVERS-y += ~
にdrivers/char/n_hdlc.o
を追加する。
また、build_mipsel/linux/drivers/char/Makefile にあるobj-y += ~
とexport-objs
にn_hdlc.oを追加する。
これで再コンパイルすればよいのだが、make cleanしてしまうとbuild_mipselディレクトリが消されてしまう。rm build_mipsel/linux/vmlinux
してからmakeしなおすことで、書き換えたMakefileでkernelを作り直す。rm build_mipsel/linux/drivers/char/*.o
おそらく、target/linux/linux-2.4/patches/ にパッチを置けば、make buildworld一発で済むのだろうけど…。