2016年3月30日水曜日

玄箱用にストリーミングソフト mjpg-streamer をパッケージビルドしました

玄箱の初代と HG 用にストリーミング・ソフトウェアの mjpg-streamer (powerpc) をビルドしました。使用にあたっては、自己責任でおねがいします。なにせ初めてのパッケージ・ビルドですから、どんな不具合が発生するか解りません。

経緯

無線 LAN ルータのファームウェアの OpenWrt でウェブカメラの画像を配信するために mjpg-streamer や motion を使っていました。同じことを玄箱でも行おうとしたとき、motion は Debian 公式パッケージが存在していましたが、mjpg-streamer は存在していませんでした。そこで独自にビルドをする必要がありました。ネット上を検索すると mjpg-streamer をビルドする方法は数多く見つけられましたが、玄箱用のパッケージとしては見つけられませんでした。そこで今回、自分自身の学習のためにパッケージ・ビルドにチャレンジしてパッケージを作ってみました。その成果物のパッケージを公開します。

ダウンロード

下記の URL から mjpg-streamer のパッケージをダウンロードしてください。
mjpg-streamer_182-2_powerpc.deb
https://drive.google.com/file/d/0B5QdaY5lu2e3M3ZoUnVMRHdaT28/view?usp=sharing

mjpg-streamer のインストール

事前に依存関係にあるパッケージ(libjpeg-dev)をインストールしてください。なお libjpeg-dev はダミーパッケージとなっており、実際には libjpeg62-turbo-dev がインストールされます。
# apt-get update
# apt-get install libjpeg-dev

mjpg-streamer のインストール
# dpkg -i mjpg-streamer_182-2_powerpc.deb

(参考)アンインストールの場合
# dpkg -r mjpg-streamer

mjpg-streamer の起動

ウェブカメラに Logicool QuickCam Orbit AF/Sphere AF を使用した場合、次のコマンドで動作しました。設定情報は、ネット上を検索してください。ここでは画像サイズを 640x480 として、ポート 8080 へ出力するようにしています。ウェブカメラによって、オプションの "-y" の設定値を変更する必要があります。停止させる場合には Ctrl + C で終了します。
# mjpg_streamer -i "/usr/local/lib/input_uvc.so -f 1 -y YUYV -r 640x480 -d /dev/video0" -o "/usr/local/lib/output_http.so -w /usr/local/www -p 8080"

起動させたまま、端末を開放させたいときには、末尾にアンパサンド "&" を追加して実行してください。
# mjpg_streamer -i "/usr/local/lib/input_uvc.so -f 1 -y YUYV -r 640x480 -d /dev/video0" -o "/usr/local/lib/output_http.so -w /usr/local/www -p 8080" &

動作検証に使用した Logicool QuickCam Orbit AF/Sphere AF です。

ウェブカメラの制御ソフトウェア(uvcdynctrl)

首振りをする UVC ウェブカメラを使用している場合、制御するソフトウェアもインストールしておくと便利です。一緒にいくつかの依存関係にあるソフトウェアもインストールされます。
# apt-get update
# apt-get install uvcdynctrl

インストール直後は上手く動作してくれないようです。一度、玄箱を再起動させて、操作してください。

制御できる内容は次のコマンドで確認できます。
# uvcdynctrl -c -v

制御例

次のとおり制御例を示します。末尾の数字は動作のステップの大きさです。
パンの初期化
# uvcdynctrl -d video0 -s 'Pan Reset' 256

右向きにパン(ハイフンとスペースに注意)
# uvcdynctrl -d video0 -s 'Pan (relative)' -- -1024

左向きにパン
# uvcdynctrl -d video0 -s 'Pan (relative)' -- 1024

チルトの初期化
# uvcdynctrl -d video0 -s 'Tilt Reset' 256

上向きにチルト(ハイフンとスペースに注意)
# uvcdynctrl -d video0 -s 'Tilt (relative)' -- -1024

下向きにチルト
# uvcdynctrl -d video0 -s 'Tilt (relative)' -- 1024

2016年3月29日火曜日

FON2200E へ OpenWrt Chaos Calmer 15.05.1 をインストール

32MB 化した FON2200E へ OpenWrt をインストールしました。OpenWrt のウェブサイトからファームウェアをダウンロードしようとしたところ、新しく Chaos Calmer 15.05.1 がリリースされていることを知りました。そこでこの最新の Chaos Calmer 15.05.1 をインストールすることとしました。

32MB 化した FON2200E へ OpenWrt Chaos Calmer 15.05.1 をインストールしました。

概要

FON2200E は 8MB のフラッシュメモリを搭載しています。そのため OpenWrt の最新のファームウェアをインストールすることが可能です。システムメモリを 32MB へ拡張したのも、この最新のファームウェアで動作させるためでした。ただしプロセッサの速度だけは向上させることが出来ないため、ブラウザによる設定画面(LuCi)の動作は、若干遅目の表示となってしまいます。

OpenWrt のインストール

以前はよく Gargoyle で配布している FonFlash を使用していましたが、初回のインストール時には、いろいろと面倒なことが多いため、シリアルコンソールからインストールを行いました。

OpenWrt のダウンロードサイトから次の二つのファームウェアをダウンロードしました。そして TFTP サーバの公開ディレクトリへコピーしました。

https://downloads.openwrt.org/chaos_calmer/15.05.1/ath25/generic/
  • openwrt-15.05.1-ath25-root.squashfs
  • openwrt-15.05.1-ath25-vmlinux.lzma


次に RedBoot 上からシリアルコンソールで操作しながらインストールを行いました。

OpenWrt をインストールするために接続したシリアルケーブルです。

FON2200E の IP アドレスの設定と TFTP サーバの IP アドレスの指定をしました。この場合、FON2200E 本体に 192.168.24.51 を設定して、TFTP サーバに 192.168.24.101 を指定しました。(この記事を参考にしてインストールする場合には適宜環境に合わせて IP アドレスを設定してください。)
RedBoot> ip_address -l 192.168.24.51/24 -h 192.168.24.101
IP: 192.168.24.51/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.24.101

フラッシュメモリの初期化を行いました。
RedBoot> fis init
About to initialize [format] FLASH image system - continue (y/n)? y
*** Initialize FLASH Image System
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

カーネル(openwrt-15.05.1-ath25-vmlinux.lzma)を TFTP サーバからダウンロードしました。
RedBoot> load -r -v -b 0x80041000 openwrt-15.05.1-ath25-vmlinux.lzma
Using default protocol (TFTP)
-
Raw file loaded 0x80041000-0x80150fff, assumed entry at 0x80041000

 カーネルをフラッシュメモリへインストールしました。
RedBoot> fis create kernel
... Erase from 0xa8030000-0xa8140000: .................
... Program from 0x80041000-0x80151000 at 0xa8030000: .................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

ルートファイルシステム(openwrt-15.05.1-ath25-root.squashfs)を TFTP サーバからダウンロードしました。
RedBoot> load -r -v -b 0x80041000 openwrt-15.05.1-ath25-root.squashfs
Using default protocol (TFTP)
-
Raw file loaded 0x80041000-0x802a0fff, assumed entry at 0x80041000

ルートファイルシステムをフラッシュメモリへインストールしました。
RedBoot> fis create rootfs
... Erase from 0xa8140000-0xa83a0000: ......................................
... Program from 0x80041000-0x802a1000 at 0xa8140000: ......................................
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

最後に RedBoot の起動設定をしました。青色部分が変更するために入力した部分です。IP アドレスの部分は、読者さんの環境に合わせて変更してください。
RedBoot> fconfig
Run script at boot: true
Boot script:
.. fis load -b 0x80100000 loader
.. go 0x80100000
Enter script, terminate with empty line
>> fis load -l kernel
>> exec
>> (リターンだけ)
Boot script timeout (1000ms resolution): 3
Use BOOTP for network configuration: false
Gateway IP address: 192.168.24.1
Local IP address: 192.168.24.51
Local IP address mask: 255.255.255.0
Default server IP address: 192.168.24.101
Console baud rate: 9600
GDB connection port: 9000
Force console for special debug messages: false
Network debug at boot time: false
Update RedBoot non-volatile configuration - continue (y/n)? y
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .

OpenWrt のインストールの終わった FON2200E を再起動させました。
RedBoot> reset

動作確認

シリアルコンソールの画面で起動して行く様子を眺めました。第一回目の起動時にフラッシュメモリに個別の情報を保存する領域を確保する動作をします。この動作に長い時間を必要とします。この動作中は電源を切ることができませんが、その他の設定作業は行うことができます。一通り設定をしたところで、再起動させて問題なく動作することを確認しました。

POWER ランプ消灯問題

FON2202 用の RedBoot を使用して 32MB 化しましたが、OpenWrt が起動する途中で LED ランプを制御している GPIO 部分をリセットするらしく、途中で POWER ランプが消灯してしまいます。これも以前に行った LED 設定で解決しました。下記記事を参考にしてください。
FON2201 を 32MB 化すると電源 LED が点灯しません
http://near-unix.blogspot.jp/2015/06/fon2201-32mb-led.html
POWER ランプを LED 設定で点灯させました。


2016年3月28日月曜日

FON2200E を 32MB 化

以前 入手したまま放置していた FON2200E(念の為 FON2100E ではありません)のシステムメモリを 16MB から 32MB のメモリチップへ交換しました。

メモリチップを交換して 32MB 化した FON2200E です。

概要

メモリチップの交換は、今までに FON2100E や FON2201 で行った方法と一緒です。また 32MB のメモリ空間を認識させる RedBoot は、FON2202 用のものを使用しました。FON2100E で使用した RedBoot もインストールしてみましたが、電源投入時に POWER ランプが点灯しない問題があり、FON2202 用のものを使用して問題の解消をしました。

上段は FON2100E 用の RedBoot を使用したときのもので、
下段は FON2202 用のものを使用したときのものです。

メモリチップの交換

メモリチップは 256Mbit/16bit word の 32MB ものです。以前 FON2100E 用にパソコン用のメモリカードから剥がしておいたものを使用しました。

蓋を開いた FON2200E と交換するメモリチップです。

メモリチップを引き剥がす上でハンダゴテの邪魔になると思われる電源部のコイル(L803)を事前に取り外しておきました。ちょっとした手間ですが、このような事前の準備が後の作業を楽にしてくれると考えています。
 
メモリチップを剥がす上で障害となるコイル(L803)を事前に取り外しました。

メモリチップは、私が持っているコテライザーでは熱量が不足して上手く剥がれないことを経験上知っているため、ハンダをメモリチップのリードへ盛りつけて、ハンダの蓄熱効果でメモリチップを剥がしました。今回はパターン剥がれが無く、綺麗にメモリチップを剥がすことに成功しました。

盛りハンダで取り外したメモリチップです。
まだパターンの上にはハンダが残っています。
ハンダの吸取り線で綺麗にパターンを掃除しました。
フラックスはアルコールで拭き取りました。

そして 32MB のメモリチップをハンダ付けしました。そしてコイル(L803)も元の場所へハンダ付けしておきました。

32MB のメモリチップをハンダ付けしたところです。

この状態で FON2200E へ電源を投入して動作確認を行いました。電源をしばらくすると MyPlace の無線 LAN の電波が発射されることを確認しました。

RedBoot の入れ替え

現在 16MB の認識となっている RedBoot を 32MB を認識する RedBoot へ入れ替えました。作業は以前 FON2201 で行ったときと全く一緒です。
FON2202 の RedBoot を FON2201 へ移植
http://near-unix.blogspot.jp/2016/02/fon2202-redboot-fon2201.html

FON2202 用 RedBoot をダウンロードします。自宅サーバには TFTP が稼動していますので、TFTP で公開しているディレクトリへ Redboot をコピーしておきます。
fon2202-redboot.rom
https://drive.google.com/open?id=0B5QdaY5lu2e3Tk1BOHU1VVp1VjA

FON2200E のシリアルコンソール端子へシリアルケーブルを接続します。通信速度は 9600bps です。

FON2200E のシリアルコンソールへシリアルケーブルを接続したところです。

IP アドレスの設定を行います。"-l" は FON2200E 自身の IP アドレスで、"-h" は TFTP サーバの IP アドレスです。今回の場合、FON2200E 自身を 192.168.24.51 へ設定して、TFTP サーバを 192.168.24.101 へ設定しました。
RedBoot> ip_address -l 192.168.24.51/24 -h 192.168.24.101
IP: 192.168.24.51/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.10.101

TFTP サーバから RedBoot を転送しました。
RedBoot> load -r -b %{FREEMEMLO} fon2202-redboot.rom
Using default protocol (TFTP)
Raw file loaded 0x8003f000-0x8006efff, assumed entry at 0x8003f000

転送してきた FON2202 用の RedBoot をフラッシュメモリへ書き込みしました。
RedBoot> fis create RedBoot
An image named 'RedBoot' exists - continue (y/n)? y
... Erase from 0xa8000000-0xa8030000: ...
... Program from 0x8003f000-0x8006f000 at 0xa8000000: ...
... Erase from 0xa87e0000-0xa87f0000: .
... Program from 0x80ff0000-0x81000000 at 0xa87e0000: .
以上で RedBoot の入れ替えが終わりました。

動作確認

動作確認ですが、FON2200E の電源プラグを抜いた後、シリアルコンソール用のシリアルケーブルを一度抜きます。そして再度挿し直します。なぜか RedBoot を書き換えた後は、シリアルケーブルを繋いだままだと FON2200E が起動しませんでした。これは他の FON2100E などでも見られる現象です。

再起動させたとき、RedBoot の以下の青色表示の部分のようになっていれば 32MB を認識したこととなります。
+Ethernet eth0: MAC address 00:18:84:82:50:c4
IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0
Default server: 192.168.1.254

RedBoot(tm) bootstrap and debug environment [ROMRAM]
Non-certified release, version v1.3.0 - built 01:53:26, Mar 21 2009

Copyright (C) 2000, 2001, 2002, 2003, 2004 Red Hat, Inc.

Board: ap51
RAM: 0x80000000-0x82000000, [0x8003ed20-0x80fe1000] available
FLASH: 0xa8000000 - 0xa87f0000, 128 blocks of 0x00010000 bytes each.
== Executing boot script in 2.000 seconds - enter ^C to abort
^C
RedBoot>

そして再度電源を入れ直して、最後まで起動させた後、問題なく動作しているか確認しました。私の場合、まだこの時点で Fonera のファームウェアがインストールされた状態であったため、無線 LAN の MyPlace の電波が発射されていることを確認しました。


2016年3月27日日曜日

玄人志向 玄箱の HDD を CF 化

玄箱(初代)化したバッファロー HD-HLAN のハードディスクをコンパクトフラッシュ(CF)で代用してみました。表題では玄箱となっていますが、実際に行ったのは HD-HLAN です。

今回 CF 化した HD-HLAN です。

経緯

単純に技術的興味がありました(笑)。将来的に無線 LAN ルータのようなものを作る場合、ハードディスクを搭載しておくより、低消費電力で低騒音(無音)の CF のようなものに置き換えてしまう方がいろいろと有利だと考えたからです。
たまたま以前 ThinkPad X40 で使用していた 8GB の CF がそのまま使用されることなく死蔵されている状態であったことと、IDE-CF 変換アダプタも以前購入したものがあったので、今回は、この動作検証を行ってみました。

今回使用した IDE-CF 変換アダプタです。
上下二枚装着可能な製品ですが、表面に一枚だけ CF を装着しました。
今回使用したトランセンドの 8GB の CF です。
Thinkpad X40 へ CF アダプタを取り付け
http://near-unix.blogspot.jp/2012/11/thinkpad-x40-cf.html

CF へファームウェアのインストール

8GB の CF をデスクトップ・パソコンへ接続して、直接ファームウェアのインストールを行いました。ハードディスクの場合と全く一緒で、(1) 玄箱(初代)のファームウェア、(2) スワップ領域、(3) Debian Jessie の三つのパーティション領域へインストールしました。
玄人志向 玄箱 HG へ大容量ハードディスク向けインストール
http://near-unix.blogspot.jp/2016/03/hg_24.html

パソコンから直接 CF へファームウェアをインストールしました。

今回は IDE-CF アダプタを使用してインストールしましたが、通常の USB のカード・リーダでもインストールは可能です。

動作確認

ファームウェアの書き込みの終わった 8GB の CF を HD-HLAN のボードの IDE コネクタへ接続したところで、動作確認を行いました。問題なく起動することを確認しました。ハードディスクのように音がしないので、ちょっと心配でした。

CF を取り付けて動作確認中の様子です。

動作確認が終わったところで、8GB の CF を筐体へ組み込みました。特に固定することなく、ハードディスクを取り外した場所へ押し込んだだけです。家庭内で、ほとんど移動させることなく使用するものなので、これで問題なさそうです。ただし IDE-CF 変換アダプタのむき出しの端子部分はテープで保護しておきました。

ハードディスクがあった場所へ押し込んだ IDE-CF アダプタの様子です。
ハードディスクがあった場所へ IDE-CF アダプタを押し込んでボードを固定したときの様子です。

この CF 化した HD-HLAN をしばらく使ってみたいと思います。

2016年3月26日土曜日

Buffalo HD-HLAN を玄箱(初代)化

バッファローの NAS の HD-HLAN (HD-H160LAN) を玄人志向の玄箱(初代)にしてしまいました。


概要

HD-HLAN と玄箱(初代)のハードウェアは同一の構成のようです。違いはフラッシュメモリのデータと当初搭載されていたファームウェアの違いだけのようです。そこで玄箱(初代)のフラッシュメモリの全内容をそっくりそのまま HD-HLAN へ移植して、玄箱(初代)化を図りました。

このフラッシュメモリを入れ替える理由としては、単純に技術的な好奇心と、emboot 時のパスワードが不明であることの解消でした。emboot での作業は、緊急時の最後の手段となる部分なので、是非とも emboot で作業できるようにしておきたかったのです。

なお以前 u-boot の設定を間違えて u-boot のコンソールへアクセス出来なくなったときに、フラッシュメモリ全体の読み出しと書き込みを行っています。技術的には、その時の結果を応用したものとなります。
玄人志向 玄箱(Debian Jessie)で u-boot の設定を間違える
http://near-unix.blogspot.jp/2015/12/debian-jessie-u-boot.html

入れ替え作業

下記の通り入れ替え作業を行いました。

HD-HLAN と 玄箱(初代)のフラッシュメモリの認識を確認しました。
# ls /dev | grep mtd
mtd0
mtd0ro
mtdblock0

HD-HLAN と 玄箱(初代)のフラッシュメモリのデータを cat コマンドで吸い出しました。HD-HLAN のデータは、万が一に備えてバックアップを取得しておく意味があります。そして cmp コマンドで フラッシュメモリの中に残っているデータ吸いだしたデータ が一致することを確認しました。何も表示されないまま終了したときには、データが一致しています。
 -- HD-HLAN  --
# cat /dev/mtdblock0 > hd-hlan_flash.bin
# cmp hd-hlan_flash.bin /dev/mtdblock0

 -- 玄箱(初代) --
# cat /dev/mtdblock0 > kuro-basic_flash.bin
# cmp kuro-basic_flash.bin /dev/mtdblock0

私の場合、玄箱(初代)から作業パソコンを経由して HD-HLAN へフラッシュメモリのデータ(kuro-basic_flash.bin)をコピーしました。

玄箱(初代)のフラッシュメモリのデータを HD-HLAN のフラッシュメモリへ cat コマンドで書き込みました。なおフラッシュメモリへデータを書き込むために2〜3分の時間を要しました。そして書き込みデータとフラッシュメモリのデータが一致することを cmp コマンドで確認しました。
 -- HD-HLAN --
# cat kuro-basic_flash.bin > /dev/mtdblock0
# cmp kuro-basic_flash.bin /dev/mtdblock0

以上でフラッシュメモリへの書き込みを終了しました。そして再起動させて動作確認を行いました。

動作確認

まず最初に emboot を行ってみました。u-boot のコンソール上から NG ステータスへ変更した後、emboot を行いました。玄箱(初代)の emboot のログインプロンプトの "KURO-BOX-EM" を確認しました。そしてパスワード:kuro で無事ログインできました。
=> run writeng
Un-Protected 1 sectors
Flash erase: first = 55 @ 0xfff70000
             last  = 55 @ 0xfff70000
Flash erase: Done
Erased 1 sectors
Copy to Flash... done
=> run emboot
## Booting image at ffc00000 ...

******* Product Information *******
----------------------------------
Product Name: KURO-BOX(IETSUNA)
         VER: 1.02
        Date: 2004/4/16 11:46:41
----------------------------------
    ↓
    ↓
Kroutoshikou KURO-BOX (IETSUNA)
kernel 2.4.17-kuro-box on ppc


KURO-BOX-EM login: root
Password:

emboot が確認出来た後、flboot も確認しました。こちらは u-boot のコンソール上から OK ステータスへ変更した後、flboot を行いました。
=> run writeok
Un-Protected 1 sectors

Flash erase: first = 55 @ 0xfff70000
             last  = 55 @ 0xfff70000
Flash erase: Done
Erased 1 sectors
Copy to Flash... done

=> run flboot
## Booting image at ffc00000 ...

******* Product Information *******
----------------------------------
Product Name: KURO-BOX(IETSUNA)
         VER: 1.02
        Date: 2004/4/16 11:46:41
----------------------------------
Verifying checksum... OK
Uncompressing kernel...done.
Loading Ramdisk at 0x03C67000, end 0x03E6E647 ... OK
Booting the kernel
    ↓
    ↓
Kroutoshikou KURO-BOX (IETSUNA)
kernel 2.4.17_kuro-box on ppc

KURO-BOX login: root
Password:

最後に通常起動(電源を投入してそのまま放置)させて Debian Jessie が起動することを確認しました。

以上で、HD-HLAN の玄箱(初代)化が終わりました。これでハードディスクに障害が発生したときの対応が多少は楽になるかもしれません。・・・しないだろうな(笑)。 なぜならハードディスクに障害があった場合には、結局蓋を開いてハードディスクを取り出して作業することになりそうですから・・・。

玄人志向 玄箱用 Debian Jessie 3.16.7-ckt20 の カーネルアップデート(mtd)

フラッシュメモリへのアクセスが出来ないことを最近まで全然気づいていませんでした(汗〜)。

そこで急遽 Debian Jessie 3.16.7-ckt20 をビルドし直なおしました。

下記のとおり、アップデートを行ってください。なおフラッシュメモリへアクセスする必要のない読者さんは、アップデートは不要です。

変更部分

設定ファイルを変更した部分は、次の部分です。玄箱独自のメモリ配置となっているようで、このメモリの配置情報を入力する必要がありました。
.config - Linux/powerpc 3.16.7-ckt20 Kernel Configuration
 [...] emory Technology Device (MTD) support > Mapping drivers for chip access
(0xffc00000) Physical start address of flash mapping
(0x400000) Physical length of flash mapping
(1)     Bank width in octets


アップデート方法

新規インストールする場合には、次の記事をご覧ください。

玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

ダウンロード

下記の玄箱用ファームウェア置き場からダウンロードしてください。なお "OLD" のホルダには以前の古いファームウェアを保管しています。新しいファームウェアに何か障害があった場合に備えて残しています。
玄箱 Debian Jeesie のダウンロードサイト - グーグルドライブ
https://drive.google.com/folderview?id=0B5QdaY5lu2e3VlNQejlFYVBDS2c&usp=sharing
  • kuro-kern.tgz(およそ 3MB)
  • kuro-lib.tgz(およそ 3MB)

アップデート作業

アップデートの概要としては、Debian Jessie 3.16 で動作している玄箱へ、ダウンロードした二種類のファイルを FTP で転送した後、展開してインストールします。なおシリアルコンソールでアップデートを行うのが安全ですが、telnet 接続によって作業を行うこともできます。

まず最初に作業パソコンから FTP でファームウェアを転送します。
 -- 作業パソコン --
# ftp [玄箱の IP アドレス]
    user:root, password:kuro
ftp> cd /jessie
ftp> put kuro-kern.tgz
ftp> put kuro-lib.tgz
ftp> quit

転送されたシステムファイルを解凍して、インストールします。
  -- 玄箱 --
# cd /jessie
# tar zxvf kuro-kern.tgz -C /
# tar zxvf kuro-lib.tgz -C /

一度、再起動させた後、モジュールの依存関係の整理を行ってください。
  -- 玄箱 --
# depmod -a

以上で Debian Jessie システムのインストールは終了です。フラッシュメモリへのアクセスが必要な読者さんは、フラッシュメモリの部分の動作確認を行ってください。
  -- 玄箱 --
# cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00400000 00010000 "physmap-flash.0"

# ls /dev | grep mtd
mtd0
mtd0ro
mtdblock0

2016年3月24日木曜日

玄人志向 玄箱 HG へ大容量ハードディスク向けインストール

玄箱 HG へ大容量ハードディスクを搭載したことを前提としたインストールを行ってみました。この記事は、そのまま玄箱(初代)にも対応出来ます。

大容量ハードディスク向けインストールを行った玄箱 HG です。

背景

今までは、第三パーティションへ Debian Jessie によるファームウェアをインストールすると同時に、同じ領域へそのままデータも保管していました。そのデータ保管領域を第四パーティションへ用意して、ネットディスク専用としてデータを保管させるようにしました。

/dev/sda1(Ext3, 2GB):玄箱 HG オリジナル・ファームウェア
/dev/sda2(Swap, 256MB):スワップ領域
/dev/sda3(Ext3, 2GB):Debian Jessie によるファームウェア
/dev/sda4(Ext4, 残り全部):データ保管領域(新規)

データ専用の第四パーティションを用意することで、ジャーナリング機能が強化された Ext4 フォーマットを使用できるメリットがあります。またデータ保存領域をいっぱいまで使用してもシステム領域の第三パーティションには影響を与えないため、システムの安定動作に繋がります。さらにファームウェアを大きく入れ替える場合にも、データ領域に影響を与えることなく作業をすることができるなど、様々なメリットがあります。

パソコンを使用したインストール

今までは、ハードディスクを玄箱 HG へ装着した状態でインストールを行っていました。今回は、ハードディスクをデスクトップ・パソコンへ接続して作業を行いました。今まではデータを転送して、展開しながらインストールするなど、いくつも段階を経てインストールをする必要がありましたが、パソコン上からインストールするときには手順が簡略化することができます。

ハードディスクを取り出すために分解した玄箱 HG です。

u-boot 1.2.0 のインストール

この記事の前提としては u-boot 1.2.0 が、すでにインストールされているものとして記述しています。u-boot 1.2.0 のインストールは、下記の記事を参考してインストールを事前に済ませておいてください。なお初めて玄箱(初代、HG)へ弊ブログの Debian Jessie をインストールする場合には、u-boot 1.2.0 だけでなく、全体のインストールを行って動作が出来ることを確認した後、この大容量ハードディスク向けのインストールを行ってください。
玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

ハードディスクのパーティショニング

玄箱 HG のハードディスクをデスクトップ・パソコンへ接続して、パーティショニングから始めます。せっかくの機会ですので、パーティショニングを行う前にハードディスクの事前チェックを行うことをお奨めします。

玄箱 HG のハードディスクをパソコンへ接続したところです。

fdisk コマンドでハードディスクのパーティション(領域)を設定します。ここでは玄箱 HG のハードディスクが /dev/sdb となっていることを前提としています。

# fdisk /dev/sdb

DOS タイプの区画作成
小文字のオー "o" (リターン)

次のように順番にキー入力します。
第一パーティションの作成
n > p > 1 > (default) > +2048M(リターン)
第二パーティションの作成
n > p > 2 > (default) > +256M(リターン)
第三パーティションの作成
n > p > 3 > (default) > +2048M(リターン)
第四パーティションの作成
n > p > 4 > (default) > (default)(リターン)
第二パーティションを SWAP領域へ変更
t > 2 > 82 (リターン)
設定の保存
w(リターン)

ファイルシステム作成(フォーマット)

パーティショニングが終了したハードディスクへファイルシステム(フォーマット)を作ります。この場合、u-boot 1.2.0 から起動する /dev/sdb1 と /dev/sdb3 は、Inode サイズの指定(-I 128、オプションは大文字の " I " アイ)を行ってフォーマットしてください。なお Ext4 フォーマットを行う /dev/sdb4 では Inode サイズの指定は不要です。
# mke2fs -I 128 -j /dev/sdb1

# mkswap /dev/sdb2

# mke2fs -I 128 -j /dev/sdb3

# mkfs -t ext4 /dev/sdb4

玄箱 HG オリジナル・ファームウェアのインストール

まず第一パーティションへ玄箱 HG のオリジナル・ファームウェアをインストールします。オリジナル・ファームウェアは、玄箱 HG 付属の CD-ROM を使用するか、玄人志向のウェブサイトからダウンロードしてきます。ダウンロードしたファイルの中から tmpimage.tgz を探し出します。image.zip の中に圧縮された状態で保管されていますので、丹念に探してください。

第一パーティションのマウント
# mount /dev/sdb1 /mnt
ファームウェアの展開・インストール
# tar zxvf tmpimage.tgz -C /mnt
第一パーティションのマウント解除
# umount /mnt

Debian Jessie のインストール

弊ブログで配布している玄箱用(初代、HG 両用)のファームウェア類(三種類)をダウンロードしてください。
玄箱 Debian Jeesie のダウンロードサイト - グーグルドライブ
https://drive.google.com/folderview?id=0B5QdaY5lu2e3VlNQejlFYVBDS2c&usp=sharing
    kuro-kern.tgz(およそ 3MB)
    kuro-lib.tgz(およそ 3MB)
    kuro-samba-rootfs.tgz(およそ 256MB)

第三パーティションのマウント
# mount /dev/sdb3 /mnt
 ダウンロードした三つのファイルを次の順番で展開・インストールしてください。
# tar zxvf kuro-samba-rootfs.tgz -C /mnt

# tar zxvf kuro-kern.tgz -C /mnt

# tar zxvf kuro-lib.tgz -C /mnt

/jessie ディレクトリの作成(システムアップデートで使用します)
# mkdir /mnt/jessie

/etc/fstab の修正
fstab のファイルの中には、大容量ハードディスク向けのインストールに備えて準備が行われています。/dev/sda4 の行の前にある "#" マークを削除してください。
# vi /mnt/etc/fstab

#/dev/sda4 /mnt ext4 defaults,noatime,errors=remount-ro 0 0
/etc/fstab の編集

第三パーティションのマウント解除
# umount /mnt

ネットディスク用データ保存領域の設定

第四パーティションのマウント
# mount /dev/sdb4 /mnt

/mnt/kuro-box ディレクトリの作成(初期のデータ保存ディレクトリ)
# mkdir /mnt/kuro-box
# chmod 777 /mnt/kuro-box

第四パーティションのマウント解除
# umount /mnt

以上でハードディスクへのインストールは終了です。

ハードディスクを玄箱 HG へ戻して起動させます。問題がなければ Debian Jessie が起動するはずです。

ハードディスクを装着し直した玄箱 HG です。

初期設定

無事 Debian Jessie が起動したところで、シリアルコンソール または telnet でログイン(ユーザ:root、パスワード:kuro)を行い、初期設定を行います。
 -- 玄箱 --
Debian GNU/Linux 8 kurobox ttyS1

kurobox login: root
Password: kuro
Last login: Tue Jan 19 15:17:41 JST 2016 on ttyS1
Linux kurobox 3.16.7-ckt11_Livingston #14 Tue Jan 19 04:45:30 UTC 2016 ppc

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.

root@kurobox:~#

 インストールしたファームウェアのシステムの依存関係の整理を行います。
 -- 玄箱 --
# depmod -a

パスワードの再設定を行ってください。パスワードの変更は強くお奨めします。
 -- 玄箱 --
# passwd
Enter new UNIX password:
Retype new UNIX password:
passwd: password updated successfully

スワップ領域が使用されていることを確認してください。
 -- 玄箱 --
# swapon -s
Filename    Type        Size    Used    Priority
/dev/sda2   partition    262140    0    -1

データ保管領域の /dev/sda4 が /mnt へマウントされていることを df コマンドで確認してください。
 -- 玄箱 --
# df
Filesystem     1K-blocks   Used Available Use% Mounted on
/dev/root        2015056 595692   1314508  32% /
devtmpfs           62468      0     62468   0% /dev
tmpfs              62564      0     62564   0% /dev/shm
tmpfs              62564   5516     57048   9% /run
tmpfs               5120      0      5120   0% /run/lock
tmpfs              62564      0     62564   0% /sys/fs/cgroup
/dev/sda4      153792412  60868 145896212   1% /mnt

ネットワーク上に表示されるホスト名を変更する場合には、/etc/hostname を編集してください。複数の玄箱を運用する場合にはホスト名の変更は必須です。
 -- 玄箱 --
# vi /etc/hostname

kurobox ----> kurobox-hg とか?

システム内のソフトウェアの更新を行ってください。
 -- 玄箱 --
# apt-get update
# apt-get upgrade

一度電源を切って コンセントも抜いた後、本体電源スイッチを押して再起動させます。
 -- 玄箱 --
# poweroff

以上で大容量ハードディスク向けインストールは終了です。動作確認を行ってください。

障害対策

予想される障害として、ネットディスクの kuro-box へパソコンから書き込みを行おうとすると書き込みが出来ずエラーとなる場合は、/mnt/kuro-box のファイル権限を確認してください。下記の青文字のようになっていれば問題ありません。
 -- 玄箱 --
# ls -l /mnt
total 20
drwxrwxrwx 2 root root  4096 Mar 24 23:03 kuro-box
drwx------ 2 root root 16384 Mar 24 18:44 lost+found
もしも違う場合には chmod コマンドで修正してください。 そして上記の ls -l コマンドでファイル権限を確認してください。
 -- 玄箱 --
# chmod 777 /mnt/kuro-box

D-Link DWL-G630 を入手

インターネット・オークションにて D-Link の無線 LAN アダプタ DWL-G630 を入手しました。一応、新品未使用品ということでした。どうも NTT で販売されていた商品だったようで、説明書や NTT フレッツ用のモデムと接続するツールの入った CD-ROM なども添付されていました。

今回入手した D-Link DWL-G630 です。

概要

2.4GHz 帯の IEEE 802.11 b/g に対応した製品です。lspci コマンドで内部を様子を観察してみると Atheros のチップ(AR2413/AR2414)が使用されている模様です。
アンテナ部はライトグレーの部品で作られており、二個の LED ランプ(Act、Link)を備えています。

D-Link DWL-G630 の表面
D-Link DWL-G630 の裏面

動作確認

Debian Jessie が稼動しているマシンの PC カードスロットへ装着したところ、直ぐにカードを認識して無線 LAN 通信が出来る状態となりました。ドライバとして ath5k が読み込まれていました。もちろんアクセスポイントへ接続して通信も確認しましたが、問題ありませんでした。

動作中の D-Link DWL-G630 の LED ランプ
通信が成立すると Atheros 特有の二個のランプが同時に点滅をするようになります。


ただ気になったことは、PC カードのソケット部分が派手に錆びていることでした(笑)。



2016年3月23日水曜日

Buffalo HD-H160LAN へ Debian Jessie をインストール

バッファローのリンクステーション HD-H160LAN (HD-HLAN シリーズ)へ Debian Jessie (通常版)をインストールしました。

いろいろ後で解ってくると大したことはなかったのかもしれませんが、インストールへの道のりは険しいものがありました(笑)。

なおこの HD-HLAN の記事でもシリアルコンソールを接続して操作することを前提として記述しています。telnet や nc (netcat) による操作が可能かもしれませんが、検証を行っていません。

Debian Jessie をインストールした HD-HLAN です。

今までに判明したこと

HD-HLAN のシステムは、ハードディスクのもの(flboot)も、フラッシュメモリのもの(emboot)も、パスワードが不明でシステムへログインできませんでした。Windows パソコンからファームウェアのインストール時の様子を Wireshark によるパケットモニタを試みましたが、パスワードを見つけることができませんでした。ポート 22936 で何らかの通信を行っていることを発見できただけでした。

そしてハードウェアが同一と思われる 玄箱(初代)のハードディスクを HD-HLAN へ接続すると正常に起動することも発見しました。玄箱(初代)のハードディスクがあれば、u-boot の書き換えなどを出来るようになります。

HD-HLAN のファームウェアがインストールされたハードディスクのパーティションは 1 〜 4 の四つを使用しています。玄箱は三つです。最後の四番目のパーティションの使い道が不明です。

後の話になりますが、u-boot 1.2.0 へ書き換えを行うと、パソコン側からメーカ製のファームウェアのインストールができなくなります。必要であれば、予備のハードディスクへ事前のインストールが必要です。実際には HD-HLAN のファームウェアはパスワードが不明なため、玄箱(初代)のファームウェアを移植すれば問題ありません。

ハードディスクを取り出すために分解した HD-HLAN です。

1. 超簡単 Debian Jessie のインストール方法

u-boot を書き換えていない玄箱(初代)を所有しているならば、玄箱(初代)へ HD-HLAN で使用するハードディスクを接続して、メーカ製のファームウェアをインストールしてください。その玄箱(初代)のファームウェアがインストールされたハードディスクを HD-HLAN へ戻した後、玄箱(初代)へ Debian Jessie をインストールしたときと全く同じ要領でインストールすることができます。
玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

玄箱を使って HD-HLAN へ Debian Jessie をインストール

または、玄箱(初代)で Debian Jessie をインストールした後、そのハードディスクを HD-LAN へ移植する方法もあります。そして flboot を行った後、u-boot 1.2.0 へ書き換え、設定を行ってください。Debian Jessie の部分は一度でも玄箱で起動させてしまうと LAN ポートの情報がシステム上に記録されてしまうため、一部の設定を修正しなければ LAN ポートを使用できません。以下のファイルの赤文字部分を消去します。
# vi /etc/udev/rules.d/70-persistent-net.rules
# This file was automatically generated by the /lib/udev/write_net_rules
# program, run by the persistent-net-generator.rules rules file.
#
# You can modify it, as long as you keep each rule on a single
# line, and change only the value of the NAME= key.

# PCI device 0x1317:0x0985 (tulip)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:07:40:**:**:**", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

2. 手間の掛かる Debian Jessie のインストール方法

HD-HLAN のオリジナルのファームウェアを元にしてインストールする場合です。ルート・パスワードが不明なため、既知のパスワードへ置き換えを行った後、上記と同じ玄箱用の Debian Jessie のインストールと同じ方法を行います。問題はパスワードが不明なため、ログイン出来ないのに、パスワードを変更することができるのか?ということです。NetBSD のハッカーさんが、よい方法を編み出していました。ウェブサイトのホームページをクラッキングして、そしてルート権限を取得するという方法です。まるで映画の主人公(ハッカー)になったかのような気分(笑)です。 以下のウェブサイトを参考にしました。
LinkStation Installation
http://www.jp.netbsd.org/ports/sandpoint/instLinkStation.html

ルート・パスワードの置き換え

オリジナル・ファームウェアが動作している状態でブラウザから HD-HLAN の設定画面へアクセスします。そして「共有フォルダ設定」にて任意のユーザとパスワードを登録します。ここではユーザに user として登録しました。そしてパスワードは、後でルート・パスワードに置き換えるものですので決して忘れないようにしてください。

HD-HLAN の共有フォルダ設定

このユーザ登録によってシリアルコンソールからシステムへログインができるようになります。ただしユーザ権限だけです。ルート権限での操作はこの時点ではできません。

一般ユーザとしてログインしたところで、次のディレクトリへ「パスワード・ファイルの権限を変更するスクリプト・ファイル」(/www/cgi-bin3/exploit.cgi)を作ります。そして chmod コマンドで実行権限を与えます。
$ mkdir /www/cgi-bin3

$ vi /www/cgi-bin3/exploit.cgi
### exploit.cgi の内容 ###

#!/bin/sh
chmod 666 /etc/passwd
$ chmod 755 /www/cgi-bin3/exploit.cgi

ブラウザから上記のスクリプトを呼び出します。アクセスしても何も表示されません。もしスクリプトの内容が表示された場合は、上記のスクリプト・ファイルの権限(755)をもう一度確認してください。これでパスワード・ファイル(/etc/passwd)の権限が変更されました。ユーザ権限でもパスワード・ファイルを編集できます。
http://(HD-HLAN の IP アドレス)/cgi-bin3/exploit.cgi

パスワード・ファイル(/etc/passwd)を編集して、登録したユーザのパスワードのハッシュ値をルートのパスワード部分へ移植します。パスワードのハッシュ値は一番目のコロン(:)と二番目のコロン(:)の間の値です。ここでは青文字の user のパスワードのハッシュ値を赤文字の root のパスワードのハッシュ値へ移植すれば終了です。これで root から userで登録したパスワードでログインできます。
$ vi /etc/passwd
### /etc/passwd の内容 ###

root:r.4feIpNeMISQ:0:0:root:/root:/bin/bash
bin:*:1:1:bin:/bin:
daemon:*:2:2:daemon:/usr/sbin:
sys:*:3:3:sys:/dev:
adm:*:4:4:adm:/var/adm:
sync:*:6:8:sync:/bin:/bin/sync
shutdown:*:7:9:shutdown:/sbin:/sbin/shutdown
halt:*:8:10:halt:/sbin:/sbin/halt
operator:*:12:0:operator:/root:
ftp:*:15:14:ftp:/var/ftp:
nobody:*:99:99:nobody:/home:/bin/sh
user:rnArX/.5MM0Cg:100:1000::/home:/bin/bash

Debian Jessie のインストール

root でログインし直した後、玄箱(初代)と同じ要領で Debian Jessie をインストールすれば、インストールは完了です。

玄人志向 玄箱用 Debian Jessie 通常版(カーネル3.16 版)
http://near-unix.blogspot.jp/2016/01/debian-jessie-316.html

注意事項

ハードディスクのパーティション設定(mfdisk)やフォーマット(mke2fs)は、すべて玄箱(初代)またはHD-HLAN のファームウェアで行ってください。他の Linux マシン上でフォーマットすると u-boot からハードディスク内のファイルを見つけられなくなります。そのため起動できなくなります。

ハードディスクだけを取り出してパソコン上でフォーマットする場合には、 inode size を調整して ext2 または ext3 フォーマットする必要があります。これを見つけるまで大変な苦労をしてしまいました。かつて grub 0.98 の時代にも同様の問題がありました(苦笑)。新しいバージョンの u-boot であれば、この問題も解決されているのかもしれません。
# mke2fs -I 128 -j /dev/hda1
# mke2fs -I 128 -j /dev/hda3
u-boot から起動させるハードディスクは inode サイズに注意


2016年3月22日火曜日

Debian Icedove 38.7.0 Firefox 45.0.1 へアップデート

Debian Jessie と Wheezy に Icedove (Thunderbird) のアップデート(38.6.0 から 38.7.0 へ)が到着しました。

Icedove 38.7.0 のクレジット表示

さらに mozilla.debian.net で配布している Debian 用の最新 Firefox がアップデート(45.0 から 45.0.1 へ)しました。さらに通常の Iceweasel もアップデート(38.7.0 から 38.7.1 へ)が到着しました。

Firefox 45.0.1 のクレジット表示


2016年3月21日月曜日

Buffalo HD-H160LAN を整備

バッファローのネットワーク・ディスク HD-H160LAN v1(HD-HLAN シリーズ)を入手しました。そして早速掃除をしました。ついでにシリアルコンソールの外部端子も設置しておきました。玄箱で随分と経験を積んでいたので、分解掃除とシリアルコンソールの外部端子の設置は楽にできました。

今回入手したバッファロー HD-H160LAN です。

整備の概要

分解を行った後、筐体などのプラスチック部品はレンジ周り用アルカリ洗剤で水洗いしました。電子部品が載ったボードの表面などは水分を含ませた刷毛で綺麗にしました。そしてシリアルコンソールの外部端子は、玄箱(初代)と同じ LAN ポートのすぐ近くへ設置しました。

整備の様子

整備の様子を写真にまとめました。どうぞご覧ください。

蓋を開いて内部が見えるようにしたところです。
プラスチックの筐体は白いこともあって汚れが目立ちました。
レンジ周り用アルカリ洗剤でしっかり水洗いしました。
取り外した冷却ファンです。
事前に掃除機でホコリを吸い出していたこともあり、ホコリは比較的少なめです。
冷却ファンの汚れをしっかり絞った濡れ雑巾へ移動させる感じで刷毛を動かして掃除をしました。
洗剤が無くても水分だけで随分と綺麗になります。
事前の動作確認で冷却ファンは時々ゴロゴロと音を立てている状態でした。
もうオイル切れのようだったのでグリスを注入しておきました。
爪楊枝の先を使って少量のグリスを置いた後、回転軸の隙間から内部へ押しこむようにグリスを入れ込みます。
ボードの表面のホコリも上記の冷却ファンと同様に刷毛を使って掃除しました。
シリアルコンソールへピンヘッダをハンダ付けする前に R76 抵抗器を設置しました。
R76 はゼロオームが理想ですが、手元に無かったことから 33 Ωの抵抗器を使用しました。
R76 の設置の後、L 字型のピンヘッダをハンダ付けしました。
背面パネルへシリアルコンソールの外部端子を取り付けました。
まず最初に取り付け位置へ印をつけました。
外部端子用の穴を四角く切り抜いたところです。
IDE コネクタを利用した外部端子へリード線をハンダ付けして、所定の位置へ接着しました。
接着剤はもちろんプラモデル用接着剤です。
補強として細く切り出したプラバンも一緒に添えて接着しました。
外部端子とボード上の端子をリード線で接続したところです。
仮組みを行って動作確認を行っているところです。

動作確認で問題発生

玄箱では問題なく出来たファームウェアのインストールが何故か出来ません。リンクステーションを見つけられないとの表示が出ます。新規インストールだけでなく、アップグレード・インストール用のソフトウェアでも同様の症状です。何が問題なのでしょうか? 同じ環境で、玄箱のインストールやアップグレードができています。謎です。

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

こちらは問題なく動作しているようです。しかしユーザ名とパスワードが不明なため、ログイン出来ない状況です。
また起動の冒頭では、玄箱のように u-boot の画面が表示されず、いきなりハードディスクのカーネルのロードから始まっている模様です。もしかして玄箱のように Debian をインストールすることが出来ない機種なのでしょうか? もしそうだったら、大変残念です。

以下は、HD-H160LAN のシリアルコンソールの起動部分の一部です。
******* Product Information *******
----------------------------------
Product Name: HD-HLAN(IENOBU)
          VER: 1.51
         Date: 2005/12/28 10:0:5
----------------------------------
Firmware check:done.

>>root=/dev/hda1
Now Loading...done.
Now Booting
Memory BAT mapping: BAT2=64Mb, BAT3=0Mb, residual: 0Mb
Linux version 2.4.17_mvl21-sandpoint (root@yabutar) (gcc version 2.95.3 20010315 (release/MontaVista)) #7 Wed Dec 28 09:59:44 JST 2005
BUFFALO Network Attached Storage Series
2002-2004 BUFFALO INC.
On node 0 totalpages: 16384
zone(0): 16384 pages.
zone(1): 0 pages.
zone(2): 0 pages.
Kernel command line: root=/dev/hda1
OpenPIC Version 1.2 (1 CPUs and 139 IRQ sources) at 80040000
decrementer frequency = 24.576000 MHz
rtc sec count 1458544773
Calibrating delay loop... 130.66 BogoMIPS
Memory: 60316k available (1332k kernel code, 588k data, 192k init, 0k highmem)