Ruby x Agile version:β – Rubyとアジャイルでふつうのシステム開発を実現する永和システムマネジメントのWebサイト

そこで今回はさくら VPS の環境に CentOS 以外の Linux ディストリビューションとして永和システムマネジメントでよく採用されている Debian と Gentoo の二つの OS をインストールしたいと思います。

再インストールに必要な環境の調査

OS を入れ替えるに当たって、CentOS で最初に設定されている情報を事前に調査します。皆さんの環境と共通の項目も多々あるとは思いますが、自身が使用している VPS の設定情報を改めて確認し、メモしておくことをお勧めします。

さくら VPS は KVM 上のインスタンスとして CentOS 5.5 がインストールされており、ブラウザからアクセスできるシリアルコンソールと ssh によるリモート接続によって使用することができます。まず、 KVM 上のシリアルコンソールから OS の再インストールを行うために必要な情報は以下の三つです。

  • ネットワーク設定
  • ハードディスクのパーティション情報
  • Linux カーネルのブートパラメータ

それでは順番に CentOS 上の設定内容を調べていきましょう。ネットワークの設定で必要な情報は ifconfig コマンドと route コマンドで調べます。

$ ifconfig eth0eth0 Link encap:Ethernet HWaddr 52:54:00:00:22:96inet addr:59.106.XXX.XXX Bcast:59.106.XXX.255 Mask:255.255.XXX.0inet6 addr: fe80::5054:ff:fe00:2296/64 Scope:LinkUP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1RX packets:158421 errors:0 dropped:4609 overruns:0 frame:0TX packets:4599 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000RX bytes:7552148 (7.2 MiB) TX bytes:626646 (611.9 KiB)Interrupt:10 Base address:0xe000$ routeKernel IP routing tableDestination Gateway Genmask Flags Metric Ref Use Ifaceloopback * 255.0.0.0 U 0 0 0 lodefault 59.106.XXX.1 0.0.0.0 UG 0 0 0 eth0

上記の実行結果のうち、IPアドレス、ブロードキャストアドレス、サブネットマスクデフォルトゲートウェイをメモしておくと良いでしょう。場合によってはDNSサーバーも必要になるかもしれません。心配な方は /etc/resolv.conf に記載されている内容もメモします。

$ cat /etc/resolv.confnameserver 210.188.224.10nameserver 210.188.224.11

今回は CentOS に設定されているDNSサーバーではなく、再インストール時には Google Public DNS の nameserver である 8.8.8.8 を利用しても良いので、好みの方法を選択して下さい。

続いて、ハードディスクの内容を確認します。ハードディスクの内容は df コマンドを利用して確認します。

$ df -hFilesystem Size Used Avail Use% Mounted on/dev/hda2 18G 1.6G 15G 10% //dev/hda1 99M 12M 82M 13% /boottmpfs 250M 0 250M 0% /dev/shm

上記の結果から、さくら VPS では初期設定として hda1 に boot 用に 100M, hda2 に18Gの領域が確保されていることがわかります。また、df コマンドでは確認できませんが、スワップ領域として hda3 に 2G 用意されています。

このスワップ領域を如何にして利用するかが今回のOS再インストールの肝の部分です。

さて、それでは最後にカーネルのパラメータを確認しましょう。カーネルの起動パラメータは /boot/grub/grub.conf に記載されています。

$ cat /boot/grub/grub.confdefault=0timeout=5#splashimage=(hd0,0)/grub/splash.xpm.gzserial --unit=0 --speed=115200 --word=8 --parity=no --stop=1terminal --timeout=10 serial consolehiddenmenutitle CentOS (2.6.18-194.3.1.el5)root (hd0,0)kernel /vmlinuz-2.6.18-194.3.1.el5 ro root=LABEL=/ console=tty0 console=ttyS0,115200n8rinitrd /initrd-2.6.18-194.3.1.el5.img

上記の設定内容の中で serial と記載されている行と kernel 行の console パラメータの値は KVM のシリアルポート経由で画面を表示するために必須の値ですので、こちらについても忘れずにメモすることをお勧めします。

シリアルコンソールの情報はさくらVPSの公式サイトにもサーバ設定ファイルの変更後、リモートコンソールが利用できなくなりました。として記載されているので参考にして下さい。

なお、このエントリを書くためににOSを再インストールしている途中で grub.conf へ上記のシリアルポートの設定を忘れたために、画面が一切表示されなくなり、CentOSの再インストールを2回ほど経験しました。

Debian のインストール

さてそれでは Debian のインストールにはいりましょう。と言いたいところですがさくら VPS への Debian のインストールは筆者が挑戦する前にも数名の方がチャレンジしているため、ここでは具体的な内容は記載せずに紹介だけにとどめたいと思います。

http://www.touki.info/howto/howtoSakuraDebian.html

上記の手順と同一の方法にて次期リリース候補版である testing(squeeze) のインストールとOSの起動を確認出来ました。

Debian の場合はネットワーク経由でインストーラが起動できるため、細かい設定やパーティションの 変更を必要とせずに、1時間程度で再インストールを行うことができます。普段から Debian を利用している方には上記の手順をお勧めします。

Gentoo のインストール

Gentoo はインストーラを使用せずにカーネルのビルドからブートローダのインストールまで全てユーザーが行う必要があるという硬派なディストリビューションです。しかし、Portage という強力なパッケージ管理システムに支えられた、ユーザー自身によるカスタマイズに柔軟なため、Google や Engine Yard でも積極的に使われているようです。

さて、それでは Gentoo をインストールしてみましょう。Debianがインストールできるのですから Gentoo もインストールできるはずです。

インストールの事前準備

今回は CentOS の初期状態からインストールを開始することを想定していますので、自身の環境を変更した場合はさくらVPSの管理画面から CentOS の再インストールを実施してください。root のパスワードを入力すると数分で再インストールが完了します。

最初に gentoo のインストールメディアを grub の loopback マウント機能を利用して hda3 からブートすることでインストールを試みましたが、CentOSで採用している grub のバージョンでは loopback マウントを利用することが出来ないため断念しました。

そこで、debian と同様に gentoo のカーネルイメージのみを hda3 に配置した上でブートする方法を用いました。gentoo 公式のインストールメディアではカーネルイメージからブート可能かどうか不明であったため、今回のレビューではカーネルイメージからのブートにも対応している SystemRescueCD と呼ばれるトラブル対処用のメディアを用いることにしました。

SystemRescueCD は以下のサイトより入手できます。

http://www.sysresccd.org/Download

SystemRescueCDをダウンロードする時はシリアルコンソール上で wget を用います。シリアルコンソールはコピーはできるもののペーストを行うことができませんので、URLを貼り付けるような操作を行いたい時は bit.ly を利用するとタイプ数を少なくできます。

http://bit.ly/

ダウンロードした systemrescuecd-x86-1.5.8.iso からカーネルイメージを取り出す前にhda3 のスワップ領域を潰して、ext3 でフォーマットし直します。筆者は最初にスワップ領域のままカーネルブートを試みましたが、何故か失敗してしまったので、スワップ領域のパーティションタイプを変更する手順を採用しています。

$ swapoff /dev/hda3$ fdisk /dev/hda

fdisk コマンドではスワップパーティションを標準のLinuxパーティションに変更します。変更するには fdisk のコマンドプロンプトで t をタイプした後、3を選択し、パーティションタイプとして 83 を入力します。fdisk を終了する前に p をタイプし、hda3 の Id が83 になっていることを確認してから w で変更を書き込みます。

フォーマットは mkfs.ext3 コマンドを利用します。

$ mkfs.ext3 /dev/hda3

フォーマットまで完了したら先ほどダウンロードした SystemRescueCD からカーネルイメージを取り出しましょう。今回は /mnt/cdrom に SytemRescueCD を /mnt/work に /dev/hda3 をマウントします。

$ mkdir -p /mnt/cdrom$ mkdir -p /mnt/work$ mount -o loop systemrescuecd-x86-1.5.8.iso /mnt/cdrom$ mount /dev/hda3 /mnt/work

マウント後にカーネルイメージを取り出します。コピーするファイルは以下の7つです。

  • sysrcd.dat
  • sysrcd.md5
  • initram.igz
  • rescuecd
  • rescue64
  • altker32
  • altker64

これらのファイルを /mnt/work ディレクトリの下に sysrcd という名前のディレクトリを作成した後にコピーします。

最後に SystemRescueCD のカーネルイメージを用いて起動するようブートローダである grub の設定ファイルを変更します。ファイルの編集には nano を利用します。

$ nano -w /boot/grub/grub.conf

ファイルをオープンした後に以下の内容をファイルの末尾に記入します。

title SystemRescueCdroot (hd0,2)kernel /sysrcd/rescue64 subdir=sysrcd setkmap=jp console=tty0 console=ttyS0,115200n8rinitrd /sysrcd/initram.igz

上記の設定内容は (hd0,2) というパーティション、hda3 の /sysrcd/rescue64 というカーネルを起動するこということを表しています。さくらVPSは x86_64 アーキテクチャで動作しているため rescue64 を指定しています。また、カーネルパラメータの末尾には最初に調べたシリアルコンソールで動かすために必要なカーネルパラメータも追加しています。

なお、上記の手順は SystemRescueCD の公式サイトにも記載されていますので、より深い情報を知りたい方は参照してみると良いでしょう。

http://www.sysresccd.org/Sysresccd-manual-en_Easy_install_SystemRescueCd_on_harddisk

grub.conf を保存して nano を終了した後に reboot コマンドを利用して OS を再起動します。再起動時に grub の起動メニューに入るためには5秒以内にReturnキーを押下する必要があるので注意して下さい。待ち時間を5秒から変更することも可能です。変更する場合は grub.conf の

timeout 5

の行を任意の数値に変更して下さい。grub の起動メニューに入った後に SystemRescueCd? を選択すると SystemRescueCdでブートすることができます。

Gentooのインストール

ここまで来ると Gentoo のインストールは完了したも同然です。まず始めに Gentoo のシステムをダウンロードするために最初にメモしたネットワークの設定を反映させます。

$ ifconfig eth0 59.106.XXX.XXX broadcast 59.106.XXX.255 netmask 255.255.XXX.0 up$ route add default gw 59.106.XXX.1

SystemRescueCd? の DNS サーバー設定は 8.8.8.8 になっていますので上記のコマンドを実行するだけでネットワークに繋がるはずです。試しに www.google.com あたりに ping を打って確認してみましょう。

$ ping www.google.com

ネットワークの設定が完了したらインストールを開始する前にハードディスクとスワップ領域の準備をしましょう。というのも、CentOSに用意されていたスワップ領域である hda3 は SystemRescueCd? の利用のために潰してしまったからです。

ハードディスク領域は元々 CentOS がインストールされている hda1 と hda2 を用いることにします。今回は boot パーティションとして ext2, ルートパーティションとして ext3 を利用することにしました。当初、ルートパーティションを btrfs にしてみましたがスワップ領域を利用することが何故か出来なかったため断念しました。SystemRescueCd には様々なファイルフォーマットを作成するユーティリティが付属していますので、皆さんの好みに応じてファイルフォーマットを選択すると良いでしょう。

それではハードディスクのフォーマットを行います。以下のコマンドを実行すると CentOS のブートパーティションを含めた全てが初期化され、リセットするとシリアルコンソール経由でも起動することができなくなります。ここからはノンストップでインストールを続けるくらいの気持ちで心を落ち着けてから実行しましょう。

$ mkfs.ext2 /dev/hda1$ mkfs.ext3 /dev/hda2

フォーマットが完了した後にパーティションをマウントしてスワップ領域を作成します。今回は hda1からhda3まで用意されている全てのパーティションを利用しているため、スワップ領域はファイルを利用することにします。

スワップ領域に用いるファイルを作成するには dd コマンドを利用すると楽です。

$ mount /dev/hda2 /mnt/gentoo$ mkdir /mnt/gentoo/boot$ mount /dev/hda1 /mnt/gentoo/boot$ dd if=/dev/zero of=/mnt/gentoo/swap bs=1024 count=524288

ファイルを作成した後、スワップ領域の作成と有効化を行います。

$ mkswap /mnt/gentoo/swap$ swapon /mnt/gentoo/swap

この後は gentoo のハンドブックに従ってインストールを開始します。今回は gentoo のハンドブックの内容の細かい部分は省略しますが以下の章から続きを開始すると良いでしょう。

http://www.gentoo.org/doc/ja/handbook/handbook-amd64.xml?part=1&chap=5

gentoo ハンドブックに記載されている項目以外の設定内容

今回、gentoo ハンドブックで示されているカーネルビルドのうち genkernel を用いる方法を使い、30分程で以下のカーネルを作成することに成功しました。

  • kernel-genkernel-x86_64-2.6.34-gentoo-r1
  • initramfs-genkernel-x86_64-2.6.34-gentoo-r1

また、「10. ブートローダを設定する」ではシリアルコンソールでも起動できるように以下の内容を grub.conf に書き込みました。

default 0timeout 10serial --unit=0 --speed=115200 --word=8 --parity=no --stop=1terminal --timeout=10 serial consoletitle Gentoo Linux 2.6.34-r1root (hd0,0)kernel /boot/kernel-genkernel-x86_64-2.6.34-gentoo-r1 root=/dev/ram0 init=/linuxrc real_root=/dev/hda2 udev console=tty0 console=ttyS0,115200n8rinitrd /boot/initramfs-genkernel-x86_64-2.6.34-gentoo-r1title SystemRescueCDroot (hd0,2)kernel /sysrcd/rescue64 subdir=sysrcd setkmap=jp console=tty0 console=ttyS0,115200n8rinitrd /sysrcd/initram.igz

ここで SystemRescueCD のカーネルブート項目を残しているのは、何かあったときに仮想端末から作業を行えるようにするためです。この項目を消したあとで Gentoo に何かあったときにはまた CentOS の再インストールから手順の再開することになってしまいますので、特別な理由がない限り残しておいた方が良いでしょう。

また、シリアルコンソールを使えるようにするため、chroot 後の /etc/inittab の内容を以下のように変更しました。

# TERMINALS#c1:12345:respawn:/sbin/agetty 38400 tty1 linux#c2:2345:respawn:/sbin/agetty 38400 tty2 linux#c3:2345:respawn:/sbin/agetty 38400 tty3 linux#c4:2345:respawn:/sbin/agetty 38400 tty4 linux#c5:2345:respawn:/sbin/agetty 38400 tty5 linux#c6:2345:respawn:/sbin/agetty 38400 tty6 linux# SERIAL CONSOLESs0:12345:respawn:/sbin/agetty 115200 ttyS0 vt100#s1:12345:respawn:/sbin/agetty 9600 ttyS1 vt100

具体的には、TERMINALS のエントリをコメントアウトして、s0 の項目を有効化、通信速度を 115200 にしています。以下のURLに詳しい情報が掲載されていますので参考にして下さい。

http://www.vanemery.com/Linux/Serial/serial-console.html

また fstab は以下の内容となっています。

/dev/hda1 /boot ext2 noatime 1 2/dev/hda2 / ext3 noatime 0 1

ここまで設定した後に reboot を行うことで無事 gentoo の起動を確認出来ました。

再起動後は忘れずにスワップ領域を作成すると良いでしょう。筆者は hda3 に保存してある SystemRescueCd? のカーネルイメージを一度 home にコピーし、2G の hda3 を 500M の hda3 1.5G の hda4 と分割した後に hda3 を SystemRescueCd? 領域、hda4 をスワップ領域として作成し直しました。この手順が面倒な場合は、先ほど紹介したようなファイルによるスワップ領域でも問題はありませんので、好みに応じて使い分けて下さい。

まとめ

以上のように手間はかかりますが、さくらVPSでも任意のLinuxが利用可能なことがわかりました。debian と gentoo がインストール可能なのですから ubuntu やその他の OS もインストールできると思います。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中