最近仮想OSばかり触っているので、たまにいじったサーバーのOSアップグレードメモです。
アップグレードするサーバーにはDVDドライブが付いていたので、DVDブートで挑戦してみました。
CentOS5.5のISOを落としてDVD化
ISOはこちらから落としました。
http://ftp.riken.jp/Linux/centos/5.5/isos/i386/CentOS-5.5-i386-bin-DVD.iso
DVDでブートして上書きインストール
ブートして通常通りインストールを進めていくと、インストーラーが既存のOSをチェックして「CentOS4.8に上書き」 or「再インストール」とたずねてくるので、上書きを指示します。
その後、DVDからハードディスクへファイルのコピーが始まります。コピーするファイル数、合計のバイト数、その途中経過を表示しながら進んでいきます。
トラブル1「インストール途中で止まる」
残り40ファイル、50MBくらいあるファイルをコピーした直後、インストーラーがフリーズしてしまいました。この時点で上書きされたファイルとそうでないファイルが同居しているという気持ち悪い状況でしたが、迷わずCtrl+Alt+Delで強制再起動。
再度DVDブートして進めていくと、ちゃんと途中から始まりました。賢いインストーラーです。
(途中で上書き or 再インストール?の質問時にラベルが「CentOS5.5」になってしまっていましたが、ここも上書きを選びます。)
トラブル2「Grubで止まる」
無事インストールが終わって、DVDを取り出して再起動すると、「GRUB loading stage 2 」とGRUBのところでストップ。
どうもブートローダーが正しく上書きされなかったようです。再度DVDを入れDVDブートします。
起動コマンド入力プロンプトで「linux rescue <enter>」と入れてレスキューモードに入り、シェルのプロンプトが表示されたら、
chroot /mnt/sysimage grub-install /dev/sda
とGRUBを再インストールします。インストール先のデバイス(/dev/sdaの部分)は環境によって変わるのでdfコマンドなどで確認します。
無事起動
DVDを取り出して再起動すると、無事起動しました。
ところが、
トラブル3「yumがエラーで起動しない」
yumを実行すると、
There was a problem importing one of the Python modules required to run yum. The error leading to this problem was: No module named sqlite Please install a package which provides this module, or verify that the module is installed correctly. It's possible that the above module doesn't match the current version of Python, which is: 2.4.3 (#1, Sep 3 2009, 15:37:12) [GCC 4.1.2 20080704 (Red Hat 4.1.2-46)] If you cannot solve this problem yourself, please go to the yum faq at: http://wiki.linux.duke.edu/YumFaq
とエラーが表示されて起動できません。
python-sqliteはすでにインストールされているのですが、このエラーが表示されます。
yumが使えないのでrpmファイルを落としてきて、強制的に上書きします。
wget http://mirror.centos.org/centos-5/5.5/os/i386/CentOS/python-sqlite-1.1.7-1.2.1.i386.rpm
rpm -Uvh python-sqlite-1.1.7-1.2.1.i386.rpm --force
(–forceを付けないとすでにインストールされている!と取り合ってくれません。)
yumでアップデート
4系から5系にアップデートしたので不具合が起こらないようにyumのキャッシュを消してからアップデートします。
sudo yum clean all sudo yum update
以上で、現在も正常に動いています。