vmware で Debian lenny から squeeze へアップグレード

デスクトップの Debian lenny を squeeze へアップグレードする前に, 実験的にノートPCの普段使っていない vmware 上でアップグレードを試してみた.

アップグレードはリリースノートを読みながら行った.


システムの最小アップグレード後にネットワークが繋がらなったり, dist-upgrade 後に再起動するとマウスのカーソルが動かなくなったりしてハマったがなんとか解決できた.


ということで, 以下に作業ログを記しておく.

バックアップ

以下のディレクトリの中身をバックアップすることが推奨されている.

  • /etc
  • /var/lib/dpkg
  • /var/lib/apt/extended_states の中身、
  • dpkg --get-selections "*" (引用符を忘れてはいけません) の出力
  • /var/lib/aptitude/pkgstates

splashy パッケージを削除

  • bug #512951 のため、アップグレードの前に splashy パッケージを完全削除 (purge) しておく必要があります。

# apt-get purge splashy

パッケージ splashy はインストールされていなかったようだ.

パッケージリストを更新

# apt-get update

古いロケールから UTF-8 へアップグレードする

# dpkg-reconfigure locales

ロケールが既に ja_JP.UTF-8 UTF-8 になっていることを確認した.

パッケージの状態をチェック

インストールが未完了のパッケージ (Half-Installed) や設定に失敗したパッケージ (Failed-Config)、何らかのエラー状態にあるパッケージを表示

# dpkg --audit

パッケージが hold 状態になっていないか確認

# aptitude search "~ahold" | grep "^.h"
# dpkg --get-selections | grep hold

これらのコマンド後, 何も出力されないことを確認.

APT の取得先 (ソース) の準備

アップグレードを始める前に, apt の設定ファイル /etc/apt/sources.list の "lenny" の部分を "squeeze" に書き換えた.

セッションの記録

# script -t 2>~/upgrade-squeeze.time -a ~/upgrade-squeeze.script

Script started, file is /home/katon/upgrade-squeeze.script

パッケージリストの更新

# apt-get update

システムの最小アップグレード

# apt-get upgrade


今回は, アップグレード方法は aptitude ではなく, apt-get が推奨されているらしい.

Debian GNU/Linux の前回のリリースからのお勧めのアップグレード方法は、パッケージ管理ツール apt-get を用いる方法です。前回のリリースでは、この作業には aptitude が推奨されていましたが、apt-get の最近のバージョンでは同等の機能が提供されており、さらにより高い整合性により望ましいアップグレード結果をもたらします。

カーネルと udev のアップグレード

lenny から squeeze への dist-upgrade を実行する際には、新しい linux-image-2.6-* メタパッケージをインストールすることが推奨されていた.
しかし, このパッケージは dist-upgrade の過程で自動的にインストールされていた. 以下のコマンドで確認.

# dpkg -l "linux-image*" | grep ^ii
ii linux-image-2.6-686 2.6.26+17+lenny1 Linux 2.6 image on PPro/Celeron/PII/PIII/P4
ii linux-image-2.6.26-1-686 2.6.26-13lenny2 Linux 2.6.26 image on PPro/Celeron/PII/PIII/
ii linux-image-2.6.26-2-686 2.6.26-21lenny4 Linux 2.6.26 image on PPro/Celeron/PII/PIII/

  • 新しい udev をインストール

# apt-get install udev

システムを再起動

# reboot

再起動後ネットワークがつながらない問題への対処

再起動後ネットワークがつながらなくなった. ジタバタした結果,
/etc/network/interfaces の中の dhcp 設定の記述

iface eth0 inet dhcp


がない(なくなった?)ことが問題だったようだ.

そこで, 以下のように /etc/network/interfaces を書き換えた.

# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp # この1行を追記


ちなみに, eth* が eth0 であることは dmeseg で以下のように確認した.

# dmeseg | grep eth0
[ 4.252125] eth0: registered as PCnet/PCI II 79C970A

システムのアップグレード

# apt-get dist-upgrade

  • 以下のパッケージの処理中にエラーが発生しました:

/var/cache/apt/archives/libnumru-misc-ruby1.8_0.1.0-1_all.deb
/var/cache/apt/archives/libnumru-units-ruby1.8_1.5-1_all.deb
/var/cache/apt/archives/libnumru-met-ruby1.8_0.0.2-5_all.deb
W: Duplicate sources.list entry http://security.debian.org squeeze/updates/main Packages (/var/lib/apt/lists/security.debian.org_dists_squeeze_updates_main_binary-i386_Packages)

root@modon:~# apt-get upgrade
root@modon:~# apt-get -f install

マウスのカーソルが動かない問題

インストールは無事終了したので再起動してみると, 起動してログインはできるが, マウスのカーソルが動かなくなっていた. ここによると
以下の3点に気をつければマウスが使えるようになる.

  1. VMware Toolsのマウスを使用するには、X11の vmmouse というドライバ( xserver-xorg-input-vmmouse )が必要である。
  2. vmmouseを認識するには、vmmouse_detectから呼ばれるmdetectというコマンドが必要である。
  3. /etc/X11/xorg.confのvmmouseの設定のところに、optionで、「CorePointer」の指定が必要である。

まず, safe モードで起動して,

# apt-get install xserver-xorg-input-vmmouse

# apt-get install mdetect

/etc/X11/xorg.conf を編集し Option "CorePointer" の 1行を追記.

Section "InputDevice"
Identifier "VMware Mouse"
Driver "vmmouse"
Option "CorePointer" # この1行を追記
Option "Device" "/dev/input/mice"
Option "Emulate3Buttons" "true"
Option "ZAxisMapping" "4 5"
EndSection

その後, 再起動するとマウスが動くようになる.

GRUB 2 へアップグレードする

GRUB 2 が動くことを確認し, GRUB 2 へアップグレードする.

# upgrade-from-grub-legacy

GRUB 2 をインストールするデバイスを尋ねられたので, ターミナルを新たに立ち上げ df で調べると,

$ df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/sda1 7850996 6930240 521944 93% /


のように, / は sda1 であることがわかったのでそれを選択.
rebootして, 最初にGRUB 2になっていることを確認.


これで無事にアップグレード作業は終了!

カーネル、旧パッケージの削除

# apt-get purge linux-image-2.6.26-1-686

  • # 必要とされていないパッケージを削除する。

# apt-get autoremove