tsucchi’s diary(元はてなダイアリー)

はてなダイアリー(d.hatena.ne.jp/tsucchi1022)から移行したものです

coLinux に Ubuntu を入れる

夏休み中ですが、仕事メモ。

Unix 系の開発に、今まで cygwin を使っていたのですが、やっぱり「素の」Unix 環境がほしいなぁ、と思い、coLinux を導入してみました。

最初は coLinux のサイトから落とせる OS イメージファイルでごにょごにょしていたのですが、あっという間に disk full になってしまいました(1GB しかないんだよね)。そこで、CD イメージを使ってインストールしてみることにしました。やり方があんまり載ってなくて苦労しました。。。

本体のインストールとネットワークの設定

どこを見てもいいと思うけど、たとえば↓を見て、coLinux 本体のインストールとネットワークの設定だけやっておきます
軽快なLinux環境をつくれる、coLinuxのセットアップ手順

# もちろん OS イメージファイルを落として、coLinux がどんなものなのかひとしきり遊んでみるのもいいと思います。

インストールの前提

coLinux が c:\Program Files\coLinux 配下にあるとします。
ネットワークは NAT で TAP を設定済み。TAP のアダプタのアドレスは 192.168.0.1 とします。

ディスクイメージの作成

インストール前に空のディスクイメージを作ります。

コマンドプロンプト(cmd)を起動して、下記を実行します。

> cd "c:\Program Files\coLinux"
> fsutil file createnew rootfs_5gb.img 5368709120
> fsutil file createnew swap_256mb.img  268435456

とりあえずダウンロードイメージの 1GB で足りなかったので、なんとなく 5GB で作ってみた。VMWare のディスクイメージと違って、容量分取られるのが痛い。。。

スワップは適当(256MB)。まあこれは後で変えるのも不可能じゃないし。

fsutil は知らないのですが、とにかく 5GB と 256MB の空ファイルを作っているみたいです。Linux とかで dd して作って、それを持ってきてもいいと思います。

イメージファイルの取得

initrd(CDブート用)を落としてきます。僕は、
http://ja.archive.ubuntu.com/ubuntu/dists/jaunty/main/installer-i386/current/images/cdrom/initrd.gzより取得しました。
jaunty のところは ubuntu開発コードネームによって変わるっぽいです。(jaunty は9.0.4らしい)

で名前を initrd-ubuntu-cdboot.gz として c:\Program Files\coLinux に置きます。

次に、OS 全体の CDイメージ(ここでは server 用)を落とします。(ubuntu-9.04-server-i386.iso)
場所はぐぐって適当に見つければいいと思う。で、これも c:\Program Files\coLinux に置きます。

インストール用の設定ファイルの作成

c:\Program Files\coLinux に下記の ubuntu-install.conf を作成します。

kernel=vmlinux
cobd0="c:\Program Files\coLinux\rootfs_5gb.img"
cobd1="c:\Program Files\coLinux\swap_256mb.img"
cobd2="c:\Program Files\coLinux\ubuntu-9.04-server-i386.iso"
cofs0="c:\Program Files\coLinux"
root=/dev/ram0 vga=normal ramdisk_size=14409 rw --
initrd="c:\Program Files\coLinux\initrd-ubuntu-cdboot.gz"
mem=256
eth0=tuntap,"TAP"
インストールの開始

コマンドプロンプトから、coLinux を起動します

cd "c:\Program Files\coLinux"
colinux-daemon.exe @ubuntu-install.conf -t nt

キーボード選ぶあたりで、[Alt]-[F2]を押してシェルに移動します。

# mkdir -p /mnt/modules
# mount -t cofs cofs0 /mnt/modules
# tar -zxvf /mnt/modules/vmlinux-modules.tar.gz

終わったら [Alt]-[F1]を押して、インストーラに戻る

であとはそのまま進める。

ネットワークは IP: 192.168.0.2, デフォルトゲートウェイ 192.168.0.1, DNS は普通に自分の使っている奴を指定

昔(古いcoLinux or Ubuntu)はパーティションは手動(シェル)で切らなければいけなかったみたいだけど、
今はインストーラーで切れるので、root particion だけ作っておく(cobd0を使う)
スワップは後で(よく分からんけど、インストーラで切れず、エラーになる)

パッケージは適当に選んだけど、うまい具合に必要最小限を最初から吟味できたらそっちのほうがいいかも。

GRUB が入らなくてエラーになるけど、Finish Installation を選んでいい。
で、再起動かかるけど、(当然)インストーラが再度上がるのでこれは無視。×ボタンで終了。
無事っぽくはないけど、これで無事にインストール完了。

起動

c:\Program Files\coLinux に下記の ubuntu.conf を作成します

kernel=vmlinux
cobd0="c:\Program Files\coLinux\rootfs_5gb.img"
cobd1="c:\Program Files\coLinux\swap_256mb.img"
initrd="c:\Program Files\coLinux\initrd.gz"
mem=256
eth0=tuntap
root=/dev/cobd0

メモリ容量はお好みで。でも 128MB だと OOM killer が発動したので、最低でも 256MB あったほうがいいと思う。

あと start.bat を作成

> cd "c:\Program Files\coLinux"
> colinux-daemon.exe @"ubuntu.conf"

start.bat をダブルクリック => 起動するはず。
以後も起動は start.bat を使うと楽。

swap の作成

起動したらログインして、swap 作ります
(このときはインストール時に作成したローカルユーザで入る)

% sudo mkswap /dev/cobd1
% sudo swapon /dev/cobd1
% sudo vi /etc/fstab
(下記を追加)
/dev/cobd1 swap  swap defaults 0 0

リブートして、swap がマウントされるのを確認

% sudo shutdown -r now
(再ログインして)
% swapon -s
swapon -s
Filename                                Type            Size    Used    Priority
/dev/cobd1                              partition       262136  592     -1

こんな感じで swap が出ればok

root の設定

ルーパスを登録しとく(sudo めんどいから)

% sudo passwd root
パッケージ関連
# apt-get upgrade
# apt-get update

# apt-get install gcc
# apt-get install make
# apt-get install tcsh
# apt-get install chkconfig
# apt-get install subversion
# apt-get install openssh-server
# apt-get install samba

好みもあるけど、自分の必要最低限はこんな感じだった。

samba の設定
# cd /etc/samba
# cp smb.conf{,.orig}
# vi smb.conf
[homes]セクションのコメントアウトを適当に外す
# testparm
([homes]の設定を確認)
# /etc/init.d/samba restart
# smbpasswd -a tsucchi (<= 自分のユーザね)
(パスワード入れる)

Windows から \\192.168.0.2\tsucchi

でアクセスできることを確認。あとはWindows 側にショートカットを作っておけばいいと思う。

ssh の設定

openssh-server をインストールしてから

# /etc/init.d/ssh start

(または再起動)

日本語ロケール(UTF-8)の追加
# vi /var/lib/locales/supported.d/local
(下記を追加)
ja_JP.UTF-8 UTF-8
# locale-gen

あとは自分のローカルユーザのドットファイルとかを samba 経由でコピーしておく

とりあえずここまででおしまい。

で、これが重要なのですが、
シャットダウンして、保存用にイメージファイル(rootfs_5gb.img)をコピーしておきます。

backup-colinux-ubuntu-5gb.img とでもしておくと後で分かりやすいかな。

例えば、何かやらかしてしまって、作り直すときにはバックアップを戻せばいいし、別名で conf を作ってバックアップイメージも別名でコピーすれば検証環境も簡単に作れます。まだあんまり使い込んでいませんが、結構便利です。