2015年7月31日金曜日

FreeBSD で Bash のアップデート

FreeBSD の ports へ Bash のアップデート(4.3.39_2 から bash-4.3.39_3 へ)が到着しました。そして珍しいものですが。shared-mime-info もアップデート(1.1_1 から 1.4 へ)も到着していました。

全て portmaster -a で一気に更新をしておきました。

Linksys WRT54G V2 の SD カードは Tomato で動作

先日 SD カードソケットを追加したリンクシス WRT54G V2 ですが、OpenWrt で動作しませんでした。その後 Tomato ファームウェアにも SD カードに対応したファームウェアが存在していることを発見して、この SD カード対応の Tomato ファームウェアをインストールして動作確認を行いました。しかし SD カードが動作するまでには苦難の道のりが待っていました(笑)。

SD カード対応版の Tomato ファームウェアで確認ができました。
要点を最初に述べるべきなのか、それとも実際に苦労した過程の順番に記述するべきか悩みました。

・・・要点から述べることとしました。

SD カードソケットへの配線間違え

まず SD カードソケットへの配線が参考にした OpenWrt の Wiki のページに誤りがありました。その間違えに気づいたのが、SD カード対応の Tomato ファームウェアをインストールしてから判明しました。当初はやはり Tomato ファームウェアでも動作しませんでした。そこで再度 SD カードの配線を見直すことから始めました。

イーサネット・スイッチ IC の ADM6996L のデータシートを探し出し、ピン配置(pinout)から集合抵抗器の RP3 から SD カードソケットへどのように配線されているか観察しました。ここで間違えが判明しました。ADM6996L と RP3 の関係は次のようになっていました。参考にしたものは SD #5(CLK)SD #7(DO) が入れ違っていました。
ADM6996L #80(EECS)--RP3--GPIO2--(未使用)
ADM6996L #81(EECK)--RP3--GPIO3--SD #5(CLK)
ADM6996L #84(EDO)---RP3--GPIO4--SD #7(DO)
ADM6996L #79(EDI)---RP3--GPIO5--SD #2(DI)
WRT54G V2 の場合、このように SD カードへ配線してください。

GPIO の割り当て
 CS - GPIO7
 CLK - GPIO3
 DI - GPIO5
 DO - GPIO4
[ 補足説明 ]
イーサネット・スイッチ IC の ADM6996L と SD カードは、共に GPIO の DI(データ入力), DO(データ出力), CLK(クロック信号) の三つの信号を共用します。ADM6996L と SD カードは、CS(チップセレクト)信号により、どちらのデバイスを有効にするか指定します。そのため CS 信号は共用できない理由になっています。GPIO2 が ADM6996L、GPIO7が SD カードの割り当てとなっています。

Tomato ファームウェアのバージョン

上記の通り SD カードソケットへの配線間違えを修正しましたが、すぐに SD カードを認識してくれたわけではありませんでした。
元々は、私が愛用している 2.4 系 Linux を使用した Shibby 版の Tomato ファームウェア(tomato-ND-1.28.5x-124-SD-VPN.trx)で動作確認を行なっていました。この Shibby 版の Tomato ファームウェアでは、 SD カードのモジュールを有効にするとモジュールエラーとなってしまって、SD カードを認識することはありませんでした。単純なソフトウェア上の問題なのか?それともハードウェアに依存するエラーなのかは不明でした。

そこで SD カードモジュールが追加されたオリジナル版の Tomato ファームウェアをインストールしてみました。すると SD カードを認識して、読み書きも問題なく出来ました。

Tomato ファームウェアの SD カードの設定画面です。

FON2100E の SD カードの時もそうでしたが、古いバージョンで動作することがこの Tomato ファームウェアでみられました。どうも最近は SD カードを追加する改造をする人が少なく、このようなファームウェアの問題点を指摘する人も少なくなっているのでしょうか?
参考ウェブサイト
Tomato firmware with SDHC mod - Gemini
http://gemini.net.pl/~slodki/tomato-sdhc.html
tomato-sdhc-ND-1.28.01
http://gemini.net.pl/~slodki/tomato-sdhc-ND-1.28.01.7z

さてここまで検証したところで、真打の OpenWrt Attitude Adjustment 12.09 を再度インストールしなおして、動作確認をしてみました。やはり動作エラーで SD カードを認識しませんでした。どうも SD カード関連のモジュールエラーのようです。

OpenWrt の場合、システムメモリの容量不足で特定のバージョンまでしか十分に動作させることが出来ないようです。システムメモリを増加させた WRT54G で、新しいバージョンのファームウェアの検証が十分に行われていないのかもしれません。

WRT54G については、もう少し検証を重ねてみたいと思っています。

[追記:2015-07-30]

どうも無線LANの設定などを行うと、何故か SD カードの内容が破壊されてしまうようです。そのため SD カードが認識され無くなってしまいます。SD カードを再度フォーマットし直して、挿し直すと認識するようになります。どうもファームウェアが安定していないようです。

2015年7月30日木曜日

FreeBSD 9.3 の p21 (BIND, OpenSSH, TCP) アップデート

FreeBSD 9.3 へ p21 アップデート(3個)が到着しました。BIND がリモート拒否の脆弱性問題、TCP のリソース枯渇問題、  OpenSSH の脆弱性の解消だそうです。なお FreeBSD 10 系のみの問題として bsdpatch が存在しています。
Debian にも BIND のシステムアップデートが到着していたので FreeBSD にも対策が来ると思っていました(笑)。
FreeBSD-SA-15:17.bind
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:17.bind.asc
FreeBSD-SA-15:16.openssh
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:16.openssh.asc
FreeBSD-SA-15:15.tcp
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:15.tcp.asc
FreeBSD-SA-15:14.bsdpatch (FreeBSD 10 系のみ)
https://www.freebsd.org/security/advisories/FreeBSD-SA-15:14.bsdpatch.asc

/usr/src/UPDATING の内容

20150728:       p21     FreeBSD-SA-15:15.tcp
                        FreeBSD-SA-15:16.openssh
                        FreeBSD-SA-15:17.bind

Fix resource exhaustion in TCP reassembly. [SA-15:15]
Fix OpenSSH multiple vulnerabilities. [SA-15:16]
Fix BIND remote denial of service vulnerability. [SA-15:17]

ソースツリーの更新

subversion でソースツリーを更新しました。
# svn update /usr/src
Updating '/usr/src':
U    /usr/src/sys/netinet/tcp_reass.c
U    /usr/src/sys/netinet/tcp_var.h
U    /usr/src/sys/netinet/tcp_subr.c
U    /usr/src/sys/conf/newvers.sh
U    /usr/src/crypto/openssh/auth2-chall.c
U    /usr/src/crypto/openssh/sshconnect.c
U    /usr/src/contrib/bind9/lib/dns/tkey.c
G    /usr/src/UPDATING
Updated to revision 286015.

ユーザランドとカーネルの再ビルド

今回のアップデートでは、ユーザランドとカーネルの再ビルド(再構築)が必要です。
# cd /usr/src
# make buildworld
# make buildkernel KERNCONF=MYKERNEL

ユーザランドとカーネルのインストール

# make installkernel
# make installworld

マシンの再起動

# reboot

2015年7月29日水曜日

Linksys WRT54G V2 へ SD カードソケットを設置

先日 USB ポートを設置したリンクシス WRT54G V2 へ SD カードのソケットを設置しました。

SD カードソケットの設置前の WRT54G V2 のボードです。

以下のウェブサイトを参考にして加工を行いました。
Linksys WRT54G/GL/GS GPIO [OpenWrt Wiki]
http://wiki.openwrt.org/toh/linksys/wrt54g/gpio
Add an SD card slot to a WRT54G v2 « Your Warranty Is ...
http://www.yourwarrantyisvoid.com/2009/09/09/add-an-sd-card-slot-to-a-wrt54g-v2/

SD カードソケットの取り出し

今回の SD カードのソケットとして使用したのは、下記のダイソーの SD カードを含むいくつかの複合カードリーダを使用しました。ソケット類がいろいろと入手できるので、先日の SD カード専用のものよりお得かもしれません。しかしソケットのハンダ付けを外すのが少々難しいと感じました。ソケットの取り外しには、ハンダ盛りの手法により取り外しました。

ソケットを取り出したダイソーの SD カードリーダです。
接着剤で固定されていた筐体を剥がして取り出した内部基盤です。
ソケットを取り出して、蛇の目基盤へハンダ付けしたところです。

SD カードソケットの設置加工

今回の SD カードソケットへリード線を取り出す GPIO のポイントが非常に小さな集合抵抗器のところにあったため、ハンダ付けは苦労しました。さすがに老眼と手の震えを耐えながらの作業でした(苦笑)。

イーサネット・スイッチの IC の近くにある RP3 の抵抗器から GPIO 信号を取り出します。
(端子の記述に間違えがありました。新しい画像へ入れ替えました。)
リード線をハンダ付けしたところです。

GPIO #7 の CS の取り出しは、DMZ の LED のところから取り出し、そして 3.3 ボルトの電源はシリアルコンソールの端子にある 3.3 ボルト端子から引き出しました。

SD カードソケットを設置した様子です。
SD カードソケットを設置した様子を反対側から見たところです。

SD カードの動作確認

SD ソケットの加工が終わったところで、早速 SD 関連のモジュール類のインストールを行いました。USB 関連のソフトウェアがインストールされていると、フラッシュメモリの容量不足でインストールができなくなりました。そこで一旦システムの初期化を行った後、SD カード関連のモジュール類をインストールしてみましました。

SD カードの動作確認中の WRT54G です。

結果は SD カードを認識することができませんでした。FON2100E で設置した SD カードと同じような雰囲気です。動作確認で使用した OpenWrt Attitude Adjustment 12.09 では動作が難しいのでしょうか? Kamikaze 7.07 以降では kmod-broadcom-mmc のパッケージを使用するようにと上記の参考ウェブサイトには記述されていますが、2.4 カーネル用のものなのでとても使用することができません。困ってしまいました。このまま Attitude Adjustment 12.09 で動作確認を行なって行くか?それとも、一度古いバージョンのシステムをインストールし直した後、ハードウェアの動作確認を行うか思案中です。何となく FON2100E も WRT54G も同じところで躓いている感じです。

Debian Jessie と Wheezy で Bind9 がアップデート

Debian Jessie と Wheezy でネットワーク上の名前の解決を行う Bind9 のアップデートが到着していました。Bind9 は非常に大切な機能を担っています。そこで我が家では早速、主要なパソコンを立ち上げてはアップデートを行いました。


2015年7月28日火曜日

Linksys WRT54G へ USB ポート設置

先日、無駄にメモリを交換してしまった リンクシス WRT54G V2 へ USB ポートを設置してみました。USB ポートの設置にあたり、次のウェブサイトを参考にしました。
Linksys WRT54G, WRT54GL and WRT54GS [OpenWrt Wiki]
http://wiki.openwrt.org/toh/linksys/wrt54g

Adding a USB Port to a WRT54G v2 » Woodhouse Enterprises
http://woodhousellc.com/?p=30
USB ポートを設置する前の WRT54G V2 のボードの様子です。

WRT54G V2 の加工

上記のウェブサイトによりますと WRT54G V2 の BCM4712 の近くにある RH19 と RH20 の部分に USB の信号が BCM4712 から出力されているそうです。この信号が 4.7KΩ の抵抗で終端されている状態となっています。この 4.7KΩ の終端抵抗を取り除いて、新しく 15KΩの抵抗器へと交換します。

黄色い線で囲まれた部分が USB 信号を終端している抵抗器です。

この 15KΩ の抵抗器が必要となるのですが、ThinkPad 600 の部品取り用のマザーボードの USB ポート付近を探してみました。すると運良く 15KΩ のチップ抵抗器が二個存在していました。USB ポート付近の設計はどれも同じような設計になっているようです。そこでこの 15KΩ のチップ抵抗器を WRT54G V2 へ移植することとしました。ついでに USB ソケットも一緒に取り外して、WRT54G V2 で利用することとしました。

ThinkPad 600 のシステムボードに設置されていた 15KΩ のチップ抵抗器です。
ThinkPad 600 から取り外した USB 関連の部品です。

いつものようにコテライザーを使って 4.7KΩ のチップ抵抗器を取り除いた後、15KΩ のチップ抵抗器をハンダゴテを使ってハンダ付けしました。リード線を後から設置することもあり、ハンダを多めに盛りつけておきました。

4.7KΩ から 15KΩ のチップ抵抗器へ交換したところです。

今回の USB ポートの設置は動作確認が主な目的としました。そのため 5 ボルト電源は、バッファローの無線LANルータのうち、Atheros チップが使用されている機種で使用されている 5 ボルトの電源アダプタを利用することとしました。そのため、この 5 ボルトの電源アダプタに合う細身の電源ソケットも用意して、USB ソケット周りにリード線をハンダ付けしました。

USB ポートの設置加工が終わったところです。
左側の黒いソケットは 5 ボルト電源用です。
BCM4712 周辺のリード線の取り付け状況です。
アースは USB の終点抵抗器の近くのチップコンデンサの GND 側へ取り付けました。

USB ポートの設置加工が終わった WRT54G V2 のボードへ電源を投入して動作に問題がないことを確認しました。USB ポートへの電源ですが、WRT54G のボードへ電源が投入された後に、5 ボルト電源を投入するようにしました。そして電源を切る場合には、逆に 5 ボルト電源を切った後、WRT54G V2 のボードの電源を切るようにします。なお将来的には WRT54G V2 の 12 ボルト電源を三端子レギュレータで 5 ボルトへ降圧して USB ポートの電源として使用することを考えています。

USB ポートの動作確認中の WRT54G V2 です。

OpenWrt Attitude Adjustment 12.09 で動作

WRT54G V2 へのシステムは OpenWrt を使用することで決まっていましたが、USB ポート関係のソフトウェア関係でかなり紆余曲折をしました。

元々ウェブ GUI の LuCi の動作が軽い Barrier Breaker 14.07 で動作確認をしようとしたところ、USB 関連のカーネルモジュールのインストールがフラッシュメモリの容量不足によって出来ないことが判明しました。

そこでフラッシュメモリの余裕が大きめな Backfire 10.03.1 をインストールした後、USB 関連のモジュール類のインストールを行なって動作確認をしてみました。ここでは一応動作確認が出来たのですが、問題は異常なブロックデバイスの登録が行われることでした。USB メモリを取り付けた状態で起動させると、ブートログには、ちゃんと sda としてデバイスが認識されるのですが、なぜか /dev/sda として登録されないのです。fdisk -l コマンドで発見したのは、/dev/scsi/host0/bus0/target0/lun0/part1 というデバイスとして登録されていました。これを以下のマウント・コマンドでマウントさせるとちゃんと認識して動作することも確認できました。
# mount /dev/scsi/host0/bus0/target0/lun0/part1 /mnt

そこで Attitude Adjustment 12.09 をインストールして、再度 USB 関連のモジュール類をインストールしたところ、フラッシュメモリの容量がほぼ一杯になりながらもインストールが終了して、USB メモリも /dev/sda として認識させることができました。もちろん動作も問題ありませんでした。

USB メモリを /dev/sda1 として認識させることができました。

以下は Attitude Adjustment 12.09 で USB 関連のインストールを行った様子の記録です。

上記の参考ウェブサイトの案内どおりに基本的なモジュール類をインストールしました。
# opkg install kmod-usb-ohci kmod-usb-storage kmod-usb-core
Configuring kmod-scsi-core.
Configuring kmod-nls-base.
Configuring kmod-usb-core.
Configuring kmod-usb-storage.
Configuring kmod-usb-brcm47xx.
Configuring kmod-usb-ohci.
次に LuCi の設定画面からマウントの操作などができる block-mount をインストールしました。このインストールの後、[System] - [Startup] の中にあるブート時の起動デーモンに fstab が無効(disable)となっているものを有効(enable)へ変更させておきます。
# opkg install block-mount
Configuring libuuid.
Configuring libblkid.
Configuring blkid.
Configuring swap-utils.
Configuring block-mount.
USB メモリは、WRT54G V2 へ取り付ける前にパソコンにて Ext2 フォーマットしておきました。Ext2, Ext3, Ext4 のフォーマットを認識して動作させるためのモジュールの kmod-fs-ext4 をインストールします。古い OpenWrt のバージョンでは、それぞれのフォーマットごとにモジュールが分かれていましたが、Barrier Breaker 14.07 では一つにまとめられていました。
# opkg install kmod-fs-ext4
Configuring kmod-lib-crc16.
Configuring kmod-fs-ext4.
上記のインストールの後、WRT54G V2 を再起動させて、動作確認をします。telnet でログインした後、/dev/sda や /dev/sda1 が存在していることを ls コマンドで確認してください。
# ls /dev/sda
# ls /dev/sda1
以上で動作していれば問題ありませんが、何か問題の解決手段として fdisk をインストールする場合には、次のとおりインストールしてください。"fdisk -l" コマンドで利用可能なデバイスが表示されます。
# opkg install fdisk
Configuring libuuid.
Configuring libblkid.
Configuring fdisk.
# fdisk -l

[参考]

OpenWrt には同じバージョンの中にも複数のファームウェアが存在しています。最終的に使用したファームウェアは次のものです。
OpenWrt Attitude Adjustment 12.09 openwrt-brcm47xx-squashfs.trx
http://downloads.openwrt.org/attitude_adjustment/12.09/brcm47xx/generic/openwrt-brcm47xx-squashfs.trx

FreeBSD で GnuTLS がアップデート

FreeBSD の ports へ GnuTLS のアップデート(gnutls-3.3.15 から gnutls-3.3.16 へ)が到着しました。

その他、GTK や LLVM などの重要な ports もアップデートがありました。
  • Upgrade of gnutls-3.3.15 to gnutls-3.3.16
  • Upgrade of gtk-update-icon-cache-2.24.27 to gtk-update-icon-cache-2.24.28
  • Upgrade of gtk2-2.24.27 to gtk2-2.24.28
  • Upgrade of llvm33-3.3_10 to llvm33-3.3_11

2015年7月27日月曜日

Debian Jessie でカーネル・アップデート

Debian Jessie にカーネルのアップデートが到着しました。

このカーネルのアップデートでシステム・バージョンには変更ありませんでした。8.1 のままでした。

このアップデートでカーネルやカーネル・モジュールもすべて置き換わってしまうため、以前本ブログにて紹介した無線 LAN アダプタのデバイス ID を追加したドライバ・モジュールを使用している読者さんは、再び、ドライバ・モジュールを下記記事を参考にして再インストールしてください。
Debian Jessie で 無線 LAN アダプタのドライバの再ビルド
http://near-unix.blogspot.jp/2015/04/debian-jessie-lan.html




2015年7月26日日曜日

PT2 サーバのハードディスクの複写終了

長かった PT2 サーバのハードディスクの複写(ST3000DM001 から WD30EZRX-1TBP へ)がようやく終了しました。複写に要した時間は、合計 111 時間でした。そして救出出来なかった不良セクタは ゼロ でした。よくやってくれました ddrescue です!

複写の終わった新しいハードディスク(WD30EZRX-1TBP)を PT2 サーバのマシンへ取り付けて動作確認を行いました。とりあえず簡単な操作では問題はないようです。完全に複写が行われたようです。

そしてハードディスクの WD30EZRX-1TBP のアイドリング待機時間の設定ですが、初期値の 8 秒から 300へと wdidle3 にて変更を行なっています。Linux マシンの動作として録画が開始されても直ぐにハードディスクへ書き込みに行きません。いわゆるまとめて遅延書き込みを行なっています。それが初期値では 30 秒の設定となっています。書き込みと次回の書き込みの間(30秒)でハードディスクがアイドリングを開始しないように最低でも 31 秒の設定が必要ですが、余裕をみて 300 秒としました。

PT2 サーバのデータを全て複写し終えたハードディスク(WD30EZRX-1TBP)です。
PT2 用のマシンへ取り付ける WD30EZRX-1TBP です。

暑い季節ですので、ハードディスクの直ぐ上にある CD ドライブベイに取り付けた小型の冷却ファンも動作させてハードディスクの冷却に気を配りました。

ハードディスクの真上には小型の冷却ファンを取り付けています。

以下は、ddrescue の動作画面のスクリーンショットです。

終了3時間前の ddrescue の表示です。2899 GB まで複写が続いていました。そして不良セクタ数は 722 で、不良バイト数は 284 GB まで膨らんでいました。

終了 3 時間前の ddrescue の動作状況です。

終了 30 分ほど前に不良セクタは残ったままですが、全体の複写が終了しました。そして "Trimming failed blocks..." と表示されて、残った不良セクタの回復作業が開始されました。この回復作業によって多くの不良セクタが回復されました。

不良セクタの抽出中の ddrescue です。

そして "Retrying bad sectors...Retry 1" と表示されて、不良セクタの回復作業の再挑戦(リトライ)が開始されました。不良セクタも 209 、不良バイト数も 856 KB と激減していました。ここから不良セクタの再読み込みが行われました。

不良セクタの再読込中動作の ddrescue です。

そして回復作業の再挑戦の一回目の再読み込み(リトライ)で全ての不良セクタが回復されて ddrescue は終了しました。

全ての不良セクタを解消して終了した ddrescue です。

PT2 サーバの富士通 ESPRIMO D5210 の筐体も元に戻して、通常の録画作業に戻りました。

PT2 サーバとして新しいハードディスクは稼働を再開しました。



2015年7月25日土曜日

PT2 サーバのハードディスクの複写状況(96時間経過)

PT2 サーバのハードディスクの複写状況ですが、前回報告から 12 時間が経過したところで 2711 GB の処理となっていました。この 12 時間でたった 188 GB しか複写していませんでした。データ記録領域の末尾に向かってだんだんと状況が悪化している模様です。

96時間が経過した ddrescue による複写状況です。


FON2100E の SD カードが認識されません

昨日、FON2100E へ SD カードのソケットを取り付けて、OpenWrt Kamikaze 8.09.2 において動作の検証が終わっていました。そこで本日は、 FON2100E へ OpenWrt Barrier Breaker 14.07 をインストールして SD カードを動作させてみることとしました。

FON2100E へ SD カードを装着したところです。

SD カードのインストールにあたり次のウェブサイトを参考にしました。
DSL-502t/500t SD/MMC card problem (Page 1) — Hardware
https://forum.openwrt.org/viewtopic.php?id=21590
mmc_over_gpio - OpenWrt Wiki
http://wiki.openwrt.org/doc/howto/mmc_over_gpio

SD カード関連のカーネルモジュールなどのインストール

SD カード関連のカーネルモジュールを opkg コマンドにてインストールしました。依存関係にあるソフトウェアも一緒にインストールされました。
# opkg update
# opkg install kmod-mmc-over-gpio
  • kmod-mmc-over-gpio
  • kmod-mmc-spi
  • kmod-mmc
  • kmod-lib-crc-itu-t
  • kmod-lib-crc7
  • kmod-spi-gpio-old
  • kmod-spi-bitbang
  • kmod-fs-configfs

GPIO 端子の設定ファイルの編集

OpenWrt Kamikaze 8.09.2 においては、GPIO の起動制御スクリプト(/etc/init.d/mmc_over_gpio)を直接編集していましたが、OpenWrt Barrier Breaker 14.07 においては、専用の設定ファイル(/etc/config/mmc_over_gpio)が存在しています。この設定ファイルの中で、起動時に自動的に mmc-over-gpio のモジュールが起動するように enable の項目を "0" から "1" へ変更します。その他のピン配置は初期値のままで問題ないようです。
config 'mmc_over_gpio'
        option 'name' 'default'
        option 'enabled' '0' --> '1'
        option 'DI_pin' '1'
        option 'DO_pin' '3'
        option 'CLK_pin' '4'
        option 'CS_pin' '7'
        option 'mode' '0'
上記では直接設定ファイルを編集しましたが、Luci の設定画面からも次のソフトウェア(luci-app-mmc-over-gpio)をインストールすることによって設定可能となります。インストール後に [System] - [MMC/SD driver configuretion] のタブから設定してください。
# opkg install luci-app-mmc-over-gpio

SD カードを認識しません

上記の設定を行った後、FON2100E を再起動させます。telnet ログインを行なって ls /dev コマンドでブロックデバイスの確認を行ったところ、存在するはずの /dev/mmcblk0p1 が見当たらないのです。

Luci のシステムログや telnet ログインの dmesg コマンドで mmc-over-gpio 関係の動作状況を確認すると次のようなエラーメッセージが出ていました。
gpio-mmc: Failed to request mmc_spi module.
spi-gpio: probe of spi-gpio.0 failed with error -16
gpio-mmc: MMC-Card "default" attached to GPIO pins di=1, do=3, clk=4, cs=7
"error -16" の部分は、OpenWrt の掲示板の情報によると GPIO のピンを多重に複数のモジュールから取り合っている模様でした。
DSL-502t/500t SD/MMC card problem (Page 1) — Hardware
https://forum.openwrt.org/viewtopic.php?id=21590
-16 is -EBUSY.
I bet you have a doubleusage of a GPIO pin. It's only possible to register a GPIO pin once. Your older mmc driver most likely overrides this and uses the pin anyway.
とりあえず WLAN の LED 表示が GPIO 経由の設定であったため、WLAN の設定を消去してみましたが、改善はみられませんでした。

また Kamikaze 8.09.2 の時の /etc/init.d/mmc_over_gpio の編集内容に従って、GPIO の CS ピンの割り当てを "14" に一旦設定した後、再度 "7" に設定を手動で戻してみることも行なってみましたが改善されませんでした。

ネット上をいろいろと検索してみましたが、解決策が見当たらなくて困っています。

OpenWrt Attitude Adjustment 12.09 をインストール

そこで現在の Barrier Breaker 14.07 から Attitude Adjustment 12.09 へシステムを入れ替えてみて、様子を観察してみることとしました。Barrier Breaker 14.07 と同様のインストールと設定を行なってみましたが、結果は同じエラーを発生して SD カードを認識してくれませんでした。

OpenWrt の掲示板上には、カーネル 2.6 系の時点で mmc-over-gpio にバグが存在していて動作しないなどの情報が上がっていましたが、その後どうなってしまったのか不明です。随分とバージョンアップを繰り返した Barrier Breaker 14.07 でも mmc-over-gpio に問題が残っているのでしょうか?

どうも現時点ではすぐに問題点を解決できそうにありませんでした。FON2100E の OpenWrt Barrier Breaker 14.07 での SD カードの動作は継続課題となりました。

PT2 サーバのハードディスクの複写状況(84時間経過)

複写中のハードディスクです。

PT2 サーバのハードディスクの複写状況ですが、前回の報告から 24 時間が経過したところで 2,523 GB の複写となっています。24 時間で 464 GB のデータが複写されました。残りは 477 GB となっているので、あと一日程度は必要なのかもしれません。一時的に複写速度が向上した場面がありましたが、一時的なものだったようです(涙)。

84時間が経過した ddrescue による複写状況です。



2015年7月24日金曜日

FON2100E へ SD-CARD を追加

以前システムメモリを 32MB 化した FON2100E へ SD カードを追加してみました。なお作業に当たっては次のウェブサイトを参考にしました。
LaFonera Hardware SD-Card - DD-WRT Wiki
http://www.dd-wrt.com/wiki/index.php/Fonera_SD-Card_hack


システムメモリを 32MB 化した FON2100E へ SD カードを取り付けました。

以前より無線LANルータへ SD カードを追加してみたかったのですが、SD カードのソケットなどの入手待ちの状態で停止した状態でした。今回百円ショップで SD カードリーダを購入する機会が得られたため、FON2100E を手始めとして改造を行なってみたいと思いました。

SD カードソケットの取り出し

さて入手したのはダイソーの SD カードリーダです。いくつか種類がありましたが、今回は、この SD カードのみに対応した製品を分解してソケットを取り出してみました。

今回使用したダイソーの SD カードリーダです。

はめ込み式のプラスチック筐体の隙間にマイナスドライバを差し込んで開封しました。中からは USB プラグと SD カードのソケットが取り付けられた基盤が姿を現しました。ここから SD カードのソケットを取り出しました。

SD カードリーダの裏面です。
SD カードリーダの表面です。
SD カードのソケットを取り外したところです。

この取り出した SD カードソケットを蛇の目基盤の上にハンダ付けしました。一部のピンが標準的な 2.54 ミリのピッチに合わずリードを折り曲げて蛇の目基盤の穴へ挿入してハンダ付けしました。

FON2100E プリント印刷基盤の加工

次に FON2100E 側の事前加工を行います。SD カードのアクセスで使用する GPIO 端子(四個)には、小さなコンデンサ(C142〜C145)が接続されています。これを取り外しました。取り外し作業は、コテライザーによるホットブローで行いました。大きなアースパターンに接続されていましたが、部品が小さいため綺麗に取り外しができました。

中央に見えるのが、取り外す四つのコンデンサ(C142〜C145)です。
FON2100E は小さな基板なため、万力で固定してルーペを使用しながらの作業となりました。
四つのコンデンサを取り外したところです。

SD カードソケットと FON2100E 基盤の接続

SD カードソケットを取り付けた蛇の目基盤と FON2100E の基盤の SW1 にある GPIO 端子を短いリード線で接続しました。そしてシリアルコンソールの端子のところから、電源とアースを接続しました。現在のリード線の長さは仮のもので、動作確認が出来た後、筐体へ SD カードソケットを取り付けるときに、正式に長さを決定します。

SD カードソケットを GPIO 端子へ取り付けたところです。
SD カードソケットへシリアルコンソールの端子から電源を取り出しているところです。

OpenWrt Kamikaze 8.09 のインストール

これでハードウェア部分の加工は終了です。ソフトウェアの作業を行うとき、とりあえずファームウェアに OpenWrt Kamikaze 8.09 をインストールし直しました。これは、SD カードの情報の多くが 2009 年ごろのものが多く、そのころの主流と思われる OpenWrt Kamikaze 8.09 のものばかりでした。そのためハードウェアの加工に間違えがないか確認するためにも、確実に動作する手法で設定を行うこととしました。

OpenWrt Kamikaze 8.09 のインストールは Gargoyle で作られた FonFlash で行いました。

SD 関連ソフトウェアのインストール

SD 関連のソフトウェアのインストールと設定については、上記の参考ウェブサイトの後半分に記述のまま行いました。ただし一部注意点を記述しておきます。


OpenWrt Kamimaze 8.09 の SD カードの設定方法のスクリーンショットです。

1)インストールコマンドに間違えがあります。
# opk install luci-app-mmc_over_gpio(誤)
# opkg install luci-app-mmc_over_gpio(正)

2)vi エディタで /etc/init.d/mmc_over_gpio を編集する場所は、59 行目あたりにあります。

3)/etc/init.d/mmc_over_gpio を編集をした後、一度 FON2100E を再起動させてください。続けて次のコマンドを実行すると下記の通りのエラーが発生して、先に進めません。
root@OpenWrt:/# /etc/init.d/mmc_over_gpio start
mkdir: cannot create directory '/config/gpiommc/default': No such file or directory
rmdir: '/config/gpiommc/default': No such file or directory
mkdir: cannot create directory '/config/gpiommc/default': No such file or directory
4)SD カードは事前にパソコンで Ext2 フォーマットしておいてください。
そして Ext2 フォーマットを読み取れるように次のカーネルモジュールをインストールしてください。これらの処置の後、SD カードのデバイス(/dev/mmcblk0p1)のマウントを行なってください。
# opkg install kmod-fs-ext2

SD カードの動作確認

SD カードの動作確認としては、telnet ログインした状態で、マウントした SD カードのディレクトリへ移動した後、テキストファイルを適当に作って、それを編集して、再保存してみました。これで動作確認ができました。
# cd /mnt/mms -- SD カードのディレクトリへ移動
# touch test.txt -- test.txt という空のファイルを作る
# vi test.txt -- test.txt ファイルを vi エディタで編集する
     abcd1234
# cat test.txt -- test.txt ファイルの中身を確認してみる
     abcd1234

これからの予定

SD カードについてのハードウェアの確認がこれで出来ました。これから使用予定のファームウェアの OpenWrt Barrier Breaker 14.07 をインストールし直して、SD カードの設定を行なってみたいと思っています。

PT2 サーバのハードディスクの複写状況(60時間経過)

PT2 サーバのハードディスクの複写状況ですが、前回報告から12時間が経過したところで、2059GB の処理となっていました。12時間で 658GB も複写していました。ハードディスクの破損状況のひどかった中間付近を通過して、複写速度が向上していました。明日の朝まで複写が終わっていることを願うばかりです。

60時間が経過した ddrescue による複写状況です。


2015年7月23日木曜日

PT2 サーバのハードディスクの複写状況(48時間経過)

PT2 サーバのハードディスクの複写状況ですが、48 時間が経過しましたが、まだ 1.4TB しか複写が進んでいません。前回報告の時から 12 時間経過で 100GB 程度の進捗状況です。そしてエラーも504セクタまで増加していました。もう終了まで、一週間単位で時間が必要かもしれません。トホホです。

48時間が経過した ddrescue による複写状況です。


富士通 ESPRIMO D5350 では DriveFitnessTest が使えません

今頃気づいてしまったのですが、富士通 ESPRIMO D5350 でハードディスクの検査ソフトウェアの DriveFitnessTest が SATA ドライブで使用できませんでした。

今回問題となった ESPRIMO D5350 です。

先日の PT2 サーバのハードディスクの故障で心配になったことから、ハードディスクの検査を順次行なっていました。すると上記のとおり、 ESPRIMO D5350 で STAT ドライブが認識されない問題が発生しました。DriveFitnessTest だけでなく、MHDD なども認識してくれませんでした。

DriveFitnessTest が SATA ディスクを認識してくれません。
もう随分と使い込んだフロッピーディスクです。
DriveFitnessTest は最終版の 4.16 です。

そこで BIOS を確認してみたところ、バージョンが 1.13 でした。そして最新のものは、1.23 となっていました。そこで BIOS のアップデートを行なって状況が改善するか確認してみました。残念ながら改善はありませんでした。

ESPRIMO D5350 のアップデートも行いました。

どうもハードディスク検査ソフトウェアが新しいハードディスクのドライブ回路に適合していないようです。適合したドライバが存在しないようです。そのため認識を行わないようです。

ハードディスクの検査には、ハードディスクを取り外して、他のマシンへ載せて検査する必要があります。何か疲れます・・・。

[追記]

Seagate 社の SeaTools for DOS であれば、ハードディスクの検出と検査は可能でした。ただし USB マウスは不調のようで、キーボードだけで操作するか、PS2 マウスを用意する必要がありました。