Vine Linux 1.1 のインストール |
山森丈範 YAMAMORI Takenori ●yamamori |
/etc以下の設定ファイルを修正せずに, 以下のようにして一時的にネットワークインターフェースを立ち上げることも できます.このとき,マシンをリブートする必要はありません.
ここでは,IPアドレスが192.168.1.1に設定されたマシンがすでにLAN内にあり, 自分のマシンを192.168.1.2に設定してネットワークをつなぐ方法を例にとります.
ネットワークインターフェースを立ち上げるには,ifconfig コマンドを使います.ifconfigの前に,使用しているEthernetカードに 相当するモジュールを modprobeコマンドでロードしなければなりません. たとえば,EtherExpressPro100の場合,モジュール名はeepro100 なので,以下のようにします.
# /sbin/modprobe eepro100 # /sbin/ifconfig eth0 192.168.1.2
さて,Linux以外のUNIXではこれだけでOKのはずですが, ここでなぜかpingも通りません.Linuxでは,ifconfig しただけでは,自分自身のインターフェースであっても ルーティングテーブルに登録されないのです (でも逆に,“ifconfig eth0 down”とした場合はrouteも 自動的に消えるようです).そこで,以下のように明示的にroute コマンドを実行します.
# /sbin/route add -net 192.168.1.0
なお、これは Vine 1.1 付属の kernel 2.0.36 の場合の話で、 kernel 2.2.x では、このような自明な route コマンドは、 実行する必要が無くなっています。
このrouteコマンドの文法もLinux独特で, 192.168.1.0のような明らかなネットワークアドレス(最後が0になっている) であっても,-netを省略できないのです (-netを省略すると-hostとみなされる).
結局,modprobe, ifconfig, routeと使って, インターフェースが立ち上がりました. これで,192.168.1.1⇔192.168.1.2の間で telnetでもftpでもできるでしょう.
自分のEthernetカードに対応するモジュール名がわかっている場合はいいのですが, それがわからない場合に自動的に見つけてロードするには どうすればいいのでしょうか. 以下のコマンドでうまく行くように思えるのですが, 実際にやってみると,最初のほうのモジュールでエラーになってしまってダメでした.
# /sbin/modprobe -t net \*
ネットワーク関係のモジュールのリストは以下のようにして見られますので, この中からそれらしい名前を見つけてロードする方法も考えられます.
# /sbin/modprobe -l -t net | less
しかし,インストーラ上では自動認識されているので, 何とか自動でやる方法はないのかと思い, 以下のようなスクリプトを書いてみました(ちょっと強引な方法ですが).
●Ethernetモジュールを見つけるスクリプト(probe-eth) -------------------------------------- #!/bin/sh cd /lib/modules/preferred/net for a in *.o do if /sbin/modprobe $a then if /sbin/ifconfig eth0 0.0.0.0 then echo $a loaded /sbin/ifconfig eth0 down exit 0 else /sbin/rmmod $a fi fi done echo module not found exit 1 --------------------------------------
このスクリプトは,まだEthernetのモジュールがまったくロードされていないとき のみ,うまく動作すると思います. スクリプトを実行してモジュールがロードされれば, あとは“ifconfig eth0 <IPアドレス>”で インターフェースが立ち上がります.
また,判明したモジュール名を以下のように /etc/conf.modulesに書いておけば, モジュールがまだロードされていない状態でも, ifconfig eth0を実行するときにkerneld が自動的にロードしてくれます.
● /etc/conf.modules に以下の行を追加 ---- alias eth0 eepro100 ----
To 「Vine Linux 1.1 のインストール」index