綾小路龍之介の素人思考

Tech > coLinuxの導入

この節ではcoLinuxの導入を行う。導入したマシンはwindows 2000の動いているLibretto L1で、VMware playerを動かすには非力なマシンである。VMware playerはハードウェアエミュレーションであるために、PC-AT互換機上で動くOSなら何でも動くが、結構重量級。どうにかして、Linuxを導入するために色々とやってきたが、ここにきてかなりクールなソリューションに行き着いた気がする。coLinuxはかなり前から人気が出てきているandLinuxの基盤技術を提供しているものらしい。andLinuxはcoLinux+Ubuntuだが、ここでは、coLinux+Debianにする。


目次


1.1 Libretto L1

とりあえず最新のドライバとかをインストールしておく。dynabook.com | サポート情報 | 検索結果


1.2 VMware vs cygwin vs coLinux

導入の目的としては、「とにかく非力なコンピュータ上でどうやってLinux用に書かれたプログラムを走らせるか」である。ハードとの距離でいえば、もちろん直にインストールするのが最短だと思うが、windows上で動くアプリケーションと同時にlinux上で動くプログラムを使わねばならないという要請があった場合にどうするか。その場合は、VMware player, cygwin, coLinuxの3つの方法があると思うのだけれど、それぞれに欠点と利点がある。アプリケーションのスピードという観点からすれば、VMware playerはハードウェアエミュレーションであるために(実際のマシン - windows - windows API - windows仮想マシンアプリケーション - Linux - アプリケーション)最も効率が悪い、cygwinはwindows APIエミュレーションであるために(実際のマシン - windows - windows API - cygwin.sys - cygwinアプリケーション)2番目に効率が悪い。coLinuxはカーネルエミュレーションであるために(実際のマシン - windows - colinux - linuxアプリケーション)なので最も効率がよい。括弧のなかは嘘。このあたりはCoLinuxインストール導入編 - Silicon Linux Wikiに詳しい。

  1. Tips - Debian GNU/Linux スレッドテンプレ
  2. D.3. Unix/Linux システムからの Debian GNU/Linux のインストール

1.3 etch CDからのセットアップ

今回は1からセットアップする。つまり、coLinux本家から提供されているイメージファイルを使わない。必要なもを下に上げる。

  1. windows 2000の動いているマシン
  2. coLinux本体
  3. debian netinstaller
  4. debian netinstaller に含まれるinitrd.gz
  5. qemu

手順的には、colinuxのセットアップ、qemuでディスクイメージの作成、coLinux上にdebianをインストールのための設定ファイルの作成、debianのインストーラを起動、インストーラからAlt+F2で仮想コンソールを移動、移動先の仮想コンソールからログインしてインストーラが作った*nix上でdebianをクロスインストール(debootstrap)、システムの設定、である。気づかねばならない重要な視点は、debian netinstallerはdebianをインストールするためのかませ犬でしかないことに気づくこと。このことに対する重要な示唆がD.3. Unix/Linux システムからの Debian GNU/Linux のインストールcoLinuxでDebian etchを使うを比べてみるとよくわかる。

つまり、あえてdebian installerを使わずとも、クロスインストール出来るようなLinux環境があればよいということだ。つまり、クロスインストールするのに必要な最低限のLinux環境を作るためにdebian instalerを使用したということなのである。ゆえに、いくつかのイメージがcoLinux本家から手に入るので、これを使ってcoLinuxを起動し、其の上でクロスインストールすることもOKなのである。

ただし、debootstrapはこれを導入するためにarとwgetとが使えなければいけない。残念なことに、coLinuxに添付されているinitrd.gzに含まれるbusyboxはarコマンドが無い。そんな訳で、非常に残念なことに、余分なものが必要になる。とにかく、arとwgetが使えるinitrd.gzがあればいいのだが。


1.4 イメージファイルからのセットアップ

ここでは、coLinux本家が提供しているetchイメージからdebootstrapをつかってインストールを行う。まずはダウンロードしたetchのイメージからcoLinuxを起動。

> d:
> cd d:\coLinux
> del etch.img swap.img etch.conf
> "d:\bin\qemu-0.9.1-windows\qemu-img.exe" create -f raw etch.img 1G
> "d:\bin\qemu-0.9.1-windows\qemu-img.exe" create -f raw swap.img 128M 
> echo kernel="c:\Program Files\coLinux\vmlinux"> etch.conf
> echo cobd0="d:\coLinux\Debian-4.0r0-etch.ext3.1gb\Debian-4.0r0-etch.ext3.1gb">> etch.conf
> echo cobd1="d:\coLinux\swap.img">> etch.conf
> echo cobd2="d:\coLinux\etch.img">> etch.conf
> echo cofs0="d:\coLinux\">> etch.conf
> echo root=/dev/cobd0>> etch.conf
> echo vga=nomal>> etch.conf
> echo ramdisk_size=1024>> etch.conf
> echo rw>> etch.conf
> echo -->> etch.conf
> echo initrd="c:\Program Files\coLinux\initrd.gz">> etch.conf
> echo mem=64>> etch.conf
> echo eth0=tuntap,"TAP">> etch.conf
> "c:\Program Files\coLinux\colinux-daemon.exe" @etch.conf

で、Cooporative Linux Consoleが立ち上がる。username:root、passwd:rootでログインする。セットアップ用のシェルスクリプトを走らせる。やっていることは大まかに言って、ネットワーク構成、現在のシステムのアップデート、スワップ領域の確保、セットアップ用のファイルシステムの作成とフォーマットとマウント、クロスインストール、シャットダウン。

debian~# mkdir -p /mnt/modules
debian~# mount -t cofs cofs0 /mnt/modules/
debian~# cat /mnt/modules/setup.sh
#!/bin/sh
cd /
ifconfig eth0 inet 192.168.0.2 netmask 255.255.255.0 up
ifconfig lo up
ifconfig
route add -net 192.168.0.2 netmask 255.255.255.255 eth0
route add -net 127.0.0.0 netmask 255.0.0.0 lo
route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.1 eth0
route
echo nameserver 192.168.0.1> /etc/resolv.conf
apt-get update
apt-get upgrade
apt-get dist-upgrade
apt-get install debootstrap
mkswap /dev/cobd1
sync;sync;sync
swapon /dev/cobd1
mke2fs -j /dev/cobd2
mkdir /target
mount /dev/cobd2 /target
debootstrap --arch i386 etch /target
shutdown -h now
debian~# sh /mnt/modules/setup.sh

coLinuxが終了してプロンプトに戻ってくるので、今作ったシステムで起動する。

> echo kernel="c:\Program Files\coLinux\vmlinux"> etch.conf
> echo cobd0="d:\coLinux\etch.img">> etch.conf
> echo cobd1="d:\coLinux\swap.img">> etch.conf
> echo cofs0="d:\coLinux\">> etch.conf
> echo root=/dev/cobd0>> etch.conf
> echo vga=nomal>> etch.conf
> echo ramdisk_size=1024>> etch.conf
> echo rw>> etch.conf
> echo -->> etch.conf
> echo initrd="c:\Program Files\coLinux\initrd.gz">> etch.conf
> echo mem=64>> etch.conf
> echo eth0=tuntap,"TAP">> etch.conf
> "c:\Program Files\coLinux\colinux-daemon.exe" @etch.conf

1.5 初期設定

どのようなシステムをからセットアップを行ったとしても、debootstrapを使った場合はセットアップ直後はまっさらな状態でほぼ何もされていないので、使える状態まで持っていくにはいくつかの設定が必要である。設定のいろはについてはD.3. Unix/Linux システムからの Debian GNU/Linux のインストールに詳しい。


1.5.1 ハードウェアクロックの時系をシステムに伝える

まずは/etc/default/rcSを編集してハードウェアクロック(マザーボードにあるCMOSの時間)の1秒の基準(GMT or UTC)をマシンに伝える。ハードウェアクロックの基準は不明だったがUTCと考えることにしよう。また、上のようにインストールした場合はデフォルトでUTC=yesなので、編集する必要は無かった。しかし、debianのクロスインストールの手引きには書いてあるので一応確認。古めの情報だが、Linux Debian 2.0 でのrcS.dの動作についてによれば、/etc/default/rcSは起動時にS10checkroot.shから呼ばれて環境変数の初期設定を行うためのファイルのようだ。

# echo UTC=yes >> /etc/default/rcS
# grep -n UTC /etc/default/rcS
13:UTC=yes
18:UTC=yes

本来、この作業にはコンピュータのハードウェアクロックがUTCとGMTのどちらの基準で1秒を刻んでいるか知っていなければならない。ただ実際問題として、どこにでもある汎用のコンピュータこの設定を行う場合は、ハードウェアクロックがGMTとUTCのどちらを基準にしているかを知る必要は無く、単純にUTCを採用すればよいと思われる。なぜなら、どちらにしてもハードウェアクロックが基準に対してずれずに動くのはかなり難しそうな気がするからだ。GMTの場合は地球の自転を考慮して、UTCの場合はセシウム原子時計を基準にして、1秒を決めねばならず現実的ではない。どこかにあるGMTやUTC基準の時計から情報をもらうにしても、そのためのデバイス(電波時計)と汎用コンピュータの価格の比較から、現実的でない選択肢となってしまうと思うからである。

  1. Linux はどのように時間を計っているのか
  2. GMT と UTC の違いは何 ?
  3. 産総研・サイエンス・タウン 世の中の基準を創って守るために 「世界でいちばん正確な1秒!」

1.5.2 システムの時間帯をAsia/Tokyoに

初期状態ではタイムゾーンがUnknownなので、dateコマンドで表示される時間やlsのタイムスタンプも日本時間の9時間後。使いにくいかもしれないので、日本時間に変えておく。

# tzconfig

1.5.3 IPアドレスとデフォルトゲートウェイの設定

coLinuxからどのネットワークに接続したいのかによって設定は変化する。eth0に割り当てるアドレスを192.168.0.2とし、

まずは、eth0に割り振ったIPアドレスが所属するネットワークの外のネットワークにパケットを送るための出口(デフォルトゲートウェイ)を設定しなければ外のネットワークと通信できない。ここでは、192.168.0.1をデフォルトゲートウェイとした。一時的にゲートウェイを設定するには下のようにコマンドを打つ。この場合、再起動後に設定は消える。

# route add -net 0.0.0.0 network 0.0.0.0 gw 192.168.0.1 eth0

永続的にゲートウェイを設定するには下のように/etc/network/interfacesを編集して、eth0のブロックにgateway 192.168.0.1を追加する。このようにすると起動時に自動的にルーティングテーブルにデフォルトゲートウェイが追加される。このあたりの解説はデフォルトゲートウェイの設定が詳しい。

# vi /etc/network/interfaces
>auto eth0
>iface eth0 inet static
>	address 192.168.0.2
>	network 255.255.255.0
>	gateway 192.168.0.1

下のようにしてupとpre-downを使って設定することも可能だが、煩雑。

# vi /etc/network/interfaces
>auto eth0
>iface eth0 inet static
>	address 192.168.0.2
>	network 255.255.255.0
>	up route add -net 0.0.0.0 network 0.0.0.0 gw 192.168.0.1 eth0
>	pre-down route add -net 192.168.0.0 network 255.255.255.0 eth0

ルーティングテーブルの確認は下のようにして行う。ルーティングテーブルの読み方は、他のネットワークのコンピュータとはどうやって通信しているの?が詳しい。gateway 192.168.0.1を追加したことで、一番下の行が追加され、192.168.0.0/255.255.255.0のネットワークに所属しないアドレスを宛先に持つパケットは全て、eth0を通して192.168.0.1へ送られることになった。

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.0.0     *               255.255.255.0   U     0      0        0 eth0
default         192.168.0.1     0.0.0.0         UG    0      0        0 eth0

「外のネットワークにパケットを送ることができる」とかいたが、注意がある。この場合なら、自分の所属するネットワーク192.168.0.0/255.255.255.0に属するアドレスを持つコンピュータがデフォルトゲートウェイの外にあってもパケットを送ることが出来ないということだ。ということで、最終的な設定ファイルは下のようになる。

# vi /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
	address 192.168.0.2
	network 255.255.255.0
	gateway 192.168.0.1

1.5.4 ロケールのインストールと設定

まずはインストール。

# apt-get install locales

其の後、設定。とりあえずja_JP.UTF-8のロケールを作成して、システムのデフォルトをこれにしておく。

# dpkg-reconfigure locales

1.6 windows上で動くXmingをcoLinuxからsshを経由せずに使う

coLinuxにXアプリケーションをインストールして使うためには、XサーバとXアプリケーションが必要だ。Xサーバはユーザの使うキーボードが直接繋がったマシンでXアプリケーションからの接続を待機して、Xアプリケーションは別のどこかにあるマシンで走っている。このあたりについて上手く説明できていない(よくわかっていない)感じがする。XmingとXming-fontsをインストールする。で、Xmingをインストールしたディレクトリ(c:\Program Files\Xming\)中のX0.hostsを編集して、coLinuxマシンのIPアドレスを入れておく。

まずは、下のようにしてcoLinuxで割り当てられたIPアドレスをチェックする。この場合は192.168.0.2がcoLinuxに割り当てたIPアドレス。Windowsマシンで動いているXサーバ(Xming)にこのIPアドレスからの接続を許可する設定を追記する。

coLinux:~# ifconfig eth0 | grep inet
          inet addr:192.168.0.2  Bcast:192.168.0.255  Mask:255.255.255.0

で、現状の確認。Xmingをインストールしたディレクトリ内のX0.hostsというファイルに接続を許可するIPアドレスが書いてあるので、これを見てみるとlocalhostからの接続のみが許可されている。

> type "C:\Program Files\Xming\X0.hosts"
localhost

coLinuxはlocalhostで動いているわけではないのでこのままではcoLinuxから起動したXアプリケーションはwindowsで動いているXmingから接続拒否されるはずだ。ためしに下のようにしてcoLinuxでxeyesを起動してみる。

coLinux:~# xeyes
Xlib: connection to "192.168.0.1:0.0" refused by server
Xlib: No protocol specified

Error: Can't open display 192.168.0.1:0.0

ということで、拒否された。Xmingのログにも下のように拒否したとある。

reject from IP 192.168.0.2

ということで、X0.hostsにcoLinuxのIPアドレスを追記してcoLinuxからXmingへの接続を許可してみる。

> echo 192.168.0.2>> "C:\Program Files\Xming\X0.hosts"
> type "C:\Program Files\Xming\X0.hosts"
localhost
192.168.0.2

これで設定ファイルはOKのはずだ。この設定を反映させるためにXmingを終了して起動する。

最後にcoLinux側でDISPLAY変数をセットすれば、coLinuxでxeyesを起動出来るはずだ。

coLinux:~# export DISPLAY=192.168.0.1:0.0
coLinux:~# xeyes

そもそも、coLinuxでXアプリケーションを使うのにわざわざsshdを立てたり、sshコネクションを貼る必要は一切ない。それどころか、sshの暗号変換処理を挟むことで、体感速度が遅くなるようなきがする。

ssh

サイトマップ

  1. CSS > Webサイトのレイアウトの話
  2. DVDリッピングしてaviファイルにするときの計算方法
  3. Debian > インストールメモ
  4. Memo > One Line Diary
  5. Memo > To-Doリスト
  6. Memo > iswebの自動挿入広告の文字コードに関する考察
  7. Memo > リンクとメモ
  8. Memo > 物理屋の独り言
  9. Misc > High Performance Computing(HPC)
  10. PC過去の遺物集
  11. Perl > 1行スクリプト覚書 with Active Perl
  12. Perl > Perl実験室でWeb雑考
  13. Perl > XML::TreePPでXMLサイトマップファイルを生成
  14. Perl > e.cgi のページ ProjectRotation8
  15. Perl > クエリを連想配列で受け取るスマートな方法
  16. Perl > サーバーにアップロードしたcgiのエラーチェック
  17. Perl > ブリコラージュ的 cgi
  18. Programing > プログラムの素人が不思議に思ったこと
  19. Services > Gmail Tips
  20. Services > YourFileHostダウンローダ
  21. Services > twitterはじめました。
  22. Tech > MathMLを使ってみる
  23. Tech > Windows 2000 Professional でLaTeX組版システムを使う
  24. Tech > coLinuxの導入
  25. Tech > サイトのミラーリング
  26. Terapadで作るLaTeX統合環境
  27. Tools > Opera > 設定の諸々
  28. Tools > bashのメモ
  29. Tools > lit2ptoのページ
  30. Tools > vimの設定とtips
  31. Tools > よく使う機能のメモと設定のメモ
  32. VMware > ホストOSがWindows XP Home SP2でゲストOSがVine Linux 4.1
  33. Vine > SSHの暗号化経路を経由してSambaサーバの共有ディレクトリをマウント
  34. Vine Linux > LaTeXでpdf文書作成
  35. Vine Linux > Libretto L1に載せる
  36. Vine Linux > SSH関係の諸々メモ
  37. Vine Linux > サーバを立てたときのメモ
  38. Vine Linux > ソフトウェアRAID
  39. Vine Linux > デスクトップとして使う場合に必要な設定
  40. Wanderlust > inter7でIMAP4
  41. Web Etcetera > サーバー上でファイルを直接編集することについて
  42. Web Etcetera > 検索エンジンが自分のサイトをどのように認識しているか
  43. Web Etcetera > 無料ホームページスペースの広告削除は真か偽か
  44. Winamp > StreamRipperで全自動リッピング
  45. Winamp > タスクマネージャを使って目覚まし時計
  46. Windows > robocopyでフォルダ間同期
  47. Windows > 手動でコーデックをインストールする
  48. gnuplotのプロットギャラリー
  49. rsyncでディレクトリの内容を同期する
  50. wgetのメモ
  51. ネットワーク上にメモ帳を置く
  52. ハードウェア > HDDの再利用
  53. ハードウェア > 安定で快適なマシンはハードから
  54. ブリコラージュ的メールマガジン一括登録解除方法
  55. 初めに
  56. 情報基礎演習UNIX
  57. 窓たちと正く付き合うにはショートカットキーから

コメント


pin

[PR]Zł̓check:𖳗GETI