CentOS5をcoLinux上で動かす

個人的にはDebian系をよく使っているのですが、業務でCentOSを使うことになったので自宅にもCentOS環境を作成しました。手軽に出来るのはやっぱりcoLinuxなのですが、RHEL系は勝手が分からないのでなかなか苦労しました・・・・・・。今回やってみての手順をメモしておきます。

準備するもの

  • coLinux。俺のところで動いているのは0.7.2です。
  • qemuとkqemu。kqemuないとあまりの遅さに耐えられませんよ。
  • ddコマンドが使える環境。無難にcygwin入れておくといいと思う。
  • CentOS_5.0_i386_bin_DVD.iso。公式サイトから落とすといいと思う。Torrentだと割と早かった。

準備

  • qemuを適当なところに解凍し、kqemuをインストール。kqemuはデフォルトで大丈夫です。
  • cygwinのインストール。デフォルトのインストールでddコマンドは使えるので、他に使う用事がなければデフォルトで大丈夫。
  • qemuが入っているフォルダ内にCentOS_5.0_i386_bin_DVD.isoを突っ込むとコマンド入力が楽です。

HDDイメージの準備

参考サイトではfsutil使ってたみたいだけど、これだとXP環境(Vistaもあるのかな?)でしか動かないので、2kpro環境だとqemu-img.exe使うことになると思う。なのでqemu-img.exeでHDDイメージを作成する。
qemuを展開したディレクトリにコマンドプロンプトで移動し、qemu-img.exeを使ってrawディスクイメージを作成する。以下のコマンドはC:?qemuqemuを解凍した例。

>cd C:?qemu
>qemu-img create cent.fs 5G #5GBのrawディスクイメージを作成
>qemu-img create swap.fs 512kb #512kbのrawディスクイメージを作成

ファイル名(cent.fs等)や数値はお好みで。もし容量足りなくなったら後ほど追加も出来るんで、ある程度適当な数字でいいと思います。

qemuを使ってCentOSのインストール

qemuを使って先ほど作成したcent.fsにCentOSをインストールします。続けて以下のコマンドを入力するとqemuが立ち上がり、CentOSのインストールが始まります。

>qemu.exe -hda cent.fs -hdb swap.fs -cdrom CentOS_5.0_i386_bin_DVD.iso -m 256 -boot d -L .

オプションの意味なんかはqemuのヘルプを見てくださいな。

ここで注意すべきはインストール方法。テキストモードだろうがグラフィカルモードだろうが構いませんが、以下のことに気をつけてください。

  • 言語はEnglishを選択。じゃないとcoLinuxでは文字化け起こします。
  • キーボードはJapanese(jp106)を選択。USキーボードの人は当然USですが。
  • タイムゾーンUTC云々のチェックは外しておかないとAsia/Tokyo選んでも無意味です。
  • パーティション構成は必ずカスタムにすること。/dev/hdaは丸々/に、/dev/hdbは丸々swapに割り当てること。くれぐれもお任せにしてはいけません。
  • パッケージ選択はお好みで。後ほどVNC使うって人もまずはGUI部分は外しておいた方が簡単に済むと思う。

インストールが済むとRebootを求められますが、そのままRebootしても正常に起動できません。Atl + Ctrl + 2を同時にタイプするとプロンプトになりますのでquitで終了してください。

>(qemu) quit

これをせずに×やらAlt + F4で終わらせちゃうとqemuが起動しなくなりますのでご注意。

qemuを使ってCentOSの初期設定

初回起動時の設定などがありますのでもうしばらくqemuを使います。そのまま以下のコマンドを入力。

>qemu.exe -hda cent.fs -hdb swap.fs -L .

インストール時もそうですが、最後の"."を忘れるとエラーが出ますのでご注意。

起動して設定を済ませて、rootでログインしてください。その後coLinuxで使うcobdを作成します。これはそのまま参考サイトより引用。

>cd /dev
>for i in 1 2 3 4 5 6 7 8 9 10
> >do
> >mknod cobd$i b 117 $i
> >done

終わったらhaltコマンドでCentOSをシャットダウンしてください。Alt + Ctrl +2 でqemuを正常終了させるのをお忘れなく。

ddコマンドでcoLinux用のディスクイメージを切り出す

今の状態のcent.fsではcoLinuxでは使えません。ですので不要な部分をddコマンドで切り出します。cygwinコンソール(cygwin.bat)を起動して以下のコマンドを参考に各自の環境に合わせて入力。

>dd if=/cygdrive/c/qemu/cent.fs of=/cygdrive/c/qemu/root.fs bs=512 skip=63

root.fsのファイル名は何でも構いません。qemu-img.exeで作成するファイル名をroot.fsにしておいてddコマンドの時点でcolinuxのインストールディレクトリに直接書き出すのもありっちゃあり。

confファイルを書く

俺のconfファイルは以下です。最後は改行をお忘れなく。

kernel=vmlinux
initrd=initrd.gz
mem=256
cobd0="c:?Program Files?coLinux?centos?root.fs"
cobd1="c:?Program Files?coLinux?swap.fs"
eth0=tuntap
root=/dev/cobd0 fastboot

swap.fsは全OS共通にしていますが特に問題は起きていません。今のところ。

エラー回避

putfont: PIO_FONT:Function not implemented

>mv /bin/setfont /bin/setfont.old
>vim /bin/setfont

#!/bin/bash
if ! uname -r | grep -q -e "-co-"
then
/bin/setfont.old $@
fi

>chmod +x /bin/setfont

別にvimじゃなくてもnanoでも構いません。要は元からある/bin/setfontをリネームして、カーネルバージョンに-co-が入っていなかったらリネームした/bin/setfontを起動させているだけです。

hwclock

/etc/rc.d/init.d/haltと/etc/rc.d/rc.sysinitの該当行をそれぞれコメントアウトすれば問題なし。これも上記の通りに置き換えているのも参考サイトに上げていますので、心配な方はそちらをどうぞ。

raidautorun

不要なので/etc/rc.d/rc.sysinitの該当行をコメントアウトで対処。

ネットワーク設定

まず/etc/sysconfig/network-scripts/ifcfg-eth0がないので新規で作成。IPADDR等は適正環境に合わせて書き換えてくださいな。SSH接続やったり各種サーバとして使う場合は静的にIP割り振った方が効率的だと思います。
#これ自前で用意した後にsystem-config-networkというコマンドを知ったのですが、これで正常に設定できるかは分かりません。

DHCPの場合

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
TYPE=Ethernet

静的IPの場合

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.11.11
NETMASK=255.255.255.0
GATEWAY=192.168.11.1
NETWORK=192.168.1.1
TYPE=Ethernet

参考サイトではTYPEが抜けていたけど、CentOS5ではこれがないと外部に繋がりません。4ではなくても動くのかは分かりませんが・・・・・・。
静的IPを割り振った場合のみ/etc/resolv.confを以下のように編集してください。DHCPの場合は自動で書き換えられますので不要です。

nameserver 192.168.11.1

ネットワークの再起動

>/etc/rc.d/init.d/network restart

これで上記の設定を読み込んでネットワークを再起動してくれます。

ネットワークのテスト

LAN内にpingが飛ぶか、外部にpingが飛ぶかを確認しておくといいかと思います。

>ping 192.168.11.1 #coLinux→ルータ
>ping 192.168.11.5 #coLinux→LAN内のコンピュータ
>ping www.yahoo.co.jp #coLinux→外部サイト

飛ばなかったらどっかがおかしいです。確認できたらCtrl + Cで終了させる。回数設定もオプションで出来るけど面倒なのでやってません。
あともし可能ならばWindows→coLinxも確認しておいた方がいいかも。

その他

その他のエラー

起動時/終了時にFailedが多いけど、ことごとくchkconfigでoffにしていって構わないのではないかと参考サイトでは言われています。まだそこまで手を付けていないのでやっていませんが。

yum -y update

ネットワークに繋がったらインストール済みのパッケージのアップデートがないか確認しておいたほうがいいかと思います。

sshd

デフォルトでsshdが起動しているので、先にネットワークの設定を行ってSSHクライアント(PuTTYとか)で接続して設定したほうが早いかもしれません。

useradd

rootのまま弄るのはある程度設定が終わるまでにしておいたほうが無難です。できれば最初にuseraddでユーザー作成してその後の設定はsu使った方がセキュリティ上は望ましいです。