さくらのVPSにGentoo Linuxをインストールする


 この blog もホストしている自宅ネットワークでは、基本的に DNS やメールサーバなど、ほぼ全てのサービスを自宅ネットワーク内で提供している。ただ、現実問題として様々な問題から外部サーバが必要になる場合もある。そのため、さくらのVPSを借りて以下を外部から行なっている。

  • セカンダリ DNS
  • 自宅ネットワーク・サービスの死活監視
  • 自宅ネットワーク不通時の代替ページ表示 (予定)

 通常時の負荷はそんなに高くないので月額 980 円の一番安いプランで稼動しているし、用途が用途なので自宅 IP からのアクセスを除き、iptables で DNS の 53 番ポート以外のパケットを DROP している。当初はデフォルトの CentOS 5 で稼動していたが、自宅ネットワーク内の各サーバは Gentoo Linux で動作していることもあり、一台だけ CentOS なのは気分的なものも含めて何かと引っかかるところがあった。

 そこで、「Ruby x Agile version:β – さくらの VPS に Gentoo Linux をインストールする」を参考に、Gentoo Linux をインストールしてみた。ただ、この手順どおりにインストールするのではなく、パーティション構成などを極力自分の好みの状態にした状態でインストールしている。

 とはいえ、基本は Ruby x Agile version:β の記事の通りになる。まず、現状のサーバのネットワーク情報 (IPアドレス、ネットマスク、ブロードキャスト、ゲートウェイアドレス) をメモっておく。特にネットマスクは 255.255.255.0 ではなく 255.255.254.0 になっていたりするので気をつける必要がある。

 必要な情報が得られたら、まず一度 OS を再インストールする。この際、OS はカスタムインストールで Scientific Linux 6 を選択した。理由はインストーラが ext4 をサポートしていることだけなので、もちろん Ubuntu など他のディストリビューションでも構わない。

 再インストール時には、パーティションを注意して切る必要がある。私の場合は、

  • sda1: 128MB – ブートパーティション
  • sda2: 2048MB – スワップパーティション
  • sda3: 512MB – SystemRescueCD
  • sda4: 残り

にした。ここで SystemRescueCD 用のパーティションを切っておくことが重要。最初はブートパーティションを 512MB にしてそこに SystemRescueCD のイメージを入れていたが、SystemRescueCD で起動するとイメージが入っているパーティションがリードオンリーでマウントされてしまい、結果としてブートパーティションにファイルを書き込んだりできなくなる。そのため、SystemRescueCD 専用にパーティションを切っておく必要がある。Gentoo Linux だとカーネル更新に失敗した場合などで SystemRescueCD が必要になるケースがなくもないので、これは残しておいたほうがよい。

 あとは、手順どおりに grub を修正し、SystemRescueCD で起動する。ここからはさくらのVPSで提供されている JavaScript 版のコンソールではなく、TightVNC で作業を行う。理由としては、ターミナルの仕様の問題でカーネルコンパイル時に make menuconfig でカーソルキーが使えないこと。TightVNC で作業を行うので、grub のパラメータからシリアルコンソール関連の設定を外しておく必要がある。あとはGentooハンドブック通りにインストールしていけば良いが、Gentoo Minimal Install CD と違って links2 がないので、Ruby x Agile version:β の記事通り bit.ly などで短縮して stage3 ファイルと portage スナップショットをダウンロードする。

 ただ一点、長期運用を念頭に置くと CFLAGS だけは気をつける必要がある。現時点の /proc/cpuinfo では Core2Duo T7700 などの実 CPU が見えており、-mtune=native でも問題ないが、ホスト側のハードウェア仕様をこちらでコントロールできないこともあり、CPU 依存の最適化は避けておいたほうがいいという考え方もある。特に CPU が AMD のものに変わった場合はまず間違いなく起動しないため、ここだけはリスクを念頭に充分検討するべきだと思う。

 カーネルのコンパイルまでできたら、ブートパーティションにある Scientific Linux の残骸を全て削除し、カーネルと grub 関連ファイルをインストールする。最後に /boot/grub/grub.conf を書いて grub-install すればほぼインストールは完了となる。うちの場合は以下のようにした。

timeout 5
serial --unit=0 --speed=115200 --word=8 parity=no --stop=1
terminal --timeout=10 serial console

title Gentoo Linux (sda3)
root (hd0,0)
kernel /vmlinuz root=/dev/sda3 setkmap=jp console=tty0 console=ttyS0,115200n8r

title System Rescue CD
root (hd0,1)
kernel /sysrcd/rescue64 subdir=sysrcd setkmap=jp console=tty0 console=ttyS0,115200n8r
initrd /sysrcd/initram.igz

 この後に reboot して問題なく Gentoo Linux が起動すればすべて完了になる。うちの場合は、VPS がインターネットにさらされていることもあり、named や sshd などの各種サービスについては iptables の設定が終わるまでは起動せずに置いておいた。この手の外部へのサービスについては、iptables や Tripwire など、各種防御関連の設定が終わってから公開したほうがいいと思う。

 最後に一点、さくらの VPS の料金をクレジット決済する場合は当初 2 週間の無料期間があるが、無料期間中は OP25B がかかっている。これは spam の踏み台にしないための対応と思われるので仕方ないと思うが、さくらの VPS からメールを配信したい場合は

  • クレジットカード以外で決済する。
  • サービス稼働の 2 週間以上前に申し込んでおく。
  • 別のサーバの submission ポートを経由してメールを送信する。

といった対応がある。うちの場合はアラートメールを送信するだけとはいえ、アラートを送信するタイミングでは自宅メールサーバを使えない状況なので無料期間が過ぎてから本運用を開始した。