マイティーサーバのCentOS4をubuntuに置き換える方法

がんばって、マイティーサーバのCentOS4をubuntuのdapper(6.06)に置き換えたよー

前書き

マイティーサーバはシリアルコンソールがついている大変ありがたい
レンタルサーバです。とある事情(稟議が面倒)でマイティーサーバ以外には契約できない
お客さんがいるのですが、私はCentOSは好きじゃない。
困ったもんだと思っていましたが、以前にRubyKaigi2006でとみたさんが
やった人がいるよーって言っていたので、根性でやってみることにしました。

さて、作業します

マイティーはエントリーの契約で十分です。webminとかPLESKとは一切つけません。
まず、sshでログインし、rootになります。
/etc/ssh/sshd_configの

PermitRootLogin without-password

にし、rootの.ssh/authorized_keysにpublic keyを登録しておきます。
パーミッションは600、キーの中に改行があるとログインできませんので、
要注意です。
/etc/init.d/sshd restart
し、rootで直接ログインできるようにします。
そして、いったんユーザーでログインしているのを
rootで直接ログインし、

umount /home

として、/homeをアンマウントします。
/etc/fstabを書き換えて、md2をoptに、procとdevをchrootしても使えるようにします。

/dev/md2                /opt                    ext3    defaults        1 2
/dev                    /opt/dev                none    bind            0 0
proc                    /opt/proc               proc    defaults        0 0

mount -aでマウントされますので、mountで確認しておきます。

mv /opt/redadmin /home

とし、移動しておきます。
ubuntu6.06のx86のイメージを/root以下に置いておきます。
これは手元でdebootstrapで作っておいた物です。
欲しい人は連絡をいただければ晒します。
/optに展開します。

cd /opt
tar xjf /root/ubuntu6.06.tar.bz2

chrootしてubuntuに入ります。

chroot /opt

/etc/apt/sources.listを編集します。

deb http://ftp.riken.go.jp/Linux/ubuntu dapper main restricted universe multiverse
deb-src http://ftp.riken.go.jp/Linux/ubuntu dapper main restricted universe multiverse

/etc/fstabを編集します。

proc       /proc  proc   defaults  0   0
/dev/md2   /      ext3   defaults  1   1
/dev/md3   none   swap   sw        0   0

mtabをfstabをコピーして作っておきます。

cd /etc
cp fstab mtab

mdadm,ssh,kernelをインストールします。

apt-get install mdadm ssh
apt-get install linux-image-2.6.15-23-server

※ md2をrootにするので、initrdファイルはmdadmをインストールしてから作る必要があります。
順番を間違えた場合はmkinitramfsで作りなおします。
exitし、centos側に戻り、kernelとinitrdをcentosの/bootにコピーします。

exit
cp /opt/boot/linux-image* /boot
cp /opt/boot/initrd* /boot

ついでに、sshのキーをコピーしておきます。

cp  /etc/ssh/ssh_host_* /opt/etc/ssh

こうすると、OSを切り替えてもsshのログイン時に文句を言われないです。
ネットワークの設定を移行します。
vi /opt/etc/network/interfacesなのですが、
このとき、CentOSではMACアドレスも指定しているようなので、
これも移行しておきます。

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet static
        address 61.58.XXX.XXX
        netmask 255.255.255.0
        network 61.58.XXX.0
        broadcast 61.58.XXX.255
        gateway 61.58.XXX.1
        hwaddress ether 00:E0:81:76:XX:XX

iface eth1 inet static
        address 172.18.XXX.XXX
        netmask 255.255.0.0
        network 172.18.0.0
        broadcast 172.18.255.255
        hwaddress ether 00:E0:81:76:XX:XX

eth1はまだ立ち上がらないようにしておきました。
ubuntuchrootします。

chroot /opt
mkdir -p /var/run/network
touch /var/run/network/ifstate
apt-get install portmap

ネットワークのファイルの追加と、portmapをインストールします。
pormapはnfsマウントするのに必要です。
ついでにいろいろ作業しておきます。
passwdでrootのパスワードをつけておきます。
また、ログインユーザも作っておきます。

passwd
adduser xibbar

grubをインストールします。

apt-get install grub

grub-install /dev/hdaはやっちゃだめです。
失敗すると致命的なので、生かしておきましょう。

mkdir /boot/grub
update-grub

すると、/boot/grub/menu.lstができます。
これを参考にして、centos側の/boot/grub/menu.lstを書き換えます。

title   Ubuntu, kernel 2.6.15-23-server
  root  (hd0,0)
  kernel        /vmlinuz-2.6.15-23-server root=/dev/md2 console=ttyS0,115200n8
  initrd        /initrd.img-2.6.15-23-server

これを追加しました。
/etc/inittabを編集します。これをやらないとシリアルコンソールが使えません。

co:2345:respawn:/sbin/getty 115200 ttyS0

を追加です。
さて、ここまで来たらマイティーパネルからシリアルコンソールを
呼び出して、表示しておきます。そして、リブートします。

shutdown -r now

BIOSが立ち上がり、しばらくするとgrubの画面になります。
そこで、ubuntuのメニューがでたら、grubまでは成功です。
ubuntuを選んでブートしてみます。
無事起動したら成功です。
成功したら、centos側の/boot/grub/menu.lstのdefault=0を1にすると、
デフォルトでubuntuが立ち上がります。
設定を残しておいた、/etc/fstabと/etc/network/interfacesを
修正し、nfsドライブやeth1を使えるようにしておきましょう。
さーて、これからrailsapache、postgresql8を入れなきゃ。
ちゃんとブートしたよーというスクリーンショットです。