2013年6月12日水曜日

obs600-13 Debian squeeze を wheezy に

6.0リリースから2年以上経過した2013年5月4日、Debian 7.0(コードネーム: wheezy)が公開された。 そこで、OBS600D をDebian squeeze から wheezy にアップデートした。
(1)sources.listをwheezyに編集して
# cat /etc/apt/sources.list
# Memo ... http://debgen.simplylinux.ch/
deb http://ftp.jp.debian.org/debian wheezy main contrib non-free
deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
(2)apt-getする
# apt-get update
# apt-get upgrade
# apt-get dist-upgrade
(3)ここで現行のlinux-2.6.36 だと問題発生
$ uname -a
Linux obs 2.6.36_obs600 #5 Mon Jun 20 18:01:14 JST 2011 ppc GNU/Linux

kernelが2.6.36だと、wheezyにしたあとの再起動で、
udevd[1019]: unable to receive ctrl connection: Function not implemented
udevdのメッセージが大量に出て、起動しなくなった。

udevは2.6.32からの有効な機能のようなので、
udev requires a kernel >= 2.6.32, not started ... failed!
一旦標準の2.6.29で立ち上げる。そしてudevパッケージを旧バージョンにすると
Function not implementedの大量メッセージは回避できるようなので、その手順をメモとして残す。
#もしくは2.6.36_obs600で起動は、(cd /etc/rcS.d;mv S02udev _S02udev)
#にてudevdを仮に起動しないようにするか。

(4)母艦iMacのtftpdを有効にする
imac2% sudo launchctl load -F /System/Library/LaunchDaemons/tftp.plist
(5)uImage.initrd-cfbootの準備
% wget ftp://ftp.plathome.co.jp/pub/ssdlinux/0.5-20130606/powerpc-obs600/binary/kern.tgz
% tar zxf kern.tgz ./uImage.initrd-cfboot
% tar zxf kern.tgz ./lib/modules/2.6.29/
# lib/modules/2.6.29 が既にobs:/lib/modules/2.6.29にあれば転送せずともよい。
% scp -p ./uImage.initrd-cfboot imac:/private/tftpboot
# ただし/private/tftpboot は drwxr-xr-x root wheel になってる
(6)OBS600D本体DIP-SW1 ONにする
U-Bootプロンプトで停止させる

(7)115200bpsシリアルコンソールからtftp(imac2:192.168.1.61)uImage取得し起動
=> setenv bootargs root=/dev/sda1 rootdelay=15 console=ttyS0,115200
=> tftpboot 0x400000 192.168.1.61:uImage.initrd-cfboot
Using ppc_4xx_eth0 device (LANケーブルはeth0に接続)
TFTP from server 192.168.1.61; our IP address is 192.168.1.29
Filename 'uImage.initrd-cfboot'.
Load address: 0x400000
Loading: #################################################################
  #################################################################
  ###############
=> bootm 0x400000
|
INIT: version 2.88 booting
[info] Using makefile-style concurrent boot in runlevel S.
[FAIL] udev requires a kernel >= 2.6.32, not started ... failed!
 failed!
[ ok ] Setting parameters of disc: (none).
[info] Setting the system clock.
|

Debian GNU/Linux 7.0 obs600 ttyS0

obs600 login: root
Password: 
2.6.29で使用可能な状態で起動した。

(8)udevをsqueeze版にバージョンダウンさせる
# dpkg -l|grep udev (wheezy版のudev)
ii  libudev0   175-7.2  powerpc libudev shared library
ii  udev       175-7.2  powerpc /dev/ and hotplug management daemon

% wget http://ftp.jp.debian.org/debian/pool/main/u/udev/libudev0_164-3_powerpc.deb
% wget http://ftp.jp.debian.org/debian/pool/main/u/udev/udev_164-3_powerpc.deb

# dpkg -i libudev0_164-3_powerpc.deb udev_164-3_powerpc.deb
# echo libudev0 hold | dpkg --set-selections (hold状態にする)
# echo udev hold | dpkg --set-selections (hold状態にする)

# dpkg -l|grep udev (squeeze版のudev)
hi  libudev0   164-3    powerpc libudev shared library
hi  udev       164-3    powerpc /dev/ and hotplug management daemon
この状態で立ち上げると
[ ok ] Starting the hotplug events dispatcher: udevd.

になって
udevd[1019]: unable to receive ctrl connection: Function not implemented

は回避された。当面問題がなければこの状態で使用する。