labunix's blog

labunixのラボUnix

WheezyからJessieにアップグレードしてみた。(簡易版)

■WheezyからJessieにアップグレードしてみた。(簡易版)
 ちょっと使ってみた感想として以下3点。
 今のところ大きな不具合は無さそう。
 依存関係、特に「systemd」関連の管理がきちんと出来て無い印象。
 サーバをアップデートするにはまだちょっと早い気がする。

■現在のバージョンの確認

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Debian
Description:	Debian GNU/Linux 7.8 (wheezy)
Release:	7.8
Codename:	wheezy

$ cat /etc/debian_version 
7.8

■今回は影響の少ないクライアント用途のWheezyが対象なので、
 各ステップの細かい確認は行わないので、簡易版としました。
 つまり、アップグレードに失敗したら再インストールの覚悟をするということです。
 きちんとアップグレードするには事前に確認するべき項目が沢山ありますので、
 公式ガイドを参考にしてください。

 第4章 Debian 7 (wheezy) からのアップグレード
 https://www.debian.org/releases/stable/i386/release-notes/ch-upgrading.ja.html

■提供しているサービスはは後で設定の確認や動作確認をし、
 必要に応じて修正するスキルがあるものとする。
 今回はこの手順については省略する。

$ /sbin/runlevel
N 2

$ /sbin/chkconfig --list | awk '/2:on/ {print $1}' | column
acpi-fakekey		dbus			rmnologin
acpi-support		fail2ban		rsync
acpid			gdm3			rsyslog
anacron			gdomap			saned
apache2			iptables		schroot
atd			logd			ssh
avahi-daemon		motd			sudo
binfmt-support		ntp			vmware
bootlogs		openbsd-inetd		vmware-USBArbitrator
clamav-daemon		postfix			xen
clamav-freshclam	pulseaudio		xendomains
cron			rc.local		xrdp

■既存のシステムの最新化

$ echo "update upgrade autoremove autoclean clean_all" | \
  sed -e 's/ /\n/g' -e 's/_/ /' | awk '{print "apt-get -y "$1}' | sudo sh

■2013年にWheezyをインストールした記録は残しておくことにする。

$ sed -e 's/\(^deb.*\)wheezy/\1jessie/g' \
      -e 's/wheezy-updates/jessie-updates/' /etc/apt/sources.list
# 

# deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 NETINST Binary-1 20130615-23:04]/ wheezy main

#deb cdrom:[Debian GNU/Linux 7.1.0 _Wheezy_ - Official amd64 NETINST Binary-1 20130615-23:04]/ wheezy main

deb http://ftp.jp.debian.org/debian/ jessie main contrib non-free
deb-src http://ftp.jp.debian.org/debian/ jessie main

deb http://security.debian.org/ jessie/updates main
deb-src http://security.debian.org/ jessie/updates main

# jessie-updates, previously known as 'volatile'
deb http://ftp.jp.debian.org/debian/ jessie-updates main
deb-src http://ftp.jp.debian.org/debian/ jessie-updates main

■最も大きな変更点は「init」が「systemd」に置き換わることです。
 その他の注意点は公式ガイドを確認してください。

 第5章 jessie で知っておくべき問題点
 https://www.debian.org/releases/stable/i386/release-notes/ch-information.ja.html

■jessieとしてアップデート
 再起動するサービスの確認など、途中いくつかの操作が必要です。

$ sudo sed -i -e 's/\(^deb.*\)wheezy/\1jessie/g' \
              -e 's/wheezy-updates/jessie-updates/' /etc/apt/sources.list
$ echo "update upgrade autoremove autoclean clean_all" | \
  sed -e 's/ /\n/g' -e 's/_/ /' | awk '{print "apt-get -y "$1}' | sudo sh
$ sudo apt-get -y dist-upgrade

■トラブル回避のための修正

$ echo "ローカルで変更を加えたinitスクリプト"; \
  dpkg-query --show -f'${Conffiles}' | sed 's, /,\n/,g' | \
  grep /etc/init.d | awk 'NF,OFS="  " {print $2, $1}' | \
  md5sum --quiet -c
ローカルで変更を加えたinitスクリプト
$ dpkg -l | grep -v ^ii | awk '/^rc/ {print "sudo apt-get purge -y "$2}'
sudo apt-get purge -y git
sudo apt-get purge -y libcupsdriver1:amd64
sudo apt-get purge -y libescpr1:amd64
sudo apt-get purge -y libevent-2.0-5:amd64
sudo apt-get purge -y libgnome-media-profiles-3.0-0
sudo apt-get purge -y libgssglue1:amd64
sudo apt-get purge -y libpq5
sudo apt-get purge -y libtirpc1:amd64
sudo apt-get purge -y openbsd-inetd
sudo apt-get purge -y printer-driver-pnm2ppa

$ dpkg -l | grep -v ^ii | awk '/^rc/ {print "sudo apt-get purge -y "$2}' | sh
$ sudo dpkg --configure -a 
$ sudo dpkg-reconfigure locales

■Wheezyパッケージのままのアプリケーションを再インストール
 バージョンを含むパッケージもあることで危険度が急激に増すため、この方法はお勧めしない。
 個別に確認した方がベター。

$ dpkg -l | awk '/^ii.*wheezy/ {print $2}' | tr '\n' ' ';echo
libarchive12:amd64 libwireshark2 libwiretap2 libwsutil2 udisks unattended-upgrades wireshark wireshark-common
$ dpkg -l | awk '/^ii.*wheezy/ {print $2}' | tr '\n' ' ' | sudo apt-get install --reinstall -y `xargs`;echo
$ sudo dpkg --configure -a

■もう一度アップデートを実行。

$ echo "update upgrade autoremove autoclean clean_all" | \
  sed -e 's/ /\n/g' -e 's/_/ /' | awk '{print "apt-get -y "$1}' | sudo sh
$ sudo apt-get -y dist-upgrade
$ dpkg -l | grep -v ^ii | awk '/^rc/ {print $2}' | tr '\n' ' ' | sudo apt-get purge -y `xargs`
$ sudo dpkg --configure -a
$ sudo dpkg-reconfigure locales

■再起動

$ sudo shutdown -r now && exit

■Jessie

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 8.0 (jessie)
Release:        8.0
Codename:       jessie

$ cat /etc/debian_version
8.0

■サービスの確認

$ /sbin/runlevel 
N 5

$ /sbin/chkconfig --list | awk '/5:on/ {print $1}' | column
acpi-fakekey            dbus                    rmnologin
acpi-support            fail2ban                rsync
acpid                   gdm3                    rsyslog
anacron                 gdomap                  saned
apache2                 heartbeat               schroot
atd                     iptables                ssh
avahi-daemon            irqbalance              sudo
binfmt-support          logd                    tgt
bluetooth               motd                    vmware-USBArbitrator
bootlogs                network-manager         vtun
clamav-daemon           ntp                     xen
clamav-freshclam        postfix                 xendomains
cron                    rc.local                xrdp

■不要なサービスの削除

$ sudo apt-get purge -y heartbeat avahi-daemon


■再起動したらgdm3が消えていたのでインストール
 セカンドディスプレイの設定。
 ところでClassicというかfallbackがサポートされなくなった。

# apt-get install -y gdm3
# /etc/init.d/gdm3 restart

■gnome-terminalが消えていたのでインストール

$ sudo apt-get install -y gnome-terminal

■ところでGnome-Terminalの透過も出来なくなっているので、
 Gnomeはもう要らない。
 デスクトップ環境をMATEに切り替える。

$ sudo apt-get install mate-desktop-environment

$ echo "update upgrade autoremove autoclean clean_all" | \
  sed -e 's/ /\n/g' -e 's/_/ /' | awk '{print "apt-get -y "$1}' | sudo sh

■ACPI(電源管理)の警告
 GRUBのオプションで「acpi=off」とする方法があるようだが、
 警告は消えないのでスルー。

$ grep GRUB_CMDLINE_LINUX_DEFAULT=.*acpi /etc/default/grub || \
  sed -e 's/GRUB_CMDLINE_LINUX_DEFAULT="/&acpi=off /' /etc/default/grub
$ sudo update-grub2

$ ls -l /etc/init.d/acpi* | awk -F\/ '{print "systemctl status "$NF}' | sh
● acpi-fakekey.service - ACPI fakekey daemon
   Loaded: loaded (/lib/systemd/system/acpi-fakekey.service; static)
   Active: active (running) since 日 2015-05-31 21:47:33 JST; 1min 31s ago
 Main PID: 2756 (acpi_fakekeyd)
   CGroup: /system.slice/acpi-fakekey.service
           └─2756 /usr/sbin/acpi_fakekeyd -f
● acpi-support.service - LSB: Start some power management scripts
   Loaded: loaded (/etc/init.d/acpi-support)
   Active: active (exited) since 日 2015-05-31 21:17:52 JST; 31min ago
● acpid.service - ACPI event daemon
   Loaded: loaded (/lib/systemd/system/acpid.service; disabled)
   Active: active (running) since 日 2015-05-31 21:17:52 JST; 31min ago
 Main PID: 979 (acpid)
   CGroup: /system.slice/acpid.service
           └─979 /usr/sbin/acpid

■無線LANドライバの警告対処
 「ath9k」ドライバで動作するので、使用しない「netathrx」を削除
 この警告は消える。

$ dmesg | grep ndis | tail -3 | sed -e 's/ could/\n&/'
[    5.656766] ndiswrapper (load_sys_files:200):
 couldn't prepare driver 'netathrx'
[    5.657976] ndiswrapper (load_wrap_driver:103):
 couldn't load driver netathrx; check system log for messages from 'loadndisdriver'
[    5.667832] usbcore: registered new interface driver ndiswrapper

$ sudo lspci | grep -i ath
03:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
$ sudo lspci -n | grep "rev 01"
03:00.0 0280: 168c:0034 (rev 01)

$ sudo lspci -d 168c:0034 -v
03:00.0 Network controller: Qualcomm Atheros AR9462 Wireless Network Adapter (rev 01)
	Subsystem: Foxconn International, Inc. Device e052
	Flags: bus master, fast devsel, latency 0, IRQ 17
	Memory at c0500000 (64-bit, non-prefetchable) [size=512K]
	Expansion ROM at c0580000 [disabled] [size=64K]
	Capabilities: [40] Power Management version 2
	Capabilities: [50] MSI: Enable- Count=1/4 Maskable+ 64bit+
	Capabilities: [70] Express Endpoint, MSI 00
	Capabilities: [100] Advanced Error Reporting
	Capabilities: [140] Virtual Channel
	Capabilities: [160] Device Serial Number 00-00-00-00-00-00-00-00
	Kernel driver in use: ath9k

$ sudo ndiswrapper -r netathrx
$  dmesg | grep ndis | tail -3
[    5.940091] ndiswrapper version 1.59 loaded (smp=yes, preempt=no)
[    6.150234] usbcore: registered new interface driver ndiswrapper

■LSBの警告対処
 「High-availability」関連のパッケージをpurge。
 VMPlayerを起動して新しいKernelに合わせて再設定させる。
 この警告は消える。

$ sudo cat /var/log/syslog | grep -i LSB
May 31 16:25:03 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda1
May 31 16:25:03 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda4
May 31 16:25:03 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda5
May 31 17:52:25 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda1
May 31 17:52:25 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda4
May 31 17:52:25 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda5
May 31 18:07:24 vmx-rdebian systemd[1]: Failed to start LSB: High-availability services..
May 31 18:07:32 vmx-rdebian systemd[1]: Failed to start LSB: This service starts and stops VMware services.
May 31 19:08:04 vmx-rdebian systemd[1]: Failed to start LSB: This service starts and stops VMware services.
May 31 20:18:35 vmx-rdebian systemd[1]: Failed to start LSB: ha_logd logging daemon.
May 31 20:18:35 vmx-rdebian systemd[1]: Failed to start LSB: This service starts and stops VMware services.
May 31 20:41:26 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda1
May 31 20:41:26 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda4
May 31 20:41:26 vmx-rdebian os-prober: debug: running /usr/lib/os-probes/mounted/40lsb on mounted /dev/sda5
May 31 20:42:26 vmx-rdebian systemd[1]: Failed to start LSB: ha_logd logging daemon.
May 31 20:42:32 vmx-rdebian systemd[1]: Failed to start LSB: This service starts and stops VMware services.

$ apt-cache search "High-Availability Linux"
heartbeat-dev - Subsystem for High-Availability Linux - development files
libheartbeat2 - Subsystem for High-Availability Linux (libraries)
libheartbeat2-dev - Subsystem for High-Availability Linux (development files)

$ sudo apt-get purge -y libheartbeat2

$ systemctl status logd.service 
● logd.service - LSB: ha_logd logging daemon
   Loaded: loaded (/etc/init.d/logd)
   Active: failed (Result: exit-code) since 日 2015-05-31 21:17:52 JST; 56s ago
  Process: 733 ExecStart=/etc/init.d/logd start (code=exited, status=5)
$ grep -i desc /etc/init.d/logd /etc/logd.cf 
/etc/init.d/logd:# description: Startup script logd service.
/etc/init.d/logd:# Description: ha_logd is a non-blocking logging daemon.
/etc/init.d/logd:# Short-Description: ha_logd logging daemon
$ sudo systemctl disable logd.service
Synchronizing state for logd.service with sysvinit using update-rc.d...
Executing /usr/sbin/update-rc.d logd defaults
Executing /usr/sbin/update-rc.d logd disable
insserv: warning: current start runlevel(s) (empty) of script `logd' overrides LSB defaults (2 3 4 5).
insserv: warning: current stop runlevel(s) (0 1 2 3 4 5 6) of script `logd' overrides LSB defaults (0 1 6).
■なくならないエラー、警告関連のメッセージ
 以下は色々調べても対処方法が曖昧なため様子見とする。

$ dmesg | grep -i "error\|warn\|crit\|fail" | sed -e 's/ with/\n&/'
[    0.413525] acpi PNP0A08:00: _OSC failed (AE_ERROR); disabling ASPM
[    2.325118] usb 1-1.1: string descriptor 0 read error: -22
[    7.492434] EXT4-fs (sda3): re-mounted. Opts: errors=remount-ro
[    7.912637] ACPI Warning: SystemIO range 0x0000000000002040-0x000000000000205f conflicts
 with OpRegion 0x0000000000002040-0x000000000000204f (\_SB_.PCI0.SBUS.SMBI) (20140424/utaddress-258)
[    7.993152] ACPI Warning: SystemIO range 0x0000000000000428-0x000000000000042f conflicts
 with OpRegion 0x0000000000000400-0x000000000000047f (\PMIO) (20140424/utaddress-258)
[    7.993163] ACPI Warning: SystemIO range 0x0000000000000540-0x000000000000054f conflicts
 with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-258)
[    7.993166] ACPI Warning: SystemIO range 0x0000000000000530-0x000000000000053f conflicts
 with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-258)
[    7.993170] ACPI Warning: SystemIO range 0x0000000000000500-0x000000000000052f conflicts
 with OpRegion 0x0000000000000500-0x0000000000000563 (\GPIO) (20140424/utaddress-258)
[    8.504424] [drm:cpt_set_fifo_underrun_reporting] *ERROR* uncleared pch fifo underrun on pch transcoder A
[    8.504425] [drm:cpt_serr_int_handler] *ERROR* PCH transcoder A FIFO underrun

■後片付け

$ dpkg -l | awk '/^rc/ {print $2}' | sudo apt-get purge -y `xargs`
$ dpkg -l | awk '/^ii.*wheezy/ {print $2}'
$ sudo dpkg --configure -a
$ echo "update upgrade autoremove autoclean clean_all" | \
  sed -e 's/ /\n/g' -e 's/_/ /' | awk '{print "apt-get -y "$1}' | sudo sh