戻る

CentOS 5.3をcoLinuxで使う

2009/05/16

CentOS 5.3をcoLinuxで使えるようにするメモ

Windowsで軽快なLinux環境を実現するcoLinux。 PentiumM + MEM 512MBのような古めのマシンでも軽快に動作するので大変重宝する。

はじめはcoLinuxのDebian-etchイメージを利用して導入しようかと挑戦したが、 yumの設定やらバージョンの違いやらがめんどくさいのでやめ。

今回はすでにCentOS5.3がインストールされたVMwareを利用して、 yumをつかってcoLinux用のCentOS5.3イメージを作成することにした。 VMwareでCentOS5.3を動作させる方法については省略。

ディスクイメージを作成する

ディスクイメージを作成する。最初にCentOS 5がインストールされたマシンを用意する。 今回はMacのVMware Fusionを利用したが、実マシンからでも可能だとおもう。

空のディスクイメージの作成

最初に空のディスクイメージを作成する。
rootドライブのサイズはここで決まる。
VMware Fusion/Server/Workstationの場合、次の条件でディスクを作成すればよい。

1.大きさは好みで、4GBくらいがいいかも。
2.2GBごとにファイルを分割せず単一ファイルにする
3.あらかじめ領域を確保しておくようにする
4.SCSIでもIDEでもかまわない

ファイル名-flat.vmdk というファイルがイメージファイルになる。

VMweare Playerで利用する場合

VMware Playerでも空のflatイメージを利用できるようにする簡単なPerlスクリプトを用意した。
PerlスクリプトなのでWindowsで作成する場合Perl実行環境が必要。

[ここ]

perl create_flatdisk.pl CentOS5 4000

上記のコマンド実行するとCentOS5.vmdkが作成される。
CentOS5-flat.vmdkファイルをfsutilsコマンドか、ddコマンドで作成するように促されるので、
それでブランクディスクイメージを作成する。
私の場合はMacで作成するのでddコマンドを使った。

dd if=/dev/zero of=CentOS5-flat.vmdk bs=1048576 count=4000

4GBの空のファイルができあがる。
次に、Perlスクリプトで作成されたvmdkファイルをCentOS5.vmdkを起動するvmxファイルに追記する。

ide0:0.present = "TRUE"
ide0:0.fileName = "/path_to_vmdk/CentOS5.vmdk"

上記の例の場合hdaにHDDが接続されたことになる。

実マシンの場合

ddコマンドで作成したブランクイメージでもうまくいくとおもう。
その場合 mountするときは mount -o loop だったかな。

vmxファイルをダブルクリックしてVMware環境の起動

以降、coLinux環境の構築先が/dev/hdaで、かつVMware+CentOS5.3にてrootユーザでの作業。

reiserfsを利用できるようにする

ext3でもかまわないけど、せっかくなのでreiserfsにしてみる。
reiserfsを利用する場合はcentosplusにする必要がある。

wget ftp://ftp.iij.ad.jp/pub/linux/centos/5.3/centosplus/i386/RPMS/kernel-2.6.18-128.1.10.el5.centos.plus.i686.rpm
rpm -ivh kernel-2.6.18-128.1.10.el5.centos.plus.i686.rpm
yum --enablerepo=centosplus install reiserfs-utils
yum --enablerepo=centosplus update
reboot

... centosplus-kernelで再起動

フォーマット

coLinux用のディスクイメージを/dev/hdaに作成する。
間違えたら大変なので注意。
パーティッションはつくらないで丸ごと利用する。

mkfs.reiserfs -f /dev/hda

マウントする

mkdir /mnt/colinux
mount -t reiserfs /dev/hda /mnt/colinux

環境の構築

cd /mnt/colinux
mkdir work
cd work
wget ftp://ftp.iij.ad.jp/pub/linux/centos/5.3/os/i386/CentOS/centos-release-5-3.el5.centos.1.i386.rpm
rpm --import http://ftp.iij.ad.jp/pub/linux/centos/5.3/os/i386/RPM-GPG-KEY-CentOS-5
rpm --root=/mnt/colinux --import http://ftp.iij.ad.jp/pub/linux/centos/5.3/os/i386/RPM-GPG-KEY-CentOS-5
rpm2cpio centos-release-5-3.el5.centos.1.i386.rpm | (cd /mnt/colinux ; cpio -id)
mkdir -p /mnt/colinux/var/log

yumの設定、ミラーの設定

$reposにお近くのミラーを設定してください。 最後のEOPまでコピペ

perl << 'EOP'
use strict;
my $repos="ftp.iij.ad.jp/pub/linux";
my $exclude="firstboot-tui";
open(FHI,"/mnt/colinux/work/yum.conf"); {local $/;$_=<FHI>}
s/\$releasever/5/sg; s/\$basearch/i386/sg;
s!\Qmirror.centos.org\E!$repos!sg; s!^(mirrorlist=)!#$1!mg;
s!^#(baseurl=)!$1!mg; s!^#(baseurl=)!$1!mg;
s/(\n\[base\]\n.+?)\n\n/$1\nexclude=$exclude\n\n/s;
print FHO;
EOP

インストール

yum -c /mnt/colinux/work/yum.conf \
 --installroot=/mnt/colinux --enablerepo=centosplus \
 groupinstall Base "Development Tools"

お好みでどうぞ

yum -c /mnt/colinux/work/yum.conf \
 --installroot=/mnt/colinux --enablerepo=centosplus \
 install reiserfs-utils openssh-server vim-enhanced

各種設定

cofs用ディレクトリの用意

mkdir -p /mnt/colinux/cofs

fstabの設定

cat > ... << EOSとなっているものは、その内容のかかれたテキストファイルの作成です。 最後のEOSまでまとめてコピペすると楽です。

cat > /mnt/colinux/etc/fstab << EOS
proc        /proc proc defaults 0 0
/dev/cobd0  /     ext3 noatime,errors=remount-ro 0 0
/dev/cobd7  none  swap sw       0 0
/dev/cofs0  /cofs cofs defaults 0 0
EOS

文字コード

echo LANG="ja_JP.UTF-8" > /mnt/colinux/etc/sysconfig/i18n

タイムゾーン 上書き

cp /mnt/colinux/usr/share/zoneinfo/Asia/Tokyo /mnt/colinux/etc/localtime

ネットワーク DHCPでIPアドレスを取得する

touch /mnt/colinux/etc/resolv.conf

cat > /mnt/colinux/etc/sysconfig/network << EOS
NETWORKING=yes
EOS

cat > /mnt/colinux/etc/sysconfig/network-scripts/ifcfg-eth0 << EOS
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
EOS

setfontとhwclockのダミーを用意する

これをやっておかないと画面がエラーメッセージで埋まる。

mv /mnt/colinux/bin/setfont /mnt/colinux/bin/setfont.orig
cat > /mnt/colinux/bin/setfont << 'EOS'
#!/bin/bash
if ! uname -r | grep -q -e "-co-"
then
   /bin/setfont.orig $@
fi
EOS
chmod 755 /mnt/colinux/bin/setfont

mv /mnt/colinux/sbin/hwclock /mnt/colinux/sbin/hwclock.orig
cat > /mnt/colinux/sbin/hwclock << 'EOS'
#!/bin/bash
if ! uname -r | grep -q -e "-co-"
then
   /sbin/hwclock.orig $@
fi
EOS
chmod 755 /mnt/colinux/sbin/hwclock

rootユーザの整備

cp /mnt/colinux/etc/skel/.bash* /mnt/colinux/root/

chrootでcolinux環境に入る

chroot /mnt/colinux
pwconv

rootパスワードの設定

passwd

いらないサービスを無効にする

chkconfig hidd off
chkconfig bluetooth off
chkconfig kudzu off
chkconfig auditd off
chkconfig sendmail off
chkconfig pcscd off
chkconfig autofs off
chkconfig smartd off

環境をでる

exit

mount解除してVMware環境をシャットダウンする

cd
umount /mnt/colinux
rmdir /mnt/colinux
poweroff

ここまででVMware上での作業は終わり

イメージのコピー

実マシンでイメージを作成した場合は対象のWindowsマシンにイメージをコピーしておく。
VMwareで作成した場合、今回の例では CentOS5-flat.vmdk がディスクイメージになるので、
これをWindowsマシンにコピーする。

以降coLinux導入先のWindowsでの作業

前提条件

Windowsのバージョン

Windows XP Professional SP3

coLinuxのバージョン

0.7.3

coLinuxがインストールされているディレクトリ

C:\Program Files\coLinux

CentOS5をインストールされているディレクトリ

C:\vm\coLinux\CentOS5.3

一般的なルータ経由のNAT+DHCP+ローカルネットワークな環境

ネットワークはtuntapをbridgeして使用する。名前は「TAP coLinux」とする

coLinuxのmacアドレスは 00:FF:01:00:00:10

coLinuxのインストール

http://sourceforge.net/project/showfiles.php?group_id=98788&package_id=107317

上記から coLinux-0.7.3.exe からダウンロード。 メニューに従ってインストール。コンポーネントはすべて選択。 「root file system image」は不要。

TAPデバイスのリネームとブリッジの作成

マイネットワークのプロパティーを開いて、「TAP-Win32 Adapter V8 (coLinux)」の 名前を「ネットワークアダプタ」などから「TAP coLinux」に変更する。

完了したら上記の「TAP coLinux」と実マシンのネットワークデバイスをCTRLを押しながら選択。 2つ選択された状態で、右クリックして「ブリッジ接続」を選択。 必要に応じて「ブリッジ接続」のIPアドレスなどを設定。

環境をインストールするディレクトリを作成

コマンドプロンプトを開いて作業

mkdir C:\vm\coLinux
cd /d C:\vm\coLinux
mkdir CentOS5.3
cd CentOS5.3
explorer .

移動とコピー

最初に作成した CentOS5-flat.vmdk を上記ディレクトリに移動してリネーム

reiserfsでつくったので拡張子をreiserfsにしておく。好みでOK

ren CentOS5-flat.vmdk CentOS5.reiserfs

起動に必要なファイルをコピー

copy "C:\Program Files\coLinux\initrd.gz" .
copy "C:\Program Files\coLinux\vmlinux" .
copy "C:\Program Files\coLinux\vmlinux-modules.tar.gz" . 

cofs用のディレクトリ

mkdir cofs

swap用領域を作成 1GB

fsutil file createnew swap 1073741824

※DOSのコマンドプロンプトから簡単にファイルを作成するには、
内容をコピーして、コマンドプロンプトで右クリック、「貼り付け(P)」を選択、
ペーストできたら、CTRL+ZのあとにEnterを押すと、内容が記述されたテキストファイルが作成される。
以降、点線内はそのようにしてテキストファイルを作成する前提です。

CentOS5.confを作る
下記点線内をコピペ、最後にCTRL+Z Enter

-----------------------------------------------------
copy con CentOS5.conf
kernel=vmlinux
cobd0=CentOS5.reiserfs
cobd7=swap
cofs0=cofs
root=/dev/cobd0
initrd=initrd.gz
mem=128
eth0=tuntap,"TAP coLinux",00:FF:01:00:00:10
-----------------------------------------------------

CentOS5.cmdを作る
下記点線内をコピペ、最後にCTRL+Z Enter

-----------------------------------------------------
copy con CentOS5.cmd
@echo off
"C:\Program Files\coLinux\colinux-daemon.exe" -t nt @CentOS5.conf
-----------------------------------------------------

coLinux環境の起動

CentOS5.cmdをダブルクリックして起動。うまくいけばコマンドプロンプト型で立ち上がる。
rootでログイン

swap領域の有効化

mkswap /dev/cobd7

shutdownして終了

poweroff

以上で作業完了。
あとは、好みに環境を整備して、CentOS5.reiserfsも含めてバックアップしておけば
テスト環境などを分けたり、ほかのマシンでもそのまま使えるので便利です。

coLinuxのTIPS

サービスとして登録

サービスとして登録しておくとバックグラウンドで動くので便利。
シャットダウンもきちんとやってくれるし。
以下のバッチファイルを作成すればダブルクリックだけでインストールほかの作業ができる。
以下コマンドプロンプトで作業

cd C:\vm\coLinux\CentOS5.3

下記点線内をコピペ、最後にCTRL+Z Enter

 -----------------------------------------------------
copy con CentOS5_service_install.cmd
@echo off
"C:\Program Files\coLinux\colinux-daemon.exe" @CentOS5.conf --install-service "coLinux CentOS5.3"
pause
-----------------------------------------------------

下記点線内をコピペ、最後にCTRL+Z Enter

-----------------------------------------------------
copy con CentOS5_service_start.cmd
@echo off
net start "coLinux CentOS5.3"
ping localhost -n 1 > nul
start "" "C:\Program Files\coLinux\colinux-console-nt.exe"
pause
-----------------------------------------------------

※pingはsleepのかわり。いらないかも。
※複数同時に動作させる場合は、colinux-console-nt.exeの起動のしかたに工夫がいる。

下記点線内をコピペ、最後にCTRL+Z Enter
-----------------------------------------------------
copy con CentOS5_service_stop.cmd
@echo off
net stop "coLinux CentOS5.3"
pause
-----------------------------------------------------
下記点線内をコピペ、最後にCTRL+Z Enter
-----------------------------------------------------
copy con CentOS5_service_uninstall.cmd
@echo off
net stop "coLinux CentOS5.3"
"C:\Program Files\coLinux\colinux-daemon.exe" --remove-service "coLinux CentOS5.3"
pause
-----------------------------------------------------
CentOS5_service_install.cmd   サービスのインストール
CentOS5_service_start.cmd     サービスの起動
CentOS5_service_stop.cmd      サービスの停止
CentOS5_service_uninstall.cmd サービスのアンインストール

起動時の自動起動とかは、「マイコンピュータ」→「管理」→「サービスとアプリケーション」→「サービス」 とかからどうぞ。

複数のTAPデバイスを作成する。

同時起動するときとか。複数デバイス割り当てるとか。

http://colinux.wikia.com/wiki/TAP-Win32_Adapter_V8_(coLinux)

以下コマンドプロンプトで作業

cd /d C:\Program Files\coLinux\netdriver

一覧表示

tapcontrol.exe hwids TAP0801co

追加

tapcontrol.exe install OemWin2k.inf TAP0801co

一括削除、coLinux関連のTAPが全部消える。

tapcontrol.exe remove TAP0801co