fc2ブログ
vsLinux は Linux の新しいデストリビューションです。 うそです。

ここは私の linux やネットワーク周りに関する知識の備忘録です。
Binary 2.0
新しい時代がやってくる
http://namazu.org/~satoru/pub/b2con2005/


# どうしたもんか
スポンサーサイト



Setup! coLinux
linux専用virtual machineといった体のcoLinuxをセットアップしてみました。これ、面白い。SandBoxに最適。

HowTo Setup:
基本的にはこのページ参考でOK。
http://www.geocities.jp/error_storm/
すばらしい解説です。

ここでは少し分かりづらい


1. default.colinux.xmlの書き換え
2. coLinuxを既存のネットワークに参加させる方法
3. coLinuxをWindowsサービス化する方法



をメモっときます。

1. default.colinux.xmlの書き換え


これはdebianのイメージのロケーションと、ネットワークの設定が書ければとりあえずまともに動きます。イメージはSourceForgeから.bz2形式でダウンロードしてきて解凍したもの。ちなみに、rootのpassが'root'であることに気付くのに時間かかった(:-<)


f:\coLinux\debian.1gb


がイメージのパスだとすると、default.colinux.xmlから該当する文を

<block_device index="0" path="\DosDevices\F:\coLinux\Debian.1gb" >

と書き換えればOK。

もひとつはネットワークの設定。これは2.項で必要になってくるんですが、TAPを利用してネットワークに参加させる場合

<network index="0" name="TAP" type="tap" />

networkタグを上記のようにします。詳細は2.項にて。


2. 既存のネットワークに参加させる方法


結構苦労した。
coLinuxインストール時にTAP-win32も一緒にインストールしておきます。XP限定ですが、win2kでもフリーのツール使えば出来るそうです


ToDo on Windows:
1. coLinuxを起動しておく
2. [ネットワーク接続]を開き、TAPを使用している接続を"TAP"に名前変更
3. [ネットワーク接続]内で、現在のPCがネットワーク接続に利用している接続とTAPを、ctrl押しながら両方選択する。その状態でコンテキストメニューから[ブリッジ接続]を選択
4. ブリッジ接続のプロパティからネットワークの設定(gatewayやらDNSやら)をPCの接続として書き直す
5. default.colinux.xmlを開き、1.項で示したnetworkタグを書く


[ネットワーク接続]の設定後。
coLinuxSetup

ここまでがwindows上で行う設定。
終わったらcoLinux再起動して、今度はlinuxの設定を行う。

ToDo on coLinux:
1. /etc/network/interfacesを書き換え。新たにネットワーク内のコンピュータとして動作するのに必要な設定を書く(後述)
2. /etc/hostsにもネットワークでのIP書く。
3. /etc/resolv.confにDNSを書く。
4. #/etc/init.d/network restart


/etc/network/interfacesはこう。

# cat interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 192.168.1.hoge
gateway 192.168.1.hoge
netmask 255.255.255.0
bloadcast 192.168.1.255

gatewayはネットワーク内のゲートウェイです。ちゃんとブリッジ接続してないとこれが出来ないです。TAPだけでネットワークにつなげようとすると、ホストPCがルータとして動いてました。
あと拾ってきたdebianにviが入ってなくて…ファイル編集できなかったので、これリダイレクトやらperlの置換やら使って書きました。どうしろと…なぜかperlは入ってたという。
これでネットワークに繋がった。やったぜ。apt-getやっと出来る。



3. coLinuxをWindowsサービス化する方法


これ感動した。
Windowsでサービス化すればcoLinuxを直接exeで起動せずともwindowsのスタンドアロンデーモンとして起動してくれます。すげー。
coLinuxに標準でついてくるコンソールって、DOS窓まで立ち上がる上にrepaintがうまく機能してないので、はっきり言って使えません。だから普段はputtyで繋ぐことになるので、coLinuxの窓はとても邪魔。Windowsのサービスとして起動しておけば、バックグラウンドでcoLinuxが走ってる状態になるので、繋ぐときもputty起動するだけでOK。(もちろん、colinux内でsshサーバ立てておく必要あり)
サービス化は至って簡単。コマンドプロンプトから

F:\coLinux>>colinux-daemon.exe -c "f:\coLinux\default.colinux.xml" --install-service

で終了。xmlはフルパスで渡します。
実際にサービスとして起動するのは、コントロールパネルから[管理ツール]-[サービス]内にあるCooperative Linuxの[プロパティ]から起動します。
自動起動(スタートアップ)にしたければ、このプロパティの項目で自動を選択しておけばOK。
もしもしrunlevel?
linuxの起動プロセスがようやく理解出来た気がする。

linuxには幾つかの処理モードがあって、これをランレベル(run level)と呼ぶ。実際に利用されるのは6つくらい。









lev.details
0shutdown mode
1single user mode (root mode)
2multi user mode without Network
3multi user mode ( Text login )
4N/A
5multi user mode ( Graphical login )
6reboot mode

ちょっと英語で気取ってみました。ランレベルはinitっていうbinが管理してて、例えばシステム起動時画面をよく見ていると「INIT: ランレベルを3に移行しています」とかいうメッセージが英語で出てます。
ランレベル0、6はshutdownやrebootする時に移行するモード。起動しているプロセスを停止する。4は普通使われません。
ランレベル3というのは、テキストでlinuxが起動するモード。5というのはグラフィカルな、つまりいきなりX-Windowからログインするモード。普段は3か5から起動するようにしておけばOK。

普段どのランレベルから起動するのか、また各モード起動時にはどんなプロセスを起動するのか、を全体的にまとめてある設定ファイルがこれ。


/etc/inittab



inittabを見ると、

id:3:initdefault:

という行が最初にあります。これがdefaultの起動レベル(ここでは3)。さらに

l3:3:wait:/etc/rc3.d/

という行で、runlevelが3のときの起動ディレクトリが指定されています。

/etc/rc3.d/ を ls -F してみると、

# ls -F
K20inetd@ S10sysklogd@ S20makedev@ S89cron@
K20ssh@ S11klogd@ S20xinetd@ S99rmnologin@

こんなシンボリックリンクファイルが並んでいます。
このディレクトリは特別な意味を持っていて、該当するランレベルに移行した際、これらのリンク先が呼び出されます。


S(or K) + number + bin


という名前については、頭文字のSは起動(start)、Kは終了(kill)を意味し、続く数字は起動する優先順位を示しています。
これらシンボリックリンクのリンク先は/etc/init.dのbinたちとなっています。

んで、最初に示した表みたいにランレベルの使い分けがちゃんとされているかっていうとそうでもないです。Xを入れたらランレベル2なのに自動でX立ち上がるようになってたり。
使い分け自体は自分でするものらしい。デフォルトの起動レベルを3にして、rc3.dのシンボリックリンクをKに変えたりしてちまちまいじっています。



現在のランレベルを知りたいときは、runlevelコマンドを使います。

# /sbin/runlevel
N 3

3というのが現在のレベル、Nは以前の(変更する前の)ランレベルを表します。ずっと3だったからN/A。

また一時的にランレベルを変更するのであれば、root権限でtelinitコマンド。

# telinit 5

これで5に移行します。
この記事のタイトルはこのコマンドからとったりした。
apt設定
そして今日はとうとう linuxから更新(;;)gnome、日本語、ナガカッタ

aptの設定で四苦八苦しました。
aptはパッケージ管理ユーティリティで、外からパッケージを落としてくれるのはもちろん、他のパッケージとの依存関係を調べてくれて必要なものまとめてインストールしてくれます。debianが初めて使うlinuxなのであんまりこの恩恵を体感してない気がする。

aptのサーバ(パッケージ落としてくるところ)の設定は

/etc/apt/sources.list

このファイルで行います。世界中にdebianのミラーサーバがあるので、適当な所(日本なら日本のミラーかと)に設定変更し、効率化を謀りましょう。
現在の私の設定はこんな。


roots:/etc/apt# cat sources.list
deb http://ring.fujixerox.co.jp/pub/linux/debian/debian stable main contrib non-free
deb http://ring.fujixerox.co.jp/pub/linux/debian/debian-non-US stable/non-US main contrib non-free
deb http://ring.fujixerox.co.jp/pub/linux/debian/debian-jp stable-jp main contrib non-free

deb http://ring.fujixerox.co.jp/pub/linux/debian/debian proposed-updates main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free

deb http://ring.fujixerox.co.jp/pub/linux/debian/debian sarge main contrib non-free
deb http://ring.fujixerox.co.jp/pub/linux/debian/debian-non-US sarge/non-US main contrib non-free

そのまんまコピペ出来るしあわせ。
これを保存し、

# apt-get update

でデータベース更新して設定完了。あとは好きなようにapt-get! apt-get!

以下手順の詳細です。
まずサーバの探し方は、apt-spyやwget、netselectってパッケージ使います。各ミラーサーバにping送って速度測るらしいよ。主にこのnetselectに詳しいページを参考にしました。
とりあえず日本ではリングサーバが使えるようなのでfujixeroxのdebianミラーを使うことにしました。各サーバごとにsources.listのフォーマットが用意してあるのでこれを参考に設定(fujixeroxのフォーマット)。先に示したsources.listの前半部はこれの書き写しです。

但し、上のフォーマットでは設定が全てstable中心になっていました。
debian使うなら知ってて当然ですが、debianにはstabletestingunstableっていうディストリビューションから成り立っていて、現在

unstable -- "sid"
testing -- "sarge"
stable -- "woody"

と名前がついています。私、このこと見落としてて、ずっとstable(woody)のままでapt-getしてたのです。
(カーネルのソースが見付からなかったのは、sargeのカーネル使いながらそのソースをwoodyで探してたのが原因だったようです。)

さて、というわけでsources.listにsargeを加える事にしました。このサイト(このサイトは日本語化など、色々な点でお世話になっています)を参考にして以下の二行を追加。


deb http://ring.fujixerox.co.jp/pub/linux/debian/debian sarge main contrib non-free
deb http://ring.fujixerox.co.jp/pub/linux/debian/debian-non-US sarge/non-US main contrib non-free

こうしてなんとか設定ファイルを書き換えたわけです。
ここで注意しておくことは、この二行ではディストリビューションを"sarge"と指定しているのに対し、先のfujixeroxのフォーマットでは"stable"と書いていることです。ゆくゆくsargeがstableになった場合(てか5/30/2005になるらしい)内容が重複してしまいます。まあしばらくsargeで様子見するのでOKかと…

最後に apt-get update とは、パッケージのリストをサーバからダウンロードしておく命令です。このリストをカタログの様に眺め、欲しいパッケージを apt-get で注文するような形をとるので、updateして最新のものにしておく必要があるわけです。
aptにも色々ファミリーがいるので、今度その話も書きたいと思います。
USBメモリをマウント
えっと、これ簡単でした…

USBフラッシュメモリを使うには

usbメモリ+linux でぐぐったらトップにヒット(@@;
このページに従うと、

# dmesg

でデバイス関係の情報を確認出来ました。
とりあえずスティック挿す。ぷすっ
…おーすげー、ほんとに検出されてるよ! USBメモリはSCSIデバイスとして認識されるようです。
そして間髪いれずマウント…いまいちマウントという概念も把握できてなかったんだけど今回のでがっちりキャッチ。
上記ページでは/dev/sda1をマウントしてるけど、エラー出てうまくいかなかった。debian公式ページ見ると、どうもdebianではscsiがsdaから始まるらしい。

# mount -t vfat /dev/sda /mnt/usbfm/

vfat形式で/dev/sdaを/mnt/usbfm/として読めるように設定するってこと。
どれどれ、とおそるおそる/mnt/usbfm/でls
出来ちゃったよ…こんな簡単にデータ読めるとは…(@@