colinuxでgentooミニマムなシステムを作る

colinux環境を再構築する用事があったので、作業過程をメモしておきます。
ミニマムな環境(Xなし、とか)を作るために、かえってめんどくさいことをしています。とはいっても、あまり特殊なことはしていませんが。

環境

準備

  • 何はともあれ、coLinuxのダウンロード、ネットワーク設定(私はTAPを使いました)、すぐに起動するイメージを使って起動してみます。今回はubuntu-ja-5.04-colinux-i386を使いました。
  • gentooをインストールするディスクイメージを用意します。こちらのwikiで知ったfsutilというコマンドを使って、空の巨大ファイルを用意。速い。便利。
  • gentooのインストールファイルをダウンロードします。さしあたり、最新の一番手っ取り早いインストール方法(stage3)を使うつもりでこちらからダウンロードしておきます。
  • 作ったファイル、ダウンロードしたファイルなどをわかりやすいところにおいて、Windows上での準備がほぼ完了。以下の設定ファイルで起動します。(for 0.7.1)*1
  kernel=vmlinux   # The default kernel
  cobd0=d:\coLinux\ubuntu-ja-5.04-colinux-i386\ubuntu-ja-5.04-colinux-i386.img
  cobd1=d:\coLinux\swap512M.img
  cobd2=d:\coLinux\gentoo\root_fs
  cobd3=d:\coLinux\gentoo\usr_fs
  cobd4=d:\coLinux\gentoo\var_fs
  cobd5=d:\coLinux\gentoo\home_fs
  initrd=initrd.gz
  mem=256
  eth0=tuntap,"colinux_TAP"
  root=/dev/cobd/0

インストール先ファイルシステムの作成・マウント

  • 通常通りcoLinuxが起動しまして、コンソールログインして、sudo - でroot権限を取得します。そのあたりの詳細な手順は、ubuntuのWikiを参照。
  • 起動時点では、gentooインストール予定のファイルシステムのデバイスノードが存在しませんので、それを作成し、初期化します。
# cd /dev
# mknod b cobdN 117 N    # <- ノード作成。Nは上記設定ファイル中で示した2〜5の番号です。
# mke2fs -j /dev/cobdN   # ext3でフォーマット。Nの意味は同上。
# mkdir /mnt/gentoo
# mount -t ext3 /dev/cobd2 /mnt/gentoo/
# mkdir /mnt/gentoo/usr
# mount -t ext3 /dev/cobd3 /mnt/gentoo/usr
# mkdir /mnt/gentoo/var
# mount -t ext3 /dev/cobd4 /mnt/gentoo/var
# mkdir /mnt/gentoo/home
# mount -t ext3 /dev/cobd5 /mnt/gentoo/home
  • 以上が完了すると、df -h の出力がこんな感じになっているはずです。
$ LANG=C df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/cobd0            2.0G  1.2G  749M  61% /
tmpfs                 126M     0  126M   0% /dev/shm
/dev/cobd2           1008M   33M  925M   4% /mnt/gentoo
/dev/cobd3            5.0G   33M  4.7G   1% /mnt/gentoo/usr
/dev/cobd4           1008M   33M  925M   4% /mnt/gentoo/var
/dev/cobd5            2.0G   33M  1.9G   2% /mnt/gentoo/home

stage3からのインストール

  • 再度、起動中のubuntuシステムにログインします。起動直後からsshが使えるようなので、sshでログイン & scpでstageファイル(stage3-i686-2005.1.tar.bz2)とportageのスナップショット(portage-20051029.tar.bz2)を転送します。

例:

  # DOSプロンプト上にて
  > pscp c:\\stage3-i686-2005.1.tar.bz2 ubuntu@192.168.0.10:
  > pscp c:\\portage-20051029.tar.bz2 ubuntu@192.168.0.10:
$ cd /mnt/gentoo
$ sudo tar xjvf ~/stage3-i686-2005.1.tar.bz2
  (延々と続く)

ということでハンドブックを参照するとよいと思います。要は、coLinuxに入れるときには、以下の流れで普通にインストールできますよ、ということでした。

  1. 空ファイル作成
  2. 設定ファイルをいじってcoLinuxハードウェア(ブロックデバイス)として認識可能にする
  3. バイスノードを作ってOSからアクセス可能とする
  4. フォーマットしてマウントする。これでユーザから操作可能。

あとはカーネル設定も飛ばしても大丈夫。coLinux自身がカーネルを持ってますからね。
自分でカーネルビルドをしたい場合は、vanillaをベースにパッチを当てるのがいいと思います。時間があるときにでもcoLinux用パッチを当てるカーネルソースをportage化しようと思ってます。

*1:今回は、 /、usr、var、home、tmpをすべて別のファイルにする例です。 めんどくさければ全部rootにいれてしまってもいいかと思います。(普段使っている通常のGentooマシンでは、私もそういう構成にしています)

*2:journalが始まったという通知が出ますが、エラー等ではないので気にせずに。