LANの状態に応じて、回線を接続する。

母校(東北電子専門学校)が今年もTGSに出展しているということなので、冷かすためだけに1.5時間+待ち時間30分かけていってきました。
そして色々回ることなく、学校のブースだけを回って出てきました。所要時間10分のために30分+1200円でした。何をしてるんだ自分。

やはりというかなんというか、あまりにも人が多すぎていやんだったので、早く出てきたのは正解だったと自分では思っています。中の待ち時間も半端なかった。試遊5分のために40分も並ぶほど酔狂ではありません。

本題ですが、私はVaio Type ZにGentooを突っ込んで、色々持ち運んでいます(当然ながらHDDにはリカバリ領域すら残していません)。
外で利用する場合、emobileの接続端末を利用して、中で利用する場合でも無線LANを利用しているため、基本的に有線LANは利用していません。

で、Gentooは基本的にshutdownしたりしません。カーネル再構築後のrebootとかくらいなんですが、そのたびに、繋いでいない有線LANがDHCPの接続待ちが発生し、そこで分単位の待ち時間が発生してしまいます。
これは中々にしんどいため、前々からどうにかならないか、と思っていましたが、どうにかなりました。

emerge ethtool で、ethtoolをインストールします。
ちなみにloに対してethtoolを利用すると、以下のような結果になります。

derui@vaio_z test % sudo ethtool lo
Settings for lo:
	Link detected: yes

この「Link detected: 」の部分が、noになっている場合、回線が接続されていないことになります。

んで、Gentooでは、回線への接続は /etc/init.d/net.loへのシンボリックリンクを /etc/init.d/net.eth0 のようにして作成しますので、net.loを書き換えることで実現させました。

書き換え前後のdiffは以下の通り。

diff -c /home/derui/develop/my-ruby-sources/net.lo.orig /home/derui/develop/my-ruby-sources/net.lo
*** /home/derui/develop/my-ruby-sources/net.lo.orig	2009-09-26 15:29:47.189986014 +0900
--- /home/derui/develop/my-ruby-sources/net.lo	2009-09-26 15:29:38.461985991 +0900
***************
*** 746,751 ****
--- 746,757 ----
  		fi
  	fi
  
+ 	if [[ `ethtool ${iface} | grep "Link detected: no"` ]] ; then
+ 		einfo "Link not detected, and exit starting eth0"
+ 		eend 0
+ 		return 0
+ 	fi
+ 
  	einfo "Bringing up ${iface}"
  	eindent
  	for (( config_counter=0; config_counter<${#config[@]}; config_counter++ )); do

Diff finished.  Sat Sep 26 15:30:41 2009

とりあえずこれで上手くいきました。が、ppp0とかでも上手くいくかどうかは確認してません。

でもこれで起動時間が非常に短かくなりました。後は起動時に行っているintel/nvidiaのカード認識部分を何とかすれば、快適になるかと思います。