2008-06-15

_ Ubuntuのアップグレード

昨日 dedibox でホスティングしている 自分のサーバ をアップデートしようとして、 何とUbuntu 6.10がレポジトリから消え去ってしまっていることに気がつきました。 これはまずいと思い、急遽アップグレードすることにしました。

しかし、ここからが難関。 実は前にもアップグレードしようとして、bootパーティションの空きが足りないからどうのこうのと言われて、しくじっていました。 ext3をオンラインリサイズするのはかなりの冒険なので、 こうすることにしました。

  1. 1GBあるスワップを一旦オフにする(swapoff /dev/sda3)。
  2. fdiskでスワップを減らして、別のbootパーティションを100MBで作成(fdisk /dev/sda)。
  3. 新しく出来たパーティションをフォーマット(mkswap /dev/sda4 && mke2fs -j /dev/sda3)。
  4. 今のbootパーティションをコピる(mount /dev/sda3 /mnt && cp -a /boot/* /mnt)。
  5. GRUBを新しい方を見るようにして、かつ、fstabを書き換える(vi /boot/grub/menu.lst && vi /etc/fstab)。
  6. 新しい方に切り替えるため、一旦リブート。GRUBはまだ古い方から機動する(reboot)。
  7. GRUBを新しい方に切り替える(grub-install /dev/sda)。

これで小さい/dev/sda1は捨てて、大きい/dev/sda3になりました。 次に、do-release-upgradeをrootで起動します。すると、update errorが起きて進みません。レポジトリがないんだから無理に決まっているのに、これが成功しないと進んでくれないようです。 do-release-upgradeには無視するオプションとかもないようです。

しょーがないので、一旦適当なところに pdb をつっこんで(Pythonで助かった)、 どこでupdateをやっているのかを調べました。 エラーメッセージを頼りに何度か試していると、 一旦/tmpにコピって、そこから別スクリプトを呼び出すということがわかりましたので、そこで失敗しても無視するように無理矢理return 0を挿入して、続行させました。

これで晴れて7.04にアップグレードされましたが、 これも遅かれ早かれなくなってしまうでしょうから、 この際、徹底的にアップグレードすることにしました。

そして、またここからが問題。 7.10になって、リブートすると、全然帰ってこなくなってしまいました。 リモートなので何が起きているかはよくわかりません。 dediboxの緊急用システムでリブートして、 とりあえずupdate-grubがmenu.lstを破壊していることがわかりました。 当然ブートしないわけです。

しかしそれでもまだ帰ってこない。 /var/logの下を見る限り、一応ブートはしているみたいなので、 ネットワーク絡みかデバイス検出でおかしくなっているらしいことは判明しました。 でももう疲れてきたので、昨日は放置してお休み。

今日になってから、かずひこさんに相談すると、 udevを調べろとのこと。 それもそうだと思い、眺めていると、最近Mandriva慣れしていて、構成の違いに面食らいながらも調べていたのですが、 /etc/iftabから/etc/udev/rules.d/70-persistent-net.rulesに以降した関係で、ネットデバイスが妙なことになっていました。 しかしudevの挙動がかなり意味不明で勝手に変なものを足しやがるので、 いやに苦労しました。 余計なエントリにしか見えないものを徹底的に取り除いたら直りました。

そして、ついに8.04へ。これは普通にうまくいきました。 8.04はLTSでもあるので、当分は気にしなくて良さそうです。 これで一応動く環境にはなったので、アップグレードで失われたものを回復させる作業へ。

lighttpdは、これまた設定ファイルの構成が変化していたので、 mod_fastcgiがlighttpd.confから外されていました。 が、もう考えるのが面倒だったので、手動で追加しておしまいに。

moinmoinは、なぜか途中でremoveされてしまったので、 apt-get install python-moinmoin。 moin.fcgが変化していたので、コピり直して、おしまい。

ntpも途中でremoveされてしまったので、apt-get install ntp。

これで元に戻ったようです。 まだ気がついていないことがあるかもしれませんが、 そう複雑なサーバでもないので、多分大丈夫でしょう。

ところで、正直こんな作業で時間が大量に費やされるのがもったいなくて仕方がないので、いい加減自前サーバを構えるのはうんざりしてきました。 そのうち、機能の限定された、もっと基本的なホスティングサービスに移行するかもしれません。

[]