labunix's blog

labunixのラボUnix

squeezeからアップデートしたwheezyのNICが再起動後に認識しなくなった。

■squeezeからアップデートしたwheezyのNICが再起動後に認識しなくなった。
 エラーの内容は流してしまったが、eth1はup出来るのに、eth0が出来ない。
 「/etc/network/interfaces」の設定に間違いは無い。

# ifup eth1 172.x.x.x/24 up
# ping -c 1 172.x.x.x
# ifup eth0 192.x.x.x/24 up
「/run/network/state」が無いというエラー。

■ディレクトリすらなかったので作成したら復帰した。

# ls /run/network
ls: /run/network にアクセスできません: そのようなファイルやディレクトリはありません
# mkdir /run/network/ && touch /run/network/ifstate
# ifup eth0 192.x.x.x/24 up

■一旦、「/etc/apt/apt.conf」を編集、隣のプロキシを参照するよう変更し、
 一連の「apt-get」。
 「dpkg --configure -a」ですべてメンテナバージョンの設定ファイルに変更し、
 エラーも警告もなくなるまで繰り返す。

# cat /etc/apt/apt.conf
Acquire::http::Proxy "http://172.16.y.y:8080/";

# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done
# dpkg --configure -a
# dpkg --configure -a
# dpkg --configure -a

■今度は一連の「apt-get」を「Del」で始まる行がなくなるまで繰り返す。
 「apt-get -f install」が必要と出れば、それに従う。

# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done
# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done
# for opt in update upgrade autoremove autoclean ;do apt-get $opt -f -y ;done 
# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done

■保留されたパッケージがあれば、それもinstall。

# echo \
  '
  bind9-host bison clisp cpp cups-driver-gutenprint db4.8-util dnsutils exiv2
  foomatic-db g++ gcc git gnome-terminal gnome-terminal-data gnome-user-guide
  gstreamer0.10-plugins-ugly hpijs iceweasel iscsitarget-dkms libboost-dev
  libboost-iostreams-dev libboost-python-dev libboost-serialization-dev
  libboost-test-dev libhpmud0 libparse-debcontrol-perl libxml-sax-perl lintian
  linux-image-2.6-amd64 min12xxw pnm2ppa purifyeps python-reportbug reportbug
  sasl2-bin software-properties-gtk udisks ufraw-batch xpdf yelp
  ' | apt-get install -y `xargs`

# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done

■今回、NICが起動しなかったのはsqueezeからwheezyにアップデートしたマシン。

$ awk '(NR<=3){print}END{print "\n",$0}' /var/log/dpkg.log 
2013-10-17 01:42:35 startup archives unpack
2013-10-17 01:42:36 upgrade gpgv 1.4.10-4+squeeze2 1.4.10-4+squeeze3
2013-10-17 01:42:36 status half-configured gpgv 1.4.10-4+squeeze2

 2013-12-30 15:22:52 status installed fontconfig:amd64 2.9.0-7.1

■上記と同じ構成で冗長化されているが、wheezyをクリーンインストールしたマシン。

$  awk '(NR<=3){print}END{print "\n",$0}' /var/log/dpkg.log
2013-12-16 01:11:41 startup archives unpack
2013-12-16 01:11:44 upgrade base-files:amd64 7.1wheezy2 7.1wheezy3
2013-12-16 01:11:44 status half-configured base-files:amd64 7.1wheezy2

 2013-12-29 23:27:50 status installed printer-driver-hpcups:amd64 3.12.6-3.1+deb7u1

■同じ構成のマシンを参考に、起動するデーモンや、
 設定ファイルの内容を比較、調整する。

 例えば、iscsi系はインストールされているけど、
 常時稼働ではなく普段は止めている場合など。
 ※使わないなら削除の方が良い。

# chkconfig --list | grep iscsi | awk '{print $1}' | \
  for list in `xargs`;do chkconfig "$list" off ;done

# chkconfig --list | grep "ipvsadm\|bluetooth\|mhvtl" | awk '{print $1}' | \
  for list in `xargs`;do chkconfig "$list" off ;done

■squeeze由来のパッケージは削除。ただし、Kernelは除く。

# dpkg -l | grep squeeze | grep -v "kernel\|linux-image" | \
  awk '{print $2}' | apt-get purge -y `xargs`
# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done

■kernelはsqueezeの「2.6.32-5」が動作していたのですね。。。

# dpkg -l | grep squeeze | awk '{print $2}'
linux-image-2.6.32-5-amd64

# echo \
  "
  linux-image-3.2.0-4-amd64 linux-headers-3.2.0-4-amd64
  nvidia-kernel-3.2.0-4-amd64 alsa-base
  " | apt-get install -y `xargs`

# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done

■squeezeのkernelも削除可能になったので、システムの再起動。
 プロキシの設定を戻して、正常動作を確認後、squeeze用のkernelを削除。
 再度、起動確認の為に再起動。

# dpkg -l | grep squeeze | awk '{print $1,$2}'
pi linux-image-2.6.32-5-amd64

# dpkg -l | grep squeeze | awk '{print $2}' | apt-get purge -y `xargs`
# dpkg -l | grep squeeze | awk '{print $2}'
# for opt in update upgrade autoremove autoclean ;do apt-get $opt -y ;done

■kernel依存のパッケージの調整。vmplayerなど。

$ sudo vmware-installer -u vmware-vix
$ sudo vmware-installer -u vmware-player
keep your configuration files? [yes]: yes

$ test -x ./VMware-Player-6.0.0-1295980.x86_64.bundle || \
  chmod +x ./VMware-Player-6.0.0-1295980.x86_64.bundle && \
  sudo ./VMware-Player-6.0.0-1295980.x86_64.bundle --console;
  chmod -x ./VMware-Player-6.0.0-1295980.x86_64.bundle

$ test -x ./VMware-VIX-1.11.1-528992.x86_64.bundle || \
  chmod +x ./VMware-VIX-1.11.1-528992.x86_64.bundle && \
  sudo ./VMware-VIX-1.11.1-528992.x86_64.bundle --console;
  chmod -x ./VMware-VIX-1.11.1-528992.x86_64.bundle

$ vmware-installer -l
Gtk-Message: Failed to load module "canberra-gtk-module": libcanberra-gtk-module.so:
 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません
Product Name         Product Version     
==================== ====================
vmware-player        6.0.0.1295980       
vmware-vix           1.11.1.528992       
labunix@nec-debian:~/iso_system$ dpkg -L libcanberra-gtk-module | grep "so\$"
/usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so

■おなじみの「canberra-gtk-module」のロード失敗ですね。

 vmplayer起動時の「"canberra-gtk-module"のロード失敗」に対処する。
 http://labunix.hateblo.jp/entry/20130722/1374422141

$ dpkg -L libcanberra-gtk-module | grep "so\$" | sed s/"libcanberra-gtk-module.so"// | \
  sudo tee /etc/ld.so.conf.d/gtk-2.0.conf
/usr/lib/x86_64-linux-gnu/gtk-2.0/modules/

$ sudo ldconfig -v 2>/dev/null | grep canberra
/usr/lib/x86_64-linux-gnu/gtk-2.0/modules/libcanberra-gtk-module.so:
	libcanberra-gtk.so.0 -> libcanberra-gtk.so.0.1.8
	libcanberra-gtk3.so.0 -> libcanberra-gtk3.so.0.1.8
	libcanberra.so.0 -> libcanberra.so.0.2.5

$ vmware-installer -lProduct Name         Product Version     
==================== ====================
vmware-player        6.0.0.1295980       
vmware-vix           1.11.1.528992