はじめに
自宅や職場のマシンでは、VMware Player や VirtualBox を使って Windows 上の仮想マシンに Linux をインストールして使っていますが、僕の持っているノートパソコン (VAIO X) は薄い代わりに非力なので、動作が軽いと噂の coLinux を入れてみることにしました。
coLinux は昔、10年くらい前に使っていたことがあって、その当時のノートパソコン (Celeron M 1.3MHz, 256MB RAM) でも十分に動作していたので、VAIO X (Atom Z550 2.00GHz HT, 2GB RAM) でも結構いけるんじゃないかと思いまして。
coLinux の開発はほとんど止まっているみたいで、Windows 64bit に対応させようという動きもあるようですが、まだまだ時間が掛かりそうです。
なので、メインマシンの Windows 7 64bit 上に仮想マシンを構築するときには、候補として coLinux という選択肢は選べなかったのですが、VAIO X の OS は Windows 7 32bit なので、なんの問題も無く導入できました。
手順
coLinux で用意されている Linux のイメージファイルはとても古いので、空の仮想 HDD のイメージファイルを用意し、そこに CentOS 6.5 を自分でインストールします。
以下のサイトで CentOS 5.6 のインストール方法が紹介されていますが、基本的にはこの通り作業を行います。
手順としては、以下のようになります。
- coLinux のインストール
- QEMU のインストール
- KQEMU のインストール
- 仮想 HDD ファイルの作成
- QEMU を使って CentOS 6.5 をインストール
- QEMU で CentOS 6.5 にログインして inode を作成
- dd コマンドで仮想 HDD ファイルを coLinux 用に加工
- coLinux の設定
- coLinux の起動
- ネットワークの設定
- coLinux をサービスに登録
ここでは、上記のサイトの通りにやってうまくいかなかった点だけ紹介していきます。
4. 仮想 HDD ファイルの作成
容量はこことか使って計算しました。
C:\coLinux\CentOS> fsutil file createnew swap.512mb 536870912
C:\coLinux\CentOS> fsutil file createnew root.3gb 3221225472
5. QEMU を使って CentOS 6.5 をインストール
QEMU という仮想マシンを使って CentOS をインストールします。
インストールディスクには、CentOS-6.5-i386-minimal.iso を使いました。
しかし、これがとても重いので、KQEMU というソフトを使って高速化します。
これでだいぶ早くなるようなのですが、CentOS 6.5 のインストールは GUI で行われるので1 、それでも VAIO X では時間が掛かりすぎて、インストールできませんでした。
そこで、デスクトップマシンでインストールを行い、ノートパソコンにイメージファイルをコピーすることにしました。
うちのデスクトップマシンは、Windows 7 64bit なので、KQEMU による高速化は行えませんが、それでもだいぶ早く進みました。2
インストールができたら次のステップに進みます。
6. QEMU で CentOS 6.5 にログインして inode を作成
ここちょっと何やってるのかわからない。
# for i in `seq 1 10`; do mknod cobd$i b 117 $i; done
7. dd コマンドで仮想 HDD ファイルを coLinux 用に加工
CentOS 5.6 の時代は、先頭から 63 セクタを切り取っていましたが、最近の OS ではここの大きさが変わったそうです。
以下のサイトに書いてあるように、2048 セクタを切り取ります。
僕の環境では Cygwin がインストール済みだったので、Cygwin の dd コマンドを使いました。
8. coLinux の設定
conf ファイルを gist にアップしましたので参考にして下さい。
イメージファイルのファイル名には適当に .fs って拡張子付けました。
TAP の MAC アドレスは、coLinux で CentOS にログインして、ifconfig -aで確認して出てきた MAC アドレスを設定しました。
9. coLinux の起動
設定ファイルが centos.conf だとすると、起動コマンドは次のような感じです。
起動時にエラーが出たので、以下のサイトを見てドライバをインストールしました。
10. ネットワークの設定
まず Windows 側で、TAP に IP を割り当てます。
僕はとりあえず、192.168.100.1としました。
次に、CentOS 側で固定 IP の設定をします。
NETWORKING=yes HOSTNAME=colinux GATEWAY=192.168.100.1
DEVICE=eth1 BOOTPROTO=none HWADDR=00:FF:AE:0F:18:00 ONBOOT=yes DEFROUTE=yes IPADDR=192.168.100.40 NETMASK=255.255.255.0 PEERDNS=no GATEWAY=192.168.100.1 IPV6INIT=yes
nameserver 8.8.8.8 nameserver 8.8.4.4
これで Windows から CentOS へは ping が通るようになったのですが、逆が通りません。
どうやら Windows 7 のファイアウォールが邪魔をしているようです。
「ネットワークと共有センター」を見ると、TAP に繋がっているネットワークが、「識別されていないネットワーク」になっており、これが「パブリックネットワーク」に分類されています。
ここを「ホームネットワーク」に変更できればよいのですが、そうするためには、Windows 7 Home Premium の場合レジストリをいじらなくてはならず、難しそうだったので3 、ファイアウォールの設定の方を変えることにしました。
ファイアーウォールの「受信の規則」で、192.168.100.40からのアクセスを許可します。
ファイアーウォールの設定については、まだちょっと不安が残るので、時間ができたらまた調べてみます。
もしかしたら CentOS 側で DHCP サーバーを立てれば、Windows からネットワークが識別されるかも?
11. coLinux をサービスに登録
準備が整ったら、最後に coLinux を Windows のサービスに登録します。
サービスに登録すると、Windows の「管理ツール」の「サービス」から、Windows の起動時に自動的に起動するように設定できます。
感想
インストールにはだいぶ手間取りましたけど、わりと快適に使えています。
少し遅いのは確かですけど、Cygwin よりかは遙かに速いです。
いずれ、VMware との速度比較とかもやってみたいなあ。
こんにちは。参考にさせていただいています。
おかげさまで、CentOS6.5をcoLinuxで起動することができました。
一点だけ、
sda2=”C:\coLinux\CentOS\swap.512mb.fs”
として指定したswapファイルが、CentOS6.5上で認識できていないように見えます。
topで見ると、
Swap: 0k total, 0k used, 0k free, 27468k cached
と表示されています。
どのような原因が考えられますでしょうか?
アドバイスいただけると幸いです。
今、私の環境を確認してみたところ、私のところでも確かに swap が有効になってませんでした(汗)。
ご指摘いただきありがとうございます。
調べてみると、/etc/fstabに書かれた情報が間違っていたのが原因でした。
以下のコマンドを実行すると、HDD に付けられた UUID を調べることができます。
ここで、sda2 に付けられた UUID と、fstab に書いてある UUID が同じかどうか確認してみてください。
私の環境ではこれが違っていたため、fstab の UUID を修正して再起動したら、swap 領域がマウントされ、有効になりました。
UUID を使わずに、デバイス名 (/dev/sda2) を書く方法に書き換えてしまっても問題ないと思います。
*
今時の CentOS であれば、
とすると、認識されているデバイスが確認できるので、もし sda2 が無い場合は coLinux の設定の問題で、あった場合は、CentOS の設定の問題である可能性が高いと思います。
早速のアドバイスありがとうございます。
調べてみたところ、/dev/sda2自体は認識されているものの、UUIDが割り付けられていないように見えました。
[root@XXXXXX ~]# ls /dev/sda*
/dev/sda1 /dev/sda2
[root@XXXXXX ~]#
[root@XXXXXX ~]# ls -l /dev/disk/by-uuid/
total 0
lrwxrwxrwx 1 root root 10 May 11 21:58 XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX -> ../../sda1
[root@XXXXXX ~]#
> UUID を使わずに、デバイス名 (/dev/sda2) を書く方法に書き換えてしまっても問題ないと思います。
こちらも試してみたのですが、やはりswapとしてマウント(?)されてくれません。。
初歩的な話かもしれず申し訳ありませんが、何かお気づきの点などありましたらコメントいただけると嬉しいです。
root ユーザーで、以下のコマンドを実行してみたらどうでしょう?
ただ、これをやると、/dev/sda2にあるデータは全て消えるので注意してください。
http://linuxjm.sourceforge.jp/html/util-linux/man8/mkswap.8.html
もしこれで、/dev/disk/by-uuidに追加されたら、/etc/fstabにその UUID を追加して、swaponコマンドを実行してください。
/etc/fstabに書くときの書式は、次のような形です。
[uuid] を ls -l /dev/disk/by-uuid/で得られた文字列に変更してください。
あるいは、UUID を使わずに以下のように記述します。
swaponコマンドは、-aオプションを付けると、fstab に書かれた全ての swap を有効にしてくれます。
swap が追加されたかどうかは、以下のどちらかのコマンドで確認できます。
私もあまり詳しくないので、以下のページなどを参考にしました。^^;
http://kazmax.zpp.jp/linux_beginner/mkswap.html
http://www.turbolinux.com/products/server/10s/manual/command_guide/command_guide/swap.html
お返事が遅くなりました。
アドバイスいただいた通り、mkswap -f /dev/sda2 で行けました!
どうもありがとうございます。
ちなみにyuuAnさんは、mkswapの必要は無かったのでしょうか?
(/etc/fstabのUUIDを書き換えただけ?)
参考までに教えていただけると、スッキリします。
うまく認識されたみたいで、よかったです!
私の環境では UUID が振られていたため、fstab にそれを書くだけでできました。
試行錯誤しながらだったので、どこかで何かしてたのかも?
> 私の環境では UUID が振られていたため、fstab にそれを書くだけでできました。
> 試行錯誤しながらだったので、どこかで何かしてたのかも?
ふむ、今となっては・・・ですかね。
ともあれ、私も数年ぶりにcoLinuxライフを楽しんでますw