Xen仮想サーバのlennyへのupgrade 続報 | 雲の上はいつも青空

雲の上はいつも青空

不思議な経歴をもつエンジニア!?の徒然なブログです。
お仕事関係の話が多いと思いますが、コメントとかもらえると中の人はとても喜びます(^O^)/

Xenで動かす仮想サーバのetchからlennyへのアップグレードの続報です。

まずは結果のご報告です。
-----
1.etchの環境で動いていた仮想サーバのイメージは、そのまま、lennyで動いているホスト機へ持っていって大丈夫です。ちゃんと動きます。
ただし、lennyで動作しているホスト機の/bootに、etchの仮想サーバ用のkernelをおいておく必要があります。
もちろん、/etc/xen/においてあるcfgファイルを変更すれば、/bootじゃなくても大丈夫かもしれません。

ターゲットとなる仮想サーバがetchでの最終upgradeされていれば
kernel = '/boot/vmlinuz-2.6.18-6-xen-686'
ramdisk = '/boot/initrd.img-2.6.18-6-xen-686'
となっているはずです。

ですので、lennyで動いているホスト機の/bootへ上記二つのファイルをコピーしてあげてください。
そうすれば、何事も無かったかのようにlenny上でetchの仮想サーバーが起動します。

-----
2.それではetchがインストールされている仮想サーバをlennyへアップグレードします。
これは、残念ながら単にアップグレードしただけでは動きません。
以下にアップグレード手順を書いてみますが、私がいろいろ試した結果なので正式な手順とは異なるかもしれません。

/etc/apt/sorce.lstを更新して、lenny用にします。
deb     http://cdn.debian.or.jp/debian/    lenny main contrib non-free
deb-src http://cdn.debian.or.jp/debian/ lenny main contrib non-free
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main contrib non-free

次に、lennyへアップグレードします。
#aptitude update
#aptitude install aptitude
#aptitude upgrade
#aptitude dist-upgrade

次に、localesとudevが入っているか確認してください。
※特にudevが入っていないと、sshでつながりません。
#dpkg -l | grep locales
#dpkg -l | grep udev

インストールするには、
#aptitude install locales udev

既に入っている場合には、
#dpkg-reconfigure locales で、キャラクターコードを設定してください。 昔と違い、今ならUTF-8でしょうね…

最後にkernelを新しくしますが、Xenの仮想サーバでは/boot直下には何もありません。
Domain0であるホスト機よりkernelを持ってきます。
/etc/xen/にあるcfgファイルを編集します。
kernel = '/boot/vmlinuz-2.6.18-6-xen-686'
ramdisk = '/boot/initrd.img-2.6.18-6-xen-686'
となっている部分を
kernel = '/boot/vmlinuz-2.6.26-1-xen-686'
ramdisk = '/boot/initrd.img-2.6.26-1-xen-686'

へ変更してください。

次に、kernelが読むモジュールファイルがあるので、これをゲスト機(例ではrickdom)へ転送します。
scp -r /lib/modules/2.6.26-1-xen-686 rickdom:/lib/modules

あとはおまじないを一つ!
extra = 'xencons=tty' これを、cfgファイルに書いておくと一発で起動するはずです。

私が設定したcfgファイルを参考に書いておきます。
#
# Configuration file for the Xen instance rickdom, created on
# Mon Feb 16 17:09:50 2009.
#
extra = 'xencons=tty'

#
# Kernel + memory size
#
kernel = '/boot/vmlinuz-2.6.26-1-xen-686'
ramdisk = '/boot/initrd.img-2.6.26-1-xen-686'
memory = '512'

#
# Disk device(s).
#
root = '/dev/sda1 ro'
disk = [ 'file:/home/xen/domains/rickdom/disk.img,sda1,w',
'file:/home/xen/domains/rickdom/swap.img,sda2,w' ]

#
# Hostname
#
name = 'rickdom'

#
# Networking
#
vif = [ 'ip=192.168.68.33' ]

#
# Behaviour
#
on_poweroff = 'destroy'
on_reboot = 'restart'
on_crash = 'restart'

以上、準備が出来たら気合を入れて仮想サーバを再起動して下さい。
日ごろの行いがよければ、ちゃんと立ち上がるはずです。
起動画面を見ていると、unable set system clock … となにやらワーニングが出ます。
ちょっと調べてみたのですが、なにやらバグのようですので、そのうち治ると思います(謎)。
※すくなくてもHWCLOCKPARS="--directisa"では治りませんでした( TДT)