ページ更新: 2008-08-13 (水) (3779日前)

関連: お知らせ#工事予定2008-08-10, Linux/grml, PC/UPS#Nipron_eNSP-300P-S20-11S,

(2008-08-13 作成)

discypus.jp のOSをSarge (3.1)からEtch(4.0)にアップグレードしたときのメモ。

目次

[編集]

準備 #

apt-getやaptitudeなどを使って、Sargeのまま、最新の状態にしておく。

以前の作業(../WoodyからSargeにアップグレード)で *.dpkg-old や *.dpkg-dist が残っていたら、移行した後混乱するので、既存の設定に反映しておくか、消しておく。

使っていないパッケージをdeborphanなどで調べ、消去しておく。

[編集]

バックアップ #

ハードディスクの内容をバックアップしておく。

今回はAcronis True Image 10でドライブ全体をバックアップした。

所要時間は25分(バックアップ20分、ベリファイ5分)。

なお、今回は以下の4つの組み合わせでバックアップを試した。

True Imageバックアップ先
TI11ATA33+内蔵HDD(hdb)×(見えるけどバックアップ先にできない)
TI11USB1.1+2.5inchHDD(NTFS)×(見えない)
TI10ATA33+内蔵HDD(hdb)
TI10USB1.1+2.5inchHDD(NTFS)△(とても遅い)
[編集]

Etchパッケージのダウンロード #

/etc/apt/sources.listをEtch用に書き換える。

## etch security

deb http://security.debian.org/ etch/updates main contrib non-free
#deb-src http://security.debian.org/ etch/updates main contrib non-free

## etch

deb http://cdn.debian.or.jp/debian etch main non-free contrib
#deb-src http://cdn.debian.or.jp/debian etch main non-free contrib

## etch proposed-updates

#deb http://cdn.debian.or.jp/debian etch-proposed-updates main non-free contrib
#deb-src http://cdn.debian.or.jp/debian etch-proposed-updates main non-free contrib

## etch backports

deb http://www.jp.backports.org/ etch-backports main contrib non-free
#deb-src http://www.jp.backports.org/ etch-backports main contrib non-free

## testing

#deb http://cdn.debian.or.jp/debian testing main non-free contrib
#deb-src http://cdn.debian.or.jp/debian testing main non-free contrib

## unstable

#deb http://cdn.debian.or.jp/debian unstable main non-free contrib
#deb-src http://cdn.debian.or.jp/debian unstable main non-free contrib

パッケージ一覧を更新する:

# apt-get update

作業中は回線を切断したいので、パッケージのダウンロードのみ(-d)を先に行う:

# apt-get -f dist-upgrade -d
Reading Package Lists...
Building Dependency Tree...
The following packages will be REMOVED:
  apache-dev apache2-common base-config emacs20 j2sdk1.3 jdk1.1
  libapache2-mod-python2.3 libchasen0 libdps1 libgc1 libgmp3 libmagick6
  libnet-perl libnewt0.51 libpaperg libpgperl libpq3 libqt2-mt libwmf0.2-2
  libxft1 libxslt1 netkit-inetd ntp-server odbcinst1 proftpd-common
  python-japanese-codecs python-sqlite python2.3 python2.3-clearsilver
  python2.3-dev python2.3-docutils python2.3-japanese-codecs python2.3-sqlite
  python2.3-subversion t1lib1 xfree86-common xlib6g xlibs
The following NEW packages will be installed:
  apache2.2-common apt-howto-uk busybox ca-certificates comerr-dev
  courier-authlib courier-authlib-userdb cpp-4.1 dctrl-tools
  debian-archive-keyring dmidecode ecj-bootstrap fastjar fontconfig-config
  g++-4.1 gcc-4.1 gcc-4.1-base gcj-4.1-base gij-4.1 gpgv initramfs-tools
  iputils-ping klibc-utils laptop-detect liba52-0.7.4 libapr1 libaprutil1
  libavcodec0d libavformat0d libbeecrypt6 libbind9-0 libcairo2 libchasen0c2
  libclass-accessor-perl libcommons-collections3-java libcrypt-ssleay-perl
  libcupsys2 libdb4.3 libdb4.4 libdc1394-13 libdevmapper1.02 libdirectfb-0.9-25
  libdns22 libedit2 libfam0 libfcgi-perl libfontenc1 libfs6 libgc1c2 libgcj-bc
  libgcj-common libgcj7-0 libgcj7-jar libgeoip1 libgmp3c2 libgnutls13
  libgsf-1-114 libgsf-1-common libgsm1 libid3tag0 libio-socket-ssl-perl
  libisc11 libisccfg1 libjaxp1.3-java libkadm55 libklibc libkrb5-dev liblwres9
  libmagick9 libmime-lite-perl libmysqlclient15off libneon25 libneon26
  libnet-ip-perl libnet-ssleay-perl libnewt0.52 libogg0 libossp-uuid-perl
  libossp-uuid15 libparse-debianchangelog-perl libparted1.7-1 libpci2 libpq-dev
  libpq4 libraw1394-8 librrd2 libsasl2-2 libselinux1 libsepol1
  libsigc++-2.0-0c2a libslang2 libssl0.9.8 libssp0 libstdc++6
  libstdc++6-4.1-dev libsvn1 libsysfs2 libtasn1-3 libtime-duration-perl
  libvolume-id0 libvorbis0a libvorbisenc2 libwv-1.2-3 libx11-data libxau6
  libxdmcp6 libxfixes3 libxfont1 libxinerama1 linux-image-2.6-686
  linux-image-2.6.18-6-686 lsb-base mktemp mysql-client-5.0 mysql-server-5.0
  odbcinst1debian1 openbsd-inetd openssh-blacklist openssh-client
  openssh-server php-db php-http php-mail php-net-smtp php-net-socket php-pear
  php-xml-parser php5-common postgresql-7.4 postgresql-client-7.4
  postgresql-client-common postgresql-common python-central python-minimal
  python-support python2.4-dev python2.4-minimal readline-common sysvinit-utils
  tasksel-data tcsh ttf-dejavu tzdata udev update-inetd vim-runtime x11-common
  xbitmaps xcursor-themes xfonts-encodings xfonts-utils xutils-dev
The following packages have been kept back:
  ant apt-file
The following packages will be upgraded:
  adduser alien antlr apache apache-common apache2 apache2-mpm-worker
  apache2-utils apmd apt apt-dpkg-ref apt-howto apt-howto-ca apt-howto-common
  apt-howto-de apt-howto-el apt-howto-en apt-howto-es apt-howto-fr apt-howto-it
  apt-howto-ja apt-howto-ko apt-howto-pl apt-howto-pt-br apt-howto-ru
  apt-howto-tr apt-listchanges apt-rdepends apt-show-versions apt-spy apt-utils
  aptitude ash at auto-apt autoconf automake autotools-dev base-files
  base-passwd bash bc biff bin86 bind9 binutils bison bsdmainutils bsdutils
  build-essential bzip2 canna cdbs chasen checkbot chkrootkit console-common
  console-data console-tools coreutils courier-authdaemon courier-base
  courier-imap cpio cpp cpp-2.95 cpp-3.3 cpuid cron cup cvs cvsutils dash
  db4.2-util dc dcraw debconf debconf-i18n debconf-utils debhelper debianutils
  deborphan debpartial defoma devscripts dh-make dialog dictionaries-common
  diffstat dlocate dnsutils doc-debian doc-linux-ja-text doc-linux-text
  dosfstools dpkg dpkg-dev dpkg-repack drac dselect e2fslibs e2fsprogs egg
  emacs21-bin-common emacs21-common emacs21-nox emacsen-common enscript
  esound-common fakeroot fbset fdclone fdutils fetchmail ffmpeg file fileutils
  findutils finger flex fml fontconfig fping ftp ftpmirror g++ g++-2.95 g++-3.3
  gallery2 gawk gcc gcc-2.95 gcc-3.3 gcc-3.3-base gdb gettext gettext-base
  gettext-el gjdoc gnupg gnuplot gnuplot-nox gnuplot-x11 graphviz grep
  grep-dctrl groff groff-base gs gs-common gs-gpl gsfonts gsfonts-x11 gzip
  hdparm hostname html2text htop httptunnel ibritish ifupdown imagemagick
  imapproxy info initrd-tools initscripts intltool-debian iptables isag ispell
  java-common jfbterm jflex jhead jikes jikes-gij jless junit jvim-canna kaffe
  kaffe-common kaffe-pthreads kakasi kakasi-dic kernel-image-2.6-686
  kernel-package klogd language-env less lha libacl1 libanydata-perl
  libapache-htpasswd-perl libapache-mod-fastcgi libapache-mod-gzip
  libapache-mod-perl libapache-mod-php4 libapache-mod-ruby
  libapache-mod-ssl-doc libapache-ruby1.8 libapache-session-perl
  libapache2-mod-python libapache2-svn libapm1 libapt-pkg-perl
  libarchive-zip-perl libasound2 libatk1.0-0 libattr1 libbcel-java
  libbit-vector-perl libblkid1 libbsd-resource-perl libbsf-java libbz2-1.0
  libc6 libc6-dev libcanna1g libcarp-clan-perl libcgi-perl libchart-perl
  libchasen-dev libcomerr2 libcommons-beanutils-java
  libcommons-collections-java libcommons-dbcp-java libcommons-digester-java
  libcommons-fileupload-java libcommons-logging-java libcommons-modeler-java
  libcommons-pool-java libcompress-zlib-perl libconsole libcroco3
  libcrypt-passwdmd5-perl libcupsys2-gnutls10 libcurl3 libdate-calc-perl
  libdate-manip-perl libdb1-compat libdb3 libdb4.2 libdb4.2-dev
  libdbd-anydata-perl libdbd-csv-perl libdbd-excel-perl libdbd-mysql-perl
  libdbd-odbc-perl libdbd-pg-perl libdbi-perl libdigest-hmac-perl
  libdigest-sha1-perl libelfg0 libemail-valid-perl libesd0 libexpat1
  libexpat1-dev libfam0c102 libfile-mmagic-perl libfontconfig1 libfreetype6
  libgcc1 libgcrypt11 libgd-gd2-perl libgd2-xpm libgdbm3 libglade2-0 libglib1.2
  libglib2.0-0 libgnomecanvas2-0 libgnomecanvas2-common libgnomecups1.0-1
  libgnomeprint2.2-0 libgnomeprint2.2-data libgnomeprintui2.2-0
  libgnomeprintui2.2-common libgpg-error0 libgpmg1 libgtk1.2 libgtk1.2-common
  libgtk2.0-0 libgtk2.0-bin libgtk2.0-common libhtml-clean-perl
  libhtml-parser-perl libhtml-tagset-perl libhtml-template-perl
  libhtml-tree-perl libi18n-charset-perl libice6 libidn11 libimage-info-perl
  libimlib2 libio-string-perl libio-stringy-perl libiodbc2 libisccc0
  libjcode-pm-perl libjpeg-progs libjpeg62 libkakasi2 libkakasi2-dev libkrb53
  liblcms1 libldap2 liblocale-gettext-perl liblockfile-dev liblockfile1
  liblog4j1.2-java libltdl3 liblzo1 libmagic1 libmailtools-perl libmcal0
  libmime-perl libmime-types-perl libmng1 libmx4j-java libncurses5 libncursesw5
  libnet-daemon-perl libnet-dns-perl libnet-domain-tld-perl libnet-ph-perl
  libnet-snpp-perl libnet-whois-raw-perl libnetpbm10 libnetpbm9 libnkf-perl
  libnmz7 libole-storage-lite-perl libopencdk8 liboro-java libpam-modules
  libpam-runtime libpam0g libpam0g-dev libpango1.0-0 libpango1.0-common
  libpaper-utils libpaper1 libparse-recdescent-perl libpcre3 libperl5.8
  libpg-perl libplrpc-perl libpng12-0 libpopt0 libreadline5 libregexp-java
  librpm4 librrds-perl librsvg2-2 librsvg2-bin librsvg2-common libruby1.8
  libsablot0 libsasl2 libsdl1.2debian libsdl1.2debian-oss libsensors3
  libservlet2.3-java libsm6 libsnmp-base libsnmp-session-perl libsoap-lite-perl
  libsocket6-perl libspreadsheet-parseexcel-perl libspreadsheet-writeexcel-perl
  libsql-statement-perl libsqlite0 libsqlite3-0 libss2 libssl-dev libssl0.9.7
  libstdc++2.10-dev libstdc++2.10-glibc2.2 libstdc++5 libstdc++5-3.3-dev
  libsvga1 libt1-5 libterm-slang-perl libtext-charwidth-perl
  libtext-chasen-perl libtext-csv-perl libtext-iconv-perl libtext-wrapi18n-perl
  libtiff4 libtimedate-perl libttf2 libungif4g libunicode-map8-perl
  libunicode-string-perl liburi-perl libusb-0.1-4 libuuid1 libwmf0.2-7 libwrap0
  libwww-perl libx11-6 libxaw6 libxaw7 libxcursor1 libxerces2-java libxext6
  libxft2 libxi6 libxml-filter-xslt-perl libxml-libxml-perl libxml-libxslt-perl
  libxml-namespacesupport-perl libxml-parser-perl libxml-sax-writer-perl
  libxml-simple-perl libxml-twig-perl libxml2 libxmu6 libxmuu1 libxp6 libxpm4
  libxrandr2 libxrender1 libxslt1.1 libxt6 libxtrap6 libxtst6 libzzip-0-12 lilo
  links lintian linux-kernel-headers locales logcheck logcheck-database login
  logrotate logtail lsof ltrace lv m4 mailx maint-guide-ja make makedev
  makepasswd man-db manpages manpages-dev manpages-ja manpages-ja-dev mbr mc
  mime-support minicom mirrordir modconf module-init-tools modutils mount mpack
  mrtg mrtg-contrib mtools mtr-tiny mysql-client mysql-common mysql-server
  namazu2 namazu2-common namazu2-index-tools ncftp ncftp2 ncompress
  ncurses-base ncurses-bin ncurses-term net-tools netbase netcat netkit-ping
  netmask netpbm ng-cjk ng-cjk-canna ng-common nkf ntp ntp-simple ntpdate nvi
  openssl parted passwd patch pciutils pdumpfs perl perl-base perl-doc
  perl-modules pflogsumm php4-cgi php4-cli php4-common php4-curl php4-domxml
  php4-gd php4-ldap php4-mcal php4-mysql php4-pear php4-pgsql php4-sqlite
  pidentd po-debconf portmap postfix postfix-doc postfix-ldap postfix-pcre
  postgresql postgresql-client postgresql-dev powermgmt-base procmail procps
  proftpd psfontmgr psmisc pump pwgen python python-apt python-clearsilver
  python-dev python-docutils python-roman python2.4 qpopper-drac quota rar rcs
  reportbug rpm rrdtool rsync ruby1.8 screen sed setserial sharutils shellutils
  smokeping speedy-cgi-perl sqlite sqlite3 squirrelmail squirrelmail-locales
  ssh ssl-cert strace subversion sudo svgalibg1 sysklogd syslinux sysstat
  sysv-rc sysvinit tar tasksel tcl8.3 tcl8.4 tcpd tcsh-kanji telnet texinfo
  textutils tk8.3 tk8.4 traceroute ucf unixodbc unzip util-linux
  util-linux-locales uudeview vacation vim vim-common vtun w3m wamerican
  webalizer wget whiptail whois whowatch wv wwwconfig-common xfonts-base
  xfonts-intl-japanese xfonts-intl-japanese-big xlibs-data xutils zip zlib1g
  zlib1g-dev
609 upgraded, 152 newly installed, 38 to remove and 2 not upgraded.
Need to get 385MB of archives.
After unpacking 202MB of additional disk space will be used.
Do you want to continue? [Y/n]

ダウンロードの所要時間は35分だった。

[編集]

Etchパッケージのアップグレード #

回線を切断(LANケーブルを抜く)し、さらにデーモンを出来るだけ停止しておく:

あらかじめダウンロードしたパッケージを用いて、アップグレードを行う:

# apt-get -f dist-upgrade -d

アップグレード中にいくつか質問が表示されるので、適宜、現在の設定を残す(N)やディストリビューションが用意した設定を使う(Y)を選択する。

現在の設定を残す(N)を選択すると、ディストリビューションが用意した設定は*.dpkg-distに保存される。

ディストリビューションが用意した設定を使う(Y)を選択すると、現在の設定は*.dpkg-oldに保存される。

アップグレードが完了した後に、/etc以下のファイルを*.dpkg-{dist,old}を調べつつ修正して、*.dpkg-{dist,old}を消去した。

[編集]

ブートローダの変更 (LILO → GRUB) #

lilo から grub に変更する。

# apt-get --purge remove lilo
# apt-get install grub

この後、GRUBの設定を行った。

詳細は失念した。grub-install, update-grub, grubの3つのコマンドを使ったと思う。 うっかり途中で再起動をかけてしまい、起動に失敗したので、grml 1.0のCD-Rで起動してmount /dev/hda2 /mntしてchroot /mntして復旧させたため、 記録を取っていない。

また、/etc/kernel-img.conf に以下の行を追加した(詳しくは /usr/share/doc/grub/README.Debian.gz を参照のこと):

postinst_hook = /usr/sbin/update-grub
postrm_hook = /usr/sbin/update-grub
do_bootloader = no

ついでに、Linux kernelを2.6系に変更した。

# apt-get install linux-image-2.6-686
# update-grub
[編集]

locale(ja_JP.UTF-8), acpid #

localeを追加、デフォルトをja_JP.UTF-8に変更した。(dpkg-reconfigure locale)

apcidをインストールした。これで電源ボタンでシャットダウンできるようになった。

[編集]

現状のバックアップ #

最初に、Mercurialで/etcをバックアップしておく。

# apt-get install mercurial/etch-backports
# cd /etc
# hg init
# hg add *
# hg ci -m "initial"

次に、ハードディスクの内容を、再度Acronis True Image 10でバックアップした。

(PC内蔵UPSの動作確認で失敗したときに、ファイルシステムの破損を避けるため)

バックアップ後、さらにUSB1.1の外付けHDDにコピーしようとしたが、あまりに時間が掛かるので途中で中止した。 (HDDはUSB2.0だが、マザーボードがUSB1.1のみ対応だったので)

[編集]

PC内蔵UPS #

PC内蔵型UPS(PC/UPS#Nipron_eNSP-300P-S20-11S)の動作を確認した。

次の動作を確認した:

  1. 停電後、自動シャットダウンが開始されるまでに復電したときの動作
  2. 停電後、自動シャットダウンの動作
  3. 停電後、自動シャットダウンされ、その後に復電したときの動作

1. OK。通常状態に復帰する

2. OK。/etc/init.d/powerfailの設定時間(failtime)が経過すると正常にシャットダウンされる。

3. OK。復電すると、自動的にOSが起動する(BIOSの設定)

なお、今回はバッテリーの容量が少ないことを検出したときの動作(緊急シャットダウン)の試験は行わなかった。

また、今回は電源ケーブルをUPSにネジで固定した。これで以前の障害(電源ケーブルが抜けていることに気がつかなかった)が再発する確率は減るはず。

[編集]

動作確認 #

/var/log/ の dmesg, syslog, messages, mail.err, apache/error.log, apache2/error.log などのログファイルの内容を確認し、致命的なエラーが発生していないことを確認した。

また、次の動作を確認した:

  1. sshで外部のネットワークから接続できること
  2. PukiWikiのサイトが外部のネットワークから閲覧できること
  3. 外部のネットワークとの間でメールをやりとりできること

これらの動作の確認にはWILLCOM 03 (+PocketPuTTY, Opera 9.5, W-ZERO3メール) を用いた。

[編集]

タイムテーブル #

09:12/09:30 シャットダウン、設置場所から移動、内部の掃除
09:30/10:25 バックアップ
10:25/10:47 不要なパッケージの削除、ゴミファイル削除
10:47/11:30 パッケージのダウンロード、*.dpkg-*の削除
11:30/12:23 パッケージのアップグレード
13:00/16:25 LILO→GRUB, ゴミファイル削除, acpidインストールと動作確認, locale追加とデフォルトの変更
16:25/17:05 バックアップ
17:05/18:00 PC内蔵UPSの動作確認
18:00/19:00 ssh, メール, PukiWikiの動作確認
19:00/19:10 設置場所に戻し、再度sshとPukiWikiの動作確認
[編集]

課題 #

PCの電源ケーブルを数分抜いていると、次回の起動時にBIOSの設定画面が表示される。CMOSのバックアップ用電池(CR2032)が消耗しているようだ。