こんにちは、スパイシーチキン担当の熊谷です。
ついに技術ブログを書けというお達しが出てしまいまして、お昼ご飯というかスパイシーチキンの登場を期待していた多くの方にとってちょっと寂しい思いをさせてしまいますが、スパイシーチキン担当としてこれからも隙を見てスパイシーチキンネタを書きたいと思いますので、期待してください。
そんなことで、今回は開発環境について書きたいと思います。弊社では、以前は共有の開発用サーバがありそこに繋いで開発を行っていたのですが、現在、基本的に一人一台の開発用PCが支給されています。その開発用PCにそれぞれLinuxをインストールし開発を行っています。Linuxのディストリビューションは好きなものを選んで良いことになっていますが、一応弊社の基本はCentOSのようです。で、私はというともちろんDebianです。昔々はRPM系のディストリビューションを使っていたのですが、Debianのパッケージ管理システムや操作性になれてしまうともう戻れなくなります。
ということで開発用PCにはDebian etchをインストールして、私のメイン環境であるThinkPad X40からSSHを通して開発しています。が、しかし。実はメイン環境であるThinkPad X40にはcoLinuxをインストールしていてそこで開発ということもしています。ネットワークが繋がっていれば会社から支給されているマシンにアクセスして開発ということで問題ないのですが、繋がっていない場合等を考えるとローカルで作業したいという気持ちもあるからです。
coLinuxでも同じようにDebian etchを使いたい!
そんな思いを実現するには・・・、方法はいろいろあります。coLinuxのサイトで配布されているsargeからdist-updateでetchにアップデートする方法やqemuを使用してディスクイメージを作成する方法等々。で、私はというと、coLinuxでスクラッチからインストールして使っています。
その方法ですが、まずcoLinuxをダウンロードしてインストールします。現在バージョン0.8.0と0.7.1があるのですが、私は0.7.1を使っています。インストールでは使用するディスクイメージを選ぶことが出来るのですが、自分でスクラッチから作るので選択しません。また、ネットワークドライバについてはTAPを使ってWindows XPでNATの設定をしています。
次にDebianのサイトからetchのインストールCDをダウンロードします。Debianの場合インターネットに繋がる環境があれば完全なCDセットは必要ないので、netinst CDイメージか名刺サイズのCDイメージで十分です。
そしてこのCDイメージからinitrd.gzを取り出します。DAEMON ToolsでマウントするかLinuxでマウントするかして取り出してください。取り出したinitrd.gzをinstaller-initrd.gzへファイル名を変更してcoLinuxのディレクトリにコピーします。
次に、ディスクイメージの作成です。コマンドプロンプトでcoLinuxをインストールしたディレクトリ内で
fsutil file createnew rootfs_3gb.img 3221257728
fsutil file createnew swap_192mb.img 201358848
上記例では3GB用のディスクイメージと192mb用のスワップイメージを作成しています。
次に、etchをインストールするための設定ファイル(installer.conf)はcoLinuxをc:\coLinuxにインストールしたとして、
kernel=vmlinux
cobd0=c:\coLinux\rootfs_3gb.img
cobd1=c:\coLinux\swap_192mb.img
cobd2=c:\coLinux\debian-testing-i386-businesscard.iso
cofs0=c:\coLinux
root=/dev/ram0 vga=normal ramdisk_size=14409 rw --
initrd=installer-initrd.gz
mem=128
eth0=tuntap,"TAP"
になります。この設定ファイルをつかってcoLinuxを起動します。
colinux-daemon.exe @installer.conf -t nt
すると文字化けしていますが、etchのインストーラーの画面が表示されます。
このChoose languageでは言語を選ぶわけですが、日本語が化けるのでEnglishを選択し、次の画面ではotherを選択でJapanを選択します。
次にSelect a keyboard layout画面になりますが、ここでAlt+F2を押して画面を切り替えEnterを押してコンソールにします。
インストーラはcoLinux上でのインストールというのは基本的にサポートしていないので、必要な諸設定をこのコンソール上で行います。
mkdir -p /mnt/modules
mount -t cofs cofs0 /mnt/modules
tar -zxvf /mnt/modules/vmlinux-modules.tar.gz
mknod /dev/cobd0 b 117 0
mknod /dev/cobd1 b 117 1
mknod /dev/cobd2 b 117 2
mkdir /target
上記コマンドを実行したら、Alt+F1を押してコンソールを切り替えセットアップ画面に戻ります。
で、セットアップの続きをします。Select a keyboard layoutではJapaneseを選択します。すると今度はDetect and mount CD-ROMの画面になります。
CD-ROMのドライバーをフロッピーから読むかという選択なのでNoを選び、
CD-ROMを手動で設定するのでYesを選び、noneを選択します。そうすると、今度は以下のような画面になります。
ここではCD-ROMデバイスの場所を入力するので、
/dev/cobd2
と入力します。
するとLoad installer components from CDという画面になるのでカーネルモジュールを読み込まずにインストールするか聞いてくるので、Yesを選択します。
そしてしばらく待っていると、DHCPを使ったautoconfigurationが失敗して、Configure the networkの画面でContinue待ちになるのでContinueを選択して、Configure the networkの画面でConfigure network manuallyを選択します。ここではネットワークの設定になるので自分の環境の設定を入力します。私の場合、TAPには192.168.40.1というIPアドレスを設定しています。ということで、
IP addressは、
192.168.40.2
Netmaskは、
255.255.255.0
Gatewayは、
192.168.40.1
Nameserverは、
192.168.40.1
Hostnameはお好きに。Domain nameもお好きに。という感じになります。
このネットワークの設定が終わるとDebian archiveのミラーを選択する画面になるのですが、その画面になったらAlt+F2を押してコンソールを切り替えます。
このコンソール画面でディスクイメージを初期化してマウントしてベースシステムをインストールします。
mke2fs -j /dev/cobd0
mount /dev/cobd0 /target
mkswap /dev/cobd1
sync;sync;sync;
swapon /dev/cobd1
mkdir -p /target/dev
mknod /target/dev/cobd0 b 117 0
mknod /target/dev/cobd1 b 117 1
mknod /target/dev/cobd2 b 117 2
cd /target
debootstrap --arch i386 etch /target http://ring.ocn.ad.jp/archives/linux/debian/debian
ベースシステムをインストールしたら、次にfstabの設定をします。
cat <<EOF > /target/etc/fstab
/dev/cobd/0 / ext3 defaults 1 1
/dev/cobd/1 swap swap defaults 0 0
proc /proc proc defaults 0 0
EOF
次にNICの設定です。
cat <<EOF >> /target/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.40.2
netmask 255.255.255.0
gateway 192.168.40.1
EOF
hostsを作成します。
cat <<EOF >> /etc/hosts
127.0.0.1 localhost
EOF
これでインストールは一応完了です。Alt+F1を押してインストーラに戻ってGo Backを選択してmein menuに戻りAbort the installationでインストーラを終了します。
あとはcoLinuxの設定ファイルを通常起動用に変更します。rootfs_3gb.imgをrootデバイスにして、initrdをcoLinuxのデフォルトに戻します。
kernel=vmlinux
cobd0=c:\coLinux\rootfs_3gb.img
cobd1=c:\coLinux\swap_192mb.img
cofs0=c:\coLinux
root=/dev/cobd0
initrd=initrd.gz
mem=128
eth0=tuntap,"TAP"
お疲れ様です!これで完了です。この設定ファイルでcoLinuxを起動するとよけいなものが一切インストールされていないDebian etchが起動します。
本当に最小限のことしかやっていないので、設定等必要なことがありますがあとは好みで行ってください!
ちなみに、タイムゾーンの設定や
tzconfig
shadowパスワードの有効や、
shadowconfig on
パスワードの設定や、
passwd
ユーザの追加や、
adduser ユーザ名
キーボードのインストール・設定や、
apt-get install console-common
ローケルのインストール・設定等。
apt-get install locales
dpkg-reconfigure locale
これらははじめにやっておきましょう。