ThinkPad G41 で Debian Jessie へのアップグレード失敗

年末を控えて、Debian Wheezy のマシンを Debian Jessie へアップグレードしています。

今日は ThinkPad G41 の Debian Wheezy を Debian Jessie へアップグレードしました。しかし再起動させたところ “Failed to start to Switch Root.” のエラー表示と共に起動を中断してしまいました。

起動の冒頭部で停止した ThinkPad G41 の Debian Jessie です。

ネット上をいろいろと検索して対策を探していましたが、最適な答えは見つかりませんでした。そこで Debian Jessie を新規インストールすることとしました。

ネットインストールの Debian インストーラを起動させたところです。

この ThinkPad G41 のハードディスクのパーティションは個人ファイルの存在する /home ディレクトリが他のシステム関連のディレクトリと別のパーティションと分けられていたことから簡単に再インストールすることができました。もちろん以前使用していた個人ファイルはそのまま残しています。Gnome3 のデスクトップの設定などもそのまま流用されるので、以前の状態に戻すのもそれほど大変なことではありませんでした。そしてシステム関連のディレクトリが入っているパーティションを Ext3 から Ext4 へ変更してフォーマットもしておきました。/home ディレクトリは、以前の Ext3 のままです。この部分はハードディスクの交換の時にでもフォーマットを入れ替える予定です。

パーティション設定で /home ディレクトリを再利用するように設定しました。
/home 以外のシステム関連のディレクトリは Ext4 でフォーマットし直しました。

HP dc5800 SFF も Debian Jessie 64bit 版へアップグレード

昨日、富士通 ESPRIMO D5350 のシステムを 32bit 版の Debian Wheezy から 64bit 版の Debian Jessie へアップグレードしましたが、本日は HP dc5800 SFF のシステムを 64bit 版の Debian Jessie へアップグレードしました。

どちらかと言えば、この dc5800 SFF が一番仕事で使用するマシンでしたので、アップグレードには慎重でした。しかし Debian Wheezy のメンテナンス期間の終了(2016年4月25日まで)も近いことから今回アップグレードを行いました。

アップグレードの方法は、個人ファイルが収録されている /home のディレクトリが保存されているパーティションを再利用する形で、Debian Jessie を新規インストールしました。その他のパーティションは Ext4 でフォーマットしました。

システムのインストールの後、以前使用していたアプリケーション・ソフトウェアを順次インストールして作業を終了しました。

昨日の富士通 ESPRIMO D5350 でのアップグレードが予行演習という形となったため、作業はスムーズに終了しました。もちろん 32bit 版のドライバを使用したブラザーのプリンタも快調に動作させることができました。

Debian Jessie amd64 へ ブラザー MFC-695CDN をインストール

仕事用に使用していたデスクトップ・パソコン(富士通 ESPRIMO D5350)の 32bit 版の Debian wheezy を 64bit 版の Debian Jessie へアップグレードしました。

アップグレード作業は、個人データが保存されている /home ディレクトリが存在するパーティションを再利用する方法で 64bit 版 Debian Jessie amd64 を新規インストールしました。

システムのインストールが終了した後、以前使用していたアプリケーション・ソフトウェアを順次インストールして、アップグレード作業を終了しました。この追加のインストールで少し苦労したのがプリンタ・ドライバでした。苦労した理由は、32bit 版のドライバしか用意されていなかったためです。

lib32stdc++6 のインストール

64bit 版のシステムへ 32bit 版のプリンタ・ドライバをインストールするポイントは C++ プログラム用のランタイムライブラリ lib32stdc++6 を事前にインストールしておくことでした。

# aptitude install lib32stdc++6

以下の新規パッケージがインストールされます:
  lib32gcc1{a} lib32stdc++6 libc6-i386{a}
更新: 0 個、新規インストール: 3 個、削除: 0 個、保留: 0 個。
2,699 k バイトのアーカイブを取得する必要があります。展開後に 11.2 M バイトのディスク領域が新たに消費されます。
先に進みますか? [Y/n/?]  Y

32bit 版プリンタ・ドライバのダウンロード

brotherのサイトからドライバをダウンロードしました。

http://support.brother.co.jp/j/s/support/index.html

以下の 32bit 版のプリンタ・ドライバをダウンロードしました。

mfc695cdnlpr-1.1.3-1.i386.deb (lpdドライバ)
mfc695cdncupswrapper-1.1.3-1.i386.deb (cupsラッパ)

32bit 版プリンタ・ドライバ(lpd)のインストール

lpd ドライバを dkpg コマンドでインストールしました。

# mkdir -p /usr/lib/cups/filter/
# mkdir -p /var/spool/lpd/
# dpkg -i –force-all mfc695cdnlpr-1.1.3-1.i386.deb

/etc/printcap の内容を確認しました。

MFC695CDN:\
       :mx=0:\
       :sd=/var/spool/lpd/mfc695cdn:\
       :sh:\
       :lp=/dev/usb/lp0:\
       :if=/opt/brother/Printers/mfc695cdn/lpd/filtermfc695cdn:

CUPS Wrapper ドライバのインストール

CUPS Wrapper ドライバは lpd ドライバを CUPS ドライバとして動作させるものなので、lpd ドライバを必ず先にインストールしておく必要があります。

# dpkg -i –force-all mfc695cdncupswrapper-1.1.3-1.i386.deb

CUPS の設定

ブラウザで localhost:631 へアクセスして CUPS の設定を行いました。

CISCO WAP4410N へ OpenWrt をインストール(失敗)

シスコの無線 LAN アクセスポイント WAP4410N へ OpenWrt Chaos Calmer 15.05 をインストールしました。しかし起動の途中でカーネル・パニックとなって停止する状況でした。どうもインストールに失敗しているようでした。

OpenWrt のインストール作業は、OpenWrt の公式 Wiki に解説してある手法で行いました。

Cisco Linksys WAP4410N [OpenWrt Wiki]
https://wiki.openwrt.org/toh/linksys/wap4410n

以下は OpenWrt のインストールの様子を記録したものです。作業はシリアルコンソールから U-Boot 上で行いました。

LAN 設定

まず最初に LAN ポートの設定を行いました。WAP4410N の初期値のままで、周囲のパソコンの IP アドレスを設定する方法が一般的ですが、我が家にはすでに TFTP サーバを組み込んだ家庭内サーバ(192.168.24.100)が存在していることもあり、WAP4410N を家庭内の LAN に参加させるようにしました。

今回の設定では WAP4410N に 192.168.24.149 の IP アドレスを設定しています。そして TFTP サーバに 192.168.24.100 を設定しています。

ar7100> setenv ipaddr 192.168.24.149
ar7100> setenv serverip 192.168.24.100

ping コマンドで LAN の動作確認をしました。

ar7100>ping 192.168.24.100
Trying eth0
dup 1 speed 1000
Using eth0 device
host 192.168.24.100 is alive

フラッシュメモリの消去

ar7100> erase 0xbf050000 0xbf7cffff
First 0xc last 0x83
 100%
Erased 120 sectors

カーネル(uImage)のインストール

TFTP サーバへ事前にカーネル・イメージ(openwrt-15.05-ar71xx-generic-uImage-gzip.bin)を保存しておきます。この TFTP サーバから tftpboot コマンドで WAP4410N のメモリ上へデータを転送させた後、フラッシュメモリへ書き込み(cp.b コマンド)を行いました。

ar7100> tftpboot 0x81000000 openwrt-15.05-ar71xx-generic-uImage-gzip.bin
Trying eth0
Using eth0 device
TFTP from server 192.168.24.101; our IP address is 192.168.24.149
Filename ‘openwrt-15.05-ar71xx-generic-uImage-gzip.bin’.
Load address: 0x81000000
Loading: checksum bad
checksum bad
checksum bad
checksum bad
#######################################################
     ##################################################
     ##################################################
     ##################################################
     ########################################
done
Bytes transferred = 1530928 (175c30 hex)

ar7100> cp.b 0x81000000 0xbf050000 0x175c30
Copy to Flash… done

ルート・ファイルシステムのインストール

TFTP サーバへ事前にカーネル・イメージ(openwrt-15.05-ar71xx-generic-root.squashfs)を保存しておきます。 この TFTP サーバから tftpboot コマンドで WAP4410N のメモリ上へデータを転送させた後、フラッシュメモリへ書き込み(cp.b コマンド)を行いました。

ar7100> tftpboot 0x81000000 openwrt-15.05-ar71xx-generic-root.squashfs
Trying eth0
Using eth0 device
TFTP from server 192.168.24.101; our IP address is 192.168.24.149
Filename ‘openwrt-15.05-ar71xx-generic-root.squashfs’.
Load address: 0x81000000
Loading: checksum bad
checksum bad
checksum bad
checksum bad
#######################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ##################################################
     ################################
done
Bytes transferred = 2490368 (260000 hex)

ar7100> cp.b 0x81000000 0xbf1e0000 0x260000
Copy to Flash… done

U-Boot の環境変数の変更

U-Boot の環境変数を変更して OpenWrt のカーネルが起動できるように設定しました。

ar7100> setenv bootargs console=ttyS0,115200 init=/sbin/init board=WAP4410N mem=32M
ar7100> setenv bootcmd bootm 0xbf050000

U-Boot の環境変数の保存

U-Uoot の環境変数を saveenv コマンドを使用して保存しました。

ar7100> saveenv
Saving Environment to Flash…
copy old content: sect_addr: BF040000  env_addr: BF040000  offset: 00000000
Protect off BF040000 … BF04FFFF
Erasing Flash…First 0xb last 0xb
 100%
Erased 1 sectors
Writing to Flash… done

再起動と動作確認

電源の再投入、または reset コマンドで WAP4410N を再起動させました。

ar7100> reset

しかし残念ながら次のメッセージを出力して起動は停止してしまいました。どうもカーネルがルート・ファイルシステムをマウント出来ないようです。原因を調査の上、再度挑戦を行いたいと思います。

[    0.290000] VFS: Cannot open root device “(null)” or unknown-block(0,0): error -6
[    0.300000] Please append a correct “root=” boot option; here are the available partitions:
[    0.310000] Kernel panic – not syncing: VFS: Unable to mount root fs on unknown-block(0,0)

CISCO WAP4410N フラッシュメモリのバックアップ

シスコの無線 LAN アクセスポイント WAP4410N のフラッシュメモリのバックアップを行いました。

JTAG によるフラッシュメモリのバックアップは断念しました。そこで OpenWrt のファームウェアをインストールする前にバックアップができないものかと検討していたところ、下記の OpenWrt Wiki を参考にしながら行うことができました。

Generic Backup [OpenWrt Wiki]
https://wiki.openwrt.org/doc/howto/generic.backup

フラッシュメモリの状態確認

シスコのオリジナル・ファームウェアで起動させたあと、シリアルコンソール上で作業を行いました。

まず最初にフラッシュメモリのパーティションの様子を確認しました。

[VAP0 @ wapb2f5d4]# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00010000 “u-boot”
mtd1: 00010000 00010000 “u-boot-env”
mtd2: 00650000 00010000 “rootfs”
mtd3: 00140000 00010000 “uImage”
mtd4: 00010000 00010000 “nvram”
mtd5: 00010000 00010000 “calibration”

各パーティションデータの読み出し

六つに分かれているパーティションのデータを読み出しました。読み出し先は /tmp ディレクトリとしました。なお作業では dd コマンドが存在しないため、cat コマンドを使用しました。

# cat /dev/mtdblock0 > /tmp/u-boot.img
# cat /dev/mtdblock1 > /tmp/u-boot-env.img
# cat /dev/mtdblock2 > /tmp/rootfs.img
# cat /dev/mtdblock3 > /tmp/uImage.img
# cat /dev/mtdblock4 > /tmp/nvram.img
# cat /dev/mtdblock5 > /tmp/calibration.img

パーティションのデータの転送

各パーティションのデータを ftpput コマンドで転送しました。WAP4410N は DHCP 機能によって家庭内の LAN に接続することが出来ていました。またデータ転送で活躍する nc や scp などのコマンドが存在しなかったため、ftpput を使用しています。 ftpput を使用するに当たっては、作業パソコンに ftp サーバを稼動させておく必要があります。ftp サーバを稼動させる方法は本記事では紹介していません。

コマンドは、転送先の ftp サーバ(192.168.24.50)のユーザ:user、パスワード:password と仮定して記述しています。

# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 u-boot.img /tmp/u-boot.img
# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 u-boot-env.img /tmp/u-boot-env.img
# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 rootfs.img /tmp/rootfs.img
# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 uImage.img /tmp/uImage.img
# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 nvram.img /tmp/nvram.img
# ftpput -v -u ‘user’ -p ‘password’ 192.168.24.50 calibration.img /tmp/calibration.img

以上で六つのパーティションのデータのバックアップが出来ました。

CISCO WAP4410N の分解(シリアルコンソール、JTAG)

シスコの無線LANアクセスポイントの WAP4410N を分解しました。そしてシリアルコンソールでログインを試みました。さらに JTAG でもアクセスを試みました。

分解作業

分解は比較的簡単でした。底面にある四つのゴム足を引き剥がして、その中にあるネジ(4本)を取り外して、天板を持ち上げました。天板と側面の間に小さなフックが各面一箇所ずつありましたが、爪が小さいこともあって、簡単に外すことができました。

WAP4410N の底面の様子です。
ゴム足を剥がすとネジが見えてきます。
四本のネジを外すと、天板を外すことができます。
天板を外して、内部のボードが見えてきました。

ボードの観察

搭載されている主要チップは次の通りでした。

  • Atheros AR9132-BC1E
  • MX29LV640EBTI-70G (8MB, Flash)
  • NT5DS16M16DS-5T (32MB, RAM)

シリアルコンソールの端子には、すでに 4 ピンのピンヘッダが取り付けられていました。JTAG の端子は、スルーホールの状態でした。

シリアルコンソールと JTAG 端子の様子

裏面を観察すると、部品の配置は少なめでした。意外とボードが汚れていたのががっかりでした。

WAP4410N のボードの裏面

JTAG へピンヘッダ

JTAG 端子のスルーホールへピンヘッダをハンダ付けしました。これが結構苦労しました。
GND 端子の部分は放熱が良好なため、ハンダを抜き取ることができませんでした。信号端子の部分だけハンダを抜き去りました。そして信号端子の部分を先にハンダ付けした後、残りの GND 端子は、 1 ピンずつスルーホールを 100 ワットの大型ハンダゴテで温めながらピンヘッダを押し込むようにしてハンダ付けしました。

JTAG 用ピンヘッダをハンダ付けしたところです。

電源ジャックのセンターピン対策

最近我が家の定番となった電源ジャックのセンターピン対策を行なっておきました。センターピンへリード線をハンダ付けをして、裏面にある Vcc パターンへハンダ付けしておきました。

電源ジャックのセンターピンへリード線をハンダ付けしたところです。

シリアルコンソールの動作確認

シリアルコンソールのピンヘッダへシリアルケーブルを接続して動作確認をしました。接続速度は 115200bps でした。
U-Boot が起動しました。しかし U-Boot へログインするタイミンが不明で、そのままシステムが起動してしまいました。何度かログインを試みたところ、起動する冒頭部分からリターンキーを連打しているとログインできるようです。

シリアルケーブルを接続したところです。
— U-Boot の起動画面 —
U-Boot 1.1.4 (Aug 19 2009 – 14:53:37)

AP83 (ar9100) U-boot 0.0.11
32 MB
Top of RAM usable for U-Boot at: 82000000
Reserving 294k for U-Boot at: 81fb4000
Reserving 192k for malloc() at: 81f84000
Reserving 44 Bytes for Board Info at: 81f83fd4
Reserving 36 Bytes for Global Data at: 81f83fb0
Reserving 128k for boot params() at: 81f63fb0
Stack Pointer at: 81f63f98
Now running in RAM – U-Boot at: 81fb4000
Name: MXIC-29LV640DBTC Flash id: 0xC222CB, Size: 8388608 bytes.
Flash:  8 MB
In:    serial
Out:   serial
Err:   serial
Net:   ATHRF1E: Port 0, Neg Success
Link is Down !!!

### main_loop entered: bootdelay=4

### main_loop: bootcmd=”bootm 0xbf6A0000″
WAP4410N – Loader Version 1.08
gpio_init called.
cold start!!!
cold_start flag removed.
mac in flash:    64:00:f1:b2:f5:d4
mac in env :    64:00:f1:b2:f5:d4
Hit any key to stop autoboot:  0
ar7100> 

JTAG でアクセス

DLC-5 ケーブルで接続して動作確認をしました。プローブ動作はできましたが、フラッシュメモリのバックアップはできませんでした。バックアップ動作は行うのですが、吸い上げるデータが特定の決まったパターンのデータが連続している状態でした。

— JTAG のプローブ動作 —
# ./tjtag3 -probeonly /cable:DLC5

================================================
 EJTAG Debrick Utility v3.0.2.1 Tornado-MOD
================================================

Detected IR chain length = 5
Number of device(s) = 1

IDCODE for device 1 is 0x00000001

Probing bus … Done

Instruction Length set to 5

CPU Chip ID: 00000000000000000000000000000001 (00000001)
*** Found a Atheros AR531X/231X CPU chip ***

    – EJTAG IMPCODE ……. : 01100000010000010100000000000000 (60414000)
    – EJTAG Version ……. : 3.1
    – EJTAG DMA Support … : No
    – EJTAG Implementation flags: R4k ASID_8 MIPS16 NoDMA MIPS32

Intial value of Control register is 0000000C
Intial value of status register is  0000007F
01111111 (0000007F)

Status bit 7 Busy Inverted pin 11 = 1
Status bit 6 *Ack          pin 10 = 1
Status bit 5 Paper-out     pin 12 = 1
Status bit 4 Select        pin 13 = 1
Status bit 3 *Error        pin 15 = 1
* means low = true, e.g., *Error

VCC connected
values of Control register after init 0x0000000C
value of status register after init   0x0000007F
system reset complete

Issuing Processor / Peripheral Reset … Done
Enabling Memory Writes … Skipped
Halting Processor … … Done
Init PrAcc … Done
Clearing Watchdog … Done

Enabling Atheros Flash Read/Write … Done
Enter Flash Probe

Probing Flash at (Flash Window: 0x1fc00000) …
Done

Flash Vendor ID: 00000000000000000000000011000010 (000000C2)
Flash Device ID: 00000000000000000010001011001011 (000022CB)
*** Found a MX29LV640B 4Mx16 BotB     (8MB) Flash Chip ***

    – Flash Chip Window Start …. : 1C000000
    – Flash Chip Window Length … : 00800000
    – Selected Area Start …….. : 00000000
    – Selected Area Length ……. : 00000000

 *** REQUESTED OPERATION IS COMPLETE ***