僕の備忘録(PC、UN*X、ネットワーク関連が中心)なんです。
自分の書いたところは適当(な時とか)に書き換えますので御了承を。
linux-test-0.5.1のlinux.imgを適当にいじる。
10MBぽっちで既に9割がた満杯のlinux.imgをデカくする方法を
思い付かなかったので、
適当なサイズのループバックデバイスをddとmkfsで作り、linux.imgの
中身を全部 cp -ap する。こちらもカーネルを別に指定してやれば、
qemuで無事起動できるようだ。
さて何をインストールしようか。やっぱりPlamoなパッケージを
流用するのが楽か...
既にあるPlamoのイメージをいじった方がいいかも。でも こちらの方が(まだ)小さく、起動が速い(ログインもないし、 ユーザはrootだけ。シングルユーザモードみたい)。
糞ルータはLAN側のルーティングテーブルに 静的に追記出来るようだった。追試は後で。
で、追試。最前のqemu環境下の仮想マシンから他のホストには
もちろん、ルータにもping。で応答あった。
親環境をゲートウェイに指定、設定するだけだ。
でも、仮想マシンからLANの外には出られない。
親環境から見えるgoogleのIP(この仮想マシンには
レゾルバがないみたい)にpingして
みても返事がない。
ルータのパケットフィルタリングかと思って
色々見たが、原因はつかめない。
LANのネットワークを一つしか設定できないあたりが敗因か?
そうなるとNAPTしか手がなさそうだ。
またリトライせむか。
もう少しqemuと遊ぶ。仮想マシンとの通信を試す。
ドキュメントにもう一度目を通して /dev/net/tun作成。
ついでqemu-ifupを/etcの下にコピーし、sudo設定(ここまでは
前にやってあった)。
qemuのダウンロードサイトにあったlinux-test-0.5.1 は、
(そのままでは動かないスクリプトで)起動はできても
eth0 が有効にならなかった。それらしいデバイスも
入ってない。で、中に入っているカーネルと
同じバージョンのソース(2.4.21)をringサーバから貰ってきて、
一般ユーザ権限で適当にmake menuconfig。
すべてスタティック(<*>)に設定し、SCSIやUSBなども
外す。久しぶりの make dep && make clean &&
make bzImage。800KB程になった arch/i386/boot/bzImageをlinux-test
の下に適当なファイル名でコピーする。
ping(1) だけでは要領を得ないので、telnet(1)を試す。
親環境でtelnetdを有効にして、以下仮想マシンの設定。
linux.img を適当なディレクトリにマウントし、
親環境(plamo)から /usr/bin/telnetをコピーする。
他に共有ライブラリとして libutil.so.1、
それに/etc/serviceも入れた(入れないと
ポート番号を与えずには動作しなくなる)。
で、qemu.shを少し書き換えて、次のようなスクリプトを
実行。
qemu -hda linux.img \ -kernel bzImage-2.4.21-mykernel \ -append "root=/dev/hda sb=0x220,5,1,5
コマンドプロンプトが出たので、eth0のアドレスを確認して 親環境のtun0 のアドレスにtelnetすると、無事に繋がった。 おまけに以下のように設定。これもよし。
sh-2.05b# route add -host $HOST_IP gw 172.20.0.1 \ dev eth0 sh-2.05b# ping -c 3 $HOST_IP ; Ctrl-C で止まらない sh-2.05b# telnet $HOST_IP
付言すれば、(書かれていない)試行錯誤を整理するとこうなる。筈である。
リンクはご自由にどうぞ。でもURLや内容が変った場合はあしからず。