Ubuntuの遠隔アップグレード

そのサーバのOSに入れてもらったのは Ubuntu Linux 10.04 で、2年近く古いバージョンだった。でも大丈夫、Debianやその派生のディストリビューションはパッケージシステムがしっかりしているので、遠隔操作でも比較的容易にアップグレードが可能だ… とはいえレンタルサーバのOSをsshで遠隔アップグレードという作業は失敗した時のリスクが大きいので、仕事ならやりたくない部類に入る。まあ今回は仕事ではないし、大事なデータは初期前に全てバックアップ済みだ。丁度いい機会なので試してみることにした。

DebianUbuntuのメジャーアップグレードは、隣接する次のバージョンに対してのみ可能だ。途中を飛ばすことはできない。今回は最初の状態が Ubuntu 10.04 lucid で、その次が Ubuntu 10.10 maverick 、その次が Ubuntu 11.04 natty 、そして次の Ubuntu 11.10 oneiric が現在の安定版になる。

3回のメジャーアップグレードを遠隔操作で行って、失敗したら業者への再初期化依頼からやり直し。恐ろしい。

アップグレードガイドを見てみると、作業そのものは3回とも全く同じ手順が書かれている。

Ubuntuサーバーのネットワークアップグレード(推奨)
まだインストールしていなければ、update-manager-coreをインストールします:
sudo apt-get install update-manager-core
/etc/update-manager/release-upgradesを編集し、Prompt=normalを設定します
アップグレードツールを起動します:
sudo do-release-upgrade
画面に表示される手順に従ってください。 

なんともお手軽そうに見えるが、実際には各回のアップグレードの前に以下のような準備を行っている。

  • apt-get update
  • apt-get dist-upgrade
  • deborphanを使った不要パッケージの除去
  • apt-get clean
  • HDD全体のファイルをバックアップ
  • 空き容量の確認

maverick (10.10)

grubを入れるパーティションを選択するダイアログが表示される。ドライブ全体に相当するデバイス名を選択する。
以下のパッケージが自動的に削除される。

 Remove: libdns64 libntfs-3g75 
 Remove (was auto installed) libdirectfb-1.2-0 libgsf-1-114 
  libgsf-1-common libibus1 libts-0.0-0 libxcb-render-util0 
  linux-headers-2.6.32-38 linux-headers-2.6.32-38-generic-pae tsconf 

natty (11.04)

以下のパッケージが自動的に削除される。

 Remove: libdrm-nouveau1 
 Remove (was auto installed) libgirepository1.0-1 gir1.0-glib-2.0 

コンソールの言語を選ぶダイアログが表示されたが、遠隔操作なので実際のモニタにどのようなコンソールが表示されるのかさっぱり分からない。適当に選択したが、問題は特に出ていないようだ。

oneiric (11.10)

以下のパッケージが自動的に削除される。

 Remove: console-terminus 

キーボードのモデルを選ぶダイアログが表示されたが、遠隔操作なので実際のキーボードがどのようなモデルなのかさっぱり分からない。適当に選択したが、問題は特に出ていないようだ。
initramfs-tools が何かエラーを出していたのでパッケージを再設定してみたら

# dpkg-reconfigure initramfs-tools
/usr/sbin/dpkg-reconfigure: initramfs-tools is broken or not fully installed

という表示だった。 /boot にある古いカーネルのファイルを削除してから再設定すると解決した。

# cd /boot
# rm *2.6.32*
# rm *2.6.35*
# dpkg --configure -a

最後にremoveされたパッケージを全てpurgeする。

dpkg -l |awk '/^rc/ {print $2}' |xargs dpkg --purge

アップグレード結果

意外なほど問題がない。RAID管理に使う3dmdのWebUIにアクセスできなくなった。ただし状態の確認だけならtw_cliコマンドでも一応は可能だ。