玄箱Pro
玄箱ProをAsteriskサーバ化するページ(ちんたら進行中)
目次
スペック
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を搭載しているものの、素のままではブートしなくなってしまうと手の出しようがなくなる。シリアルポートを増設すればシリアルコンソールから入れるので、ブート変数を書き換えることでリカバリできるようになる。ただし、シリアルポート増設にはハンダ付けが必要で、保証が切れるため覚悟のこと。
まずはパターンにピンを立ててしまいましょう。普通の2.54mmピッチでOK。
本来ならば、ちゃんとしたレベルコンバータをかましてやるのが良いのですが、安上がりに付けるにはカモンの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のものではないので不便。そこで作ります・・・と言いたいとこですが、面倒でしょうから用意しておきました。ルートディレクトリ("/")で展開しちゃってください。上書きされてインストールされます。
- ftp://ftp.voip-info.jp/kurobox/pro/procps-3.2.7-kurobox-pro-bin.tar.gz
- procps psとかtopとか
- ftp://ftp.voip-info.jp/kurobox/pro/tar-1.13.25-kurobox-pro-bin.tar.gz
- 普通のtar
- ftp://ftp.voip-info.jp/kurobox/pro/sox+lame-kurobox-pro-bin.tar.gz
- sox + lame
- 展開した後、/etc/ld.so.confに/usr/local/libが入っているのを確認し、ldconfigしてください。
ですが・・・そのままでは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なのが結構な鬼門。