玄箱用にストリーミングソフト 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 を使用した場合、次のコマンドで動作しました。設定情報は、ネット上を検索してください。ここでは画像サイズを 640×480 として、ポート 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

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 設定で点灯させました。

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 の電波が発射されていることを確認しました。

玄人志向 玄箱の 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 をしばらく使ってみたいと思います。

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

玄人志向 玄箱 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