Gentoo とさくらVPS

2010年9月1日からさくらのVPSが正式スタートしました.初期インストールで選べるのは CentOS だけなので,他のさくらインターネットのサービス同様 Gentoo を選ぶことはできません.

しかしコントロールパネルからシリアルコンソール (ttyS0) を操作することができるので,上手くやれば CentOS 以外の様々な Linux ディストリビューションやFreeBSDをインストールしてしまうことができます (噂によれば Windows さえも :).

月額980円と安価なので,個人用途でも仕事でも色々と使えそうです.しかし毎回手動で作業するのは面倒なので,作業工程をスクリプトの形でほぼ自動化してみました.以下,スクリプトがどのようにGentooをインストールしていくか,作業の備忘録も兼ねて簡単に記述していきたいと思います.

bootstrap-0-prepare.sh

CentOS 上で必要な作業.インストール時には CentOS を削除する必要があるので,スワップ領域 (/dev/hda3: 2GB) に最新の Gentoo minimal install CD を展開し,こちらを使って再起動を行います.起動後にCDの領域を探す処理が入っているので,CDの内容の展開は必須です.

最新の minimal CD のダウンロードや展開,GRUBの設定変更も自動です.また再起動後にも問題なくインターネットに接続できるよう,ネットワーク周りの設定もバックアップしておきます.シリアルコンソール周りの設定は特にいじらなくても起動できるようです.

本当は後述の Gentoo 上での作業まで一括自動実行にしたかったのですが,CentOS がマウントできる squashfs のバージョンが古すぎて (Gentoo の squashfs のバージョンが新しすぎて) イメージが編集できないため,一旦パス.

bootstrap-1-base.sh

Gentoo の標準的なインストールは,ディスクやネットワークの設定,stageファイルの展開などを行うフェーズと,インストールした領域に chroot して実際の具体的な設定を行うフェーズに大きく分かれ,このスクリプトはハンドブックの3章から6章の頭までに相当する,chroot までの作業を行います.

バックアップしたネットワーク設定の復元や,最新の stageファイルのダウンロードなどもすべて自動です.また,スワップ領域を潰してしまっている関係で,物理メモリ 512MB だけだと emerge が途中でコケてしまう恐れがあることから (というかコケた),適当な大きさのスワップファイルを作成して有効化しています.

ここから後のスクリプトは自動的に実行されるよう,前のスクリプトの内部で設定されます.手動で実行する必要はありません.

bootstrap-2-chroot.sh

chroot 後,ハンドブックの6章途中から10章までの作業を行います.おおむねハンドブックで推奨される通りの作業内容ですが,具体的なツールのインストールを行うので,設定しているシステムの仕様目的によってはカスタマイズの余地があるかもしれません (でも本当に必要最低限です.syslog-ng, vixie-cron, ntpd, logrotate).

カーネルの構築や,システムの設定,あとルートパスワードの設定も行います.ただpasswdコマンドを実行しているだけなので,インストール中にいきなりパスワード入力を求められ (てインストールが中断しま) す.これはどうにかした方がいいかもしれない.

自動的に再起動します.

bootstrap-3-finalize.sh

ハンドブックでいうと11章に相当.インストール時に作成したファイルの削除や,スワップ領域の復元などを行います.ユーザーの作成は行いません.

自動的に再起動します.

bootstrap-4-decorate.sh

このスクリプトは必ずしも実行する必要はないので,自動で実行はされません.でもたぶん実行した方がいいと思います.

現在インストールされている全パッケージのアップデートと,sudo, iptablesのインストールを行います.ポートは22/tcp以外すべて閉じます.sudoはwheelグループで有効にします.

あぁ,あとsshd の認証を公開鍵認証のみに変更します.実行前にユーザー作成して公開鍵を置いておいた方が楽かも.

今後の展望

現状さくらのVPSは同一設定のみ提供されているっぽいので,かなり細かくコンパイラオプションを指定したバイナリパッケージであっても,すべてのホストで使いまわすことができます.また物理メモリは512MBと若干貧弱ですが,CPUの処理能力は申し分ない性能です.

distcc を使って emerge の処理を各ホストに分散し,生成したバイナリパッケージはすべてのホストで使い回せるようになどできたら,なかなか面白いかもしれません.

まぁこれはさくらのVPSに限らない話だけど.

まとめ

公式にはCentOSしか提供されていないさくらVPSにおいて,FreeBSDやDebianのインストール手法を参考に,Gentooをインストールする具体的な方法をまとめました.また実際のインストール作業を支援する目的から,作業の大半を (半)自動化したスクリプトも作成しました.

みなさんも楽しい Gentoo Life を送りましょう.Gentoo かわいいよ Gentoo.