OpenSolaris の nwam (NetWork Auto Magic) が嫌いです。
crossbow 使って network を構成する場合は、nwam は使わないという意識を持ったほうが良いかと思う。
で、嫌いになるのに理由は必要か? というのもアレなので、nwam をいやいや調べてみることにしましたw
nwam は、起動時に必ず plumb 可能な network interface を掻き集め /etc/nwam/llp ファイルにそれらを設定します。これらの情報は dladm の datalink.conf あたりからひっぱってくるのかな?
plumb したくない interface を # で打ち消しても、次回起動時に新しくそれらが追加されます。
nwam の source をちらっと見た限りでは、/etc/nwam/llp の parse を行っているのは、ここ。
http://src.opensolaris.org/source/xref/nwam/nwam1/usr/src/cmd/cmd-inet/lib/nwamd/llp.c
143 int
144 parse_llp_config(void)
145 {
146 static const char STATICSTR[] = "static";
147 static const char DHCP[] = "dhcp";
148 static const char IPV6[] = "ipv6";
149 static const char NOIPV6[] = "noipv6";
150 static const char PRIORITY[] = "priority";
interface に対して設定できる条件は、上記のものだけとなるため plumb させたくない場合は、llp での制御は絶望的ですね。
そこで、もう少ししらべてみると、nwam には interface の動作状況に応じて script を kick できる機能があることを知りマスタ。profile ってやつだそうです。
http://opensolaris.org/os/project/nwam/phase0/nwamd_1m
これを使って、余計な interface が up されたのを機に、実行される check-conditions script に、unplumb する処理をぶち込みます。
例として vboxnet0 , vboxnic0 なる vnic を unplumb するには、下記のようにします。
# mkdir /etc/nwam/ulpこれで、nwam により interface が plumb されたのち unplumb されるので見た目的には、余計な interface が見えなくなります。
# vi /etc/nwam/ulp/check-conditions
--
#!/bin/sh
ifconfig vboxnet0 unplumb
ifconfig vboxnic0 unplumb
exit 0
--
# chmod +x /etc/nwam/ulp/check-conditions
めでたしめでたしといきたいところですが、nwam は上記の unplumb した interface の情報を保持したまま動作を続けるので、たとえば、messages file に、
May 12 11:47:15 macbook nwamd[46]: [ID 903261 daemon.error] get_ifflags: icfg_get_flags vboxnet0 af 2: No such device or address
May 12 11:47:15 macbook nwamd[46]: [ID 903261 daemon.error] get_ifflags: icfg_get_flags vboxnic0 af 2: No such device or address
などというものを出力するようになります。
あと、gnome の panel にでている network アイコンを右クリックしてみてもそれがわかるかと思います。
当然ですね。nwam が提供する機能で unplumb してるわけではなく、script の中でいきなり unplumb しているわけですから。
これは美しくないなぁ。
nwam で、よりカンタンに network への接続をおこなうことが目的なはずなのに手順が複雑化しています。network interface の構成をオレ様色に染めるのであれば、nwam を止めるのが美しいかと・・・
OpenSolaris (not SXCE)で crossbow 使いを目指すなら、まず、先にこの設定ですか。
(SXCE は、すでにこの状態)
# svcadm disable physical:nwam
# svcadm enable physical:default
そして、特上ロース一皿追加です。
