玄箱Pro

提供: VoIP-Info.jp
2007年6月19日 (火) 12:58時点におけるTakahashi (トーク | 投稿記録)による版
移動先: 案内検索

玄箱ProをAsteriskサーバ化するページ(ちんたら進行中)
Kurobox-pro.jpg

スペック

CPU : Marvell 88F5182 400MHz (ARM9互換)
メモリ : DDR 128MB
BootROM : 256KB NORフラッシュメモリ
SystemROM : 256MB NANDフラッシュメモリ
内蔵HDD : 3.5または2.5型 SATA×1
LAN : 88E1118 Gigabit Ethernet
インタフェース : USB Type-A ×2,内部にSATA×1,シリアル,GPIO,I2C,JTAGあり
Bootシステム : GNU u-boot
おぼえがき:

シリアルポート

u-bootを搭載しているものの、素のままではブートしなくなってしまうと手の出しようがなくなる。シリアルポートを増設すればシリアルコンソールから入れるので、ブート変数を書き換えることでリカバリできるようになる。ただし、シリアルポート増設にはハンダ付けが必要で、保証が切れるため覚悟のこと。

Kbp-serial-1.jpg
まずはパターンにピンを立ててしまいましょう。普通の2.54mmピッチでOK。

Kbp-serial-2.jpg
本来ならば、ちゃんとしたレベルコンバータをかましてやるのが良いのですが、安上がりに付けるにはカモンの9-KEというPDC-シリアル変換ケーブルを使うのが簡単。こいつは要するにPDC(Mova)の携帯をシリアルポートに接続するもの。PDCコネクタ側を切ってしまい、以下のように結線すればOK。

基板    ケーブル
 GND -- 茶
 +V  -- NC
 RXD -- 黒
 TXD -- 橙

シリアルポートのパラメータはデフォルトは112.5kbps 8bit ノンパリ,フロー制御なし。これでコンソールに入れるようになる。

HDDブート化

開発環境をフラッシュに入れると、どう考えてもあっという間にフラッシュを壊しそうなのでHDDブートにした方が安全でしょう。問題はHDDブート化しておいて、HDDからブート不可の状態になるともはや素ではリカバリできなくなる点。なので、HDDブート化するのであればまずはシリアルポート増設がお勧め。
HDDブート化の手順は簡単。ただし、どうもHDDの初期化状態(パーティションテーブル)によっては、うまくいかない事があるようなので、以下の手順で。

  • まず玄箱Proにログイン
  • もしsdaXがマウントされてしまっている場合にはumountしてから
# dd if=/dev/zero of=/dev/sda bs=1M count=1
  • これでHDDは壊れる
  • 添付CD-ROMのdevelopment_kitフォルダに入っているファイル一式をネットワークコンピュータ上の "mtd device"へコピー
  • 裏面のスイッチを音がするまで押し続ける
  • しばし待つ(LEDの点滅が終わるまで)

これでHDDからブートできるようになるはずです。

そもそも困ること

/etc/servicesがありません。どっかからコピってきましょう。

/varがRAM

普通にHDD化しても/varがRAM上にあるというAsteriskにとっては非常に嫌~な状態ですが、これを止めてHDD上に/varを作るには以下のようにします。
まず、この犯人ですが/usr/local/bin/kuro_libというスクリプトです。その中にcreate_sysfolderというファンクションがあるので、以下の例をみて修正します。

         mkdir -m 777 -p /mnt/ram/tmp /mnt/ram/var/tmp /mnt/ram/var/run
        mkdir -m 777 -p /var/tmp /var/run
        chmod 777 /var/tmp/ /var/run
#       rm -rf /tmp /var
        rm -rf /tmp

        ln -sf /mnt/ram/tmp /tmp
#       ln -sf /mnt/ram/var /var

        mkdir -m 777 -p /var/lock
        mkdir -m 755 -p /var/empty/sshd

RAM上にvarを作ってシンボリックリンクしているので、これを止めてしまいます。上記の変更を行って再起動すれば/varはHDD上になるはずです。起動する度に毎度毎度 mkdir を呼ぶのが気持ち悪い人はコメントアウトしちゃってください。
/var/runがRAM上にあった方がいいという人は適当にスクリプトを修正しちゃいましょう。

足りないものを作る

エンベデッド系なのでBusyboxが使われているため、psだとかtarだとかが標準のLinuxのものではないので不便。そこで作ります・・・と言いたいとこですが、面倒でしょうから用意しておきました。ルートディレクトリ("/")で展開しちゃってください。上書きされてインストールされます。

  • procps psとかtopとか
ftp://ftp.voip-info.jp/kurobox/pro/procps-3.2.7-kurobox-pro-bin.tar.gz
  • 普通のtar
ftp://ftp.voip-info.jp/kurobox/pro/tar-1.13.25-kurobox-pro-bin.tar.gz
  • sox + lame
ftp://ftp.voip-info.jp/kurobox/pro/sox+lame-kurobox-pro-bin.tar.gz
展開した後、/etc/ld.so.confに/usr/local/libが入っているのを確認し、ldconfigしてください。
  • cpio(無いと何かと不便)
ftp://ftp.voip-info.jp/kurobox/pro/cpio-kurobox-pro-bin.tar.gz

ですが・・・そのままではwgetがないのでftpサーバからのダウンロードが激しく面倒です。以下の手順でROMに入っているwgetを吸い出してコピーしておくと良いかも。

# mkdir /mnt/mtd2
# mount /dev/mtdblock2 /mnt/mtd2
# cp /mnt/mtd2/usr/bin/wget /usr/local/bin/.
# sync
# umount /mnt/mtd2

メモ:awkとかinstallがBusyBoxなのが結構な鬼門。