2009年9月18日 (金)

Debian lenny

玄箱ProにインストールしたDebianを先日ぶち壊してしまって、急ぎの仕事があったからそのまま放置していたんだけど、放っておくと一年ぐらいそのままになってしまう可能性が高い(笑)。

新しいバージョンであるDebian lennyはARMプロセッサに対応していて、正式に玄箱Proがサポートされているから話は早い。実はだいぶ前から入れ替えてみようかと思ってはいたのだが、ちゃんと動いているモノを下手に触らないという習性が染みついているので、なかなか踏み切ることができなかった。

ぶち壊れたのは良い機会だったのかも(笑)。

いちどまっさらな状態に戻してからインストールした方が無難そうなので、まずは製品ページにあるファームウェア書き換えキットをダウンロードし、TFTPサーバ使ってフラッシュメモリを書き換えた。

書き換える時はシリアルコンソールを使ってブートメッセージを表示させ、メッセージが表示されるタイミングを見てブートを中断させる必要があるので、ちょっと神経を使う。しかも中断させるとピィピィアラーム音が鳴るし。

Debian lennyのインストールは公式のインストールガイドがあるんだけど、エレキジャックにより簡単に新規インストールできるようにした記事があるので、そちらを参考にして行う。

インストールはあっけなく終了。玄箱Proは当然ながらハードウェア構成が全く同一なので、PCにインストールする時のようなトラブルが発生する可能性はほとんど無い。

基本最小限のインストールが終わったあと、真っ先にapt-getしたのがMC(midnight commander)だったりするのは我ながらヌルいなぁと思うけど、もう今更コマンドラインでPCを操作する気にはなれない。

おかげでviの使い方を綺麗サッパリ忘れてしまった(笑)。

あとはsambaとgccとg++を入れて、とりあえずはインストール完了。USBディスプレイアダプタの安いのをオークションで手に入れたら、モニタ繋いでウィンドウマネージャを使えるようにしてみよう。

2009年9月10日 (木)

ビオチャレンジ

寝ている間に発表されたappleの新製品はカメラ内蔵で動画の撮れるiPod nanoらしいけど、いまいち食指が動かない。もちろん誰かくれるって言うなら喜んで貰うけど(笑)。

内蔵されたカメラを使って、また思いもよらないハックが開発される気がするので、そのへんはちょっと楽しそうではある。結局自分の携帯デバイスに対する興味って、その範囲内にしか存在しないのか(笑)。

iPodでLinux動かす話とか最近とんと見なくなった気がするのだが、あのへんってまだ継続してるのかなぁ。

かなり以前に開発したLinuxのシステムで、サーバを入れ替えたらクライアントのシステムが正常動作しなくなったというトラブルが上がってきたので、日中はその調査。

Debianをインストールした玄箱Proを引っ張り出し、テスト環境を構築しようと思ったのだが、いろいろやってるうちにシステムをぶち壊してしまったらしく、何故かaptが起動しない状態に。

しかたがないのでDebianのARMプロジェクトからaptのパッケージをダウンロードしてインストールしようとしたのだが、依存しているライブラリのバージョンが違うと怒られるし。

普通ならapt使ってライブラリを更新するんだけど、そのaptが壊れてるからなぁ(笑)。

テストは別なPCを使って行うことにして、こっちはしばらく放置。この際だからUbuntuに入れ替えてしまうという手もアリかな。

今日中にどうにかトラブルの原因を突き止めたかったので、お昼は買い置きのカップ焼きうどんと冷蔵庫に残っていたダノンのBioヨーグルトで済ませる。いまヨーグルトの上蓋をめくると裏面にシリアルナンバーがついていて、ダノンビオ1ケースが当たるキャンペーンをやってるんだけど、またしてもハズレた。

シリアルナンバーを入力すると画面に三個のヨーグルトが表示されて、そのうちの一つを選ぶんだけど、そうなっているといかにも1/3の確率で当たりそうな気がするんだが、どう考えてもそれは無いよなぁ(笑)。

Web上での抽選はいくらでも細工できてしまうから、なんとなく不信感があるんだけど他の人はそう感じないんだろうか?

まあハガキによる応募だって、本当に「厳正なる抽選」が行われているかどうかは当事者じゃないと分からないんだけどね(笑)。

2007年9月12日 (水)

漢字コードの消失

一昨日書いたKURO-BOX/PROの環境構築の続き。

Windowsプログラマがなるべく違和感なくLinuxの開発を行えるようにと考えて、フリーのツールや自作スクリプトを組み合わせて作った開発環境を、KURO-BOX/PROでも動くように設定したのが前の話。

もともとはVine Linux用だったんだけど、Debianでもほとんど問題なくコンパイルや実行、Makefileの自動生成ができるようになった。

JmEditor2の強力なマクロ機能のおかげで、カーソル位置の単語をmanで調べるのもリモートで可能になっているのだが、よく見てみるとその出力結果がおかしい。リモートログインした状態でmanを実行すると

printf(1)                                                            printf(1)

名前

       printf - データを整形して表示する

書式

       printf format [argument...]

       printf [--help] [--version]

説明

       printf  は文字列 format を表示する。その際 `%' は書式指定子として、また

       `\' はエスケープ文字として解釈される。解釈のしかたは C の printf(3)  関

       数 と同じである。引き数 format は与えられた argument すべてをコンバート

       するのに必要な回数分再利用される。

と出力されて何の問題も無いのだが、これをリモート開発環境から行うと

printf(1)                                                            printf(1)

       printf -

       printf format [argument...]

       printf [--help] [--version]

       printf   format  `%'

       `\'  C  printf(3)

         format  argument

こんな事になってしまう。日本語部分がすべて消えて無くなっているのだ。

最初はLocaleの問題かと思って、インストールし直したり環境変数の設定を変えてみたりと色々やってみたのだが、どうやっても結果は同じ。これにはかなり悩んでしまった。

manをリモート実行するシェルスクリプトは、最初に環境変数の設定を行ってから

man $1 | col -b | nkf -s

を実行しているだけで、特に変な事はやっていない。manの出力をcolに喰わせてバックスペース文字を取り除いてから、nkfでシフトJISコードに変換しているだけ。manをプレーンテキスト化するのにcolを使うのは定番だし、Vine Linuxでは問題なく動いていたので、まさかここに落とし穴があるとは気づかなかった。

そう、Debianのcolは漢字コードを全部削ってしまうという落とし穴が(爆)。

気づいた時は唖然としてしまったぞ。

改めてネットで探してみると、Debianのcolをマルチバイト対応にしたwcolというツールがあって、その説明にはしっかりと

「Debian GNU/Linux etch では日本語のマニュアルページに対して man hoge | col -bfx などとすると日本語が出力されません」

と書かれてるし、むぅ。

そのツールをインストールしてcolの代わりに使うと、今度はちゃんと日本語が出力されるんだけど、フォントがボールドになっている見出し部分だけは文字化けしてしまう。その部分の制御コードは取り除いてくれないようだ。

まあ見出し部分が文字化けしてもプログラム中に関数の書式を調べたいという目的には影響がないから、とりあえずこれでOKという事にしておこう。あとは暇な時に自分でフィルタするツールを作って、置き換えすれば良し。

このページは xfy Blog Editor を利用して作成されました。

2007年9月10日 (月)

環境構築

あんまり長い事放置してるとやる気が無くなってしまうので、KURO-BOX/PROのDebian化と開発環境の構築を一気にやってみた。

と言ってもエレキジャックKURO-BOX/PRO特設ページに書かれている内容をほぼそのまま行っただけで、特に難しい事は何もやっていない。Debian化に必要なファイルも特設ページからダウンロードしたものをありがたく使わせて頂いた。

何をやったのか忘れてしまいそうなので、以下にメモ。
  • Debian化
  • Debian 化する(実行編)を参照
  • アップデート
  • apt-get update
  • apt-get upgrade
  • sambaのインストール
  • apt-get install samba
  • adduserでsamba用のユーザ(develop)を作成
  • smbpasswd -a develop
  • /etc/init.d/samba restart
  • 開発環境のインストール
  • apt-get install gcc make libc-dev libc6-dev
  • apt-get install g++
  • apt-get install tmake
  • apt-get install nkf
  • apt-get install manpages manpages-dev manpages-ja
  • apt-get install jless
  • localeの設定
  • apt-get install locales
  • dpkg-reconfigure locales
  • 文字コードはja_JP.EUC-JPja_JP.UTF-8を選択
  • /home/developの.bashrcに以下の2行を追加
  • export LC_ALL=ja_JP.EUC-JP
  • export PAGER=jless

g++とtmakeとnkfのインストールはエレキジャックの記事には無いけど、以前に作ったXPからリモートでコンパイルする環境で必要。

リモートコンパイルはsshクライアントPuTTYの作者が作ったPlinkを利用させていただいている。Plinkはssh経由でリモート先のプログラムを実行できるプログラムで、それを使ってリモート先に置いたコンパイル用のシェルスクリプトを叩く仕組み。

XP側はマクロ実行機能を持つテキストエディタJmEditor2を使って、マクロからPlinkを実行している。図にするとこんな感じ。

なんでこんな面倒な事をやっているかと言うと、LinuxのコンパイルもVisualStudioと同じような感じでエディタからキー一発で実行できるようにしたかったから。

マクロをかなり趣味に走って作ったので、コンパイル結果のエラー行をダブルクリックするとその行へ飛べるとか、カーソル位置の単語をmanで調べる機能なんかも付け加えてある。もちろんショートカットはF1キーだ(笑)。

いかにVisualStudioに毒されてるかって話だけど、それは言わない約束(笑)。この環境を構築するためにエディタのJavaScript互換マクロと、bashのシェルスクリプトの作り方も覚える事ができたし、それだけでもずいぶん面白かった。

まったくもってプログラマは業が深いよなぁ(笑)。

このページは xfy Blog Editor を利用して作成されました。

2007年9月 5日 (水)

シリアルコンソール用アダプタの作り方

KURO-BOX/PROをハックする時はシリアルコンソール経由でログインできる状態にするのが必須で、その為には何らかの手段でフロントパネル基板とPCを接続する必要がある。

基板から出ている信号は3.3Vのシリアルだから、秋月で売っている200円のレベル変換ICを使ってレベルコンバータを作るのが正当な手段としては一番安くできる。もっと無理矢理な手もあるけどそっちはお勧めできない。

電子工作に慣れている人ならレベル変換ICを使うのは安くて簡単な手段だけど、そうでない人には敷居が高いし、PCにシリアルポートが無いと使えないので、もう少し簡単に作れる方法を紹介。

用意する部品はこれだけ。秋月のUSBシリアル変換モジュールと24ピンのICソケット、それに被服線。コネクタは必要なら用意する。ICソケットは丸ピンじゃなくて、値段の安い平ピンタイプを使う事。

ICソケットを裏返して1番、5番、24番の3本のピンを折り曲げ、そこにケーブルをハンダ付けする。写真だと青色が1番、緑色が5番、灰色が24番。

残りのピンも全部折り曲げて、テープを貼って絶縁しておく。

ケーブルの反対側は必要があれば適当なコネクタを付ける。面倒ならKURO-BOX/PROのフロントパネル基板に直接ハンダ付けしても良いが、あまりお勧めはできない(笑)。

CD-ROMの音楽用ケーブルが余っていたら、それを流用すると手軽に作れると思う。

ICソケットの1番ピンがTXD、5番ピンがRXD、24番ピンがGNDなので、ICソケットのGNDとフロントパネル基板のGND、TXDとRXD、RXDとTXDがそれぞれつながるように接続する。TXDとRXDがそれぞれクロスするように接続するのを忘れない事。

基板のVcc(上から2個目)には何も接続されないようにする。テスターがあれば電源を入れる前にそれぞれの導通をチェックして、ショートしていない事を確認したほうが良い。

こんな感じで使う。

USBシリアル変換モジュール上のジャンパは、J1が1-2をショート、J2がショートの設定にしておく事。そうしないと信号レベルが合わなくなる。

作成はあくまでも自己責任で。自信のない人は素直にSCON-KIT/PROを買いましょう。

このページは xfy Blog Editor を利用して作成されました。

2007年9月 3日 (月)

BusyBox

KURO-BOX/PROのシリアルコンソールが正常に動かなかった件は、以前のエントリに書いたようにコネクタの半田付け不良が原因で、半田付けし直したら何の問題もなく使えるようになった。

バッファローダイレクトで特価販売されていた奴だったので、動かなかった時はハードウェアの不良を疑ってしまったよ。疑ってスミマセン。

これで心おきなくDebian化が進められるんだけど、せっかくなのでその前にデフォルト状態でどんな構成になっているのかを色々と調べてみた。

Webの情報でKURO-BOX/PROはBusyBoxを使用していると書かれていて、それが実際は何なのかピンと来なかったのだが、/binディレクトリでls -lをやってみたら一目瞭然。

bin # ls -l
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 addgroup -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 adduser -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 ash -> busybox
-rwxrwxrwx    1 root     root       619848 Dec 21  2006 bash
lrwxrwxrwx    1 root     root            4 Apr 10 22:45 bash2 -> bash
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 bbconfig -> busybox
-rwxr-xr-x    1 root     root       797180 Apr  6 22:45 busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 cat -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 chattr -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 chgrp -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 chmod -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 chown -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 cp -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 cpio -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 date -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 dd -> busybox
lrwxrwxrwx    1 root     root            7 Apr 10 22:45 delgroup -> busybox

ほとんどのコマンドがBusyBoxへのリンクになっていた。なるほど、そういう事か。

つまりlsmkdirmountも実行されるのは同じBusyBoxで、BusyBoxはarg[0]をみて自分がどのコマンドとして実行されたのかを調べて、そのコマンドに応じた処理を行う訳だ。

C言語でプログラムしていた時に、arg[0]に格納される実行ファイル名って意味が無いよなぁと思っていたんだけど、これなら十分に意味がある(笑)。

リソースに余裕のあるシステムならBusyBoxを使う必要は無いけど、複数のコマンドやツールを一つにまとめる事でサイズを大幅に削減できるから、制約の多い組み込みシステムでは確かに便利だろう。

うまいこと考えるもんだなぁ。感心してしまった。

あとからWebで調べてみると「BusyBoxを使って組み込みLinuxシステムを単純化する」というIBMの記事があった。これは良くまとまっていて分かりやすい。最初にこの記事を読んでおけば、すぐにピンと来たのにな(笑)。

このページは xfy Blog Editor を利用して作成されました。

2007年8月29日 (水)

シリアルコンソール(続き)

KURO-BOX/PROにUSBシリアル変換モジュールを接続して、シリアルコンソールを使えるようにしたら、受信はできるのに何故か送信が化け化けでログインできない状態に陥ってしまった。

秋月のUSBシリアル変換モジュールAE-UM232RはFTDI社のFT232RLを使用していて、今までにも色々な所で使っているから実績があるし、問題は無いハズ。

でも一応問題の切り分けのために、以前に作ったRS232Cのレベルコンバータ基板を自宅から持ってきて、代わりに接続してみた。

KURO-BOX/PRO側から3.3Vの電源を貰って、レベル変換を行うだけの回路だからこれで動かない事は無いハズ....なのに今度は受信すらできなくなってしまった(笑)。

テスターで信号線を当たってみると、そもそもVCCに電圧が来ていない。

でもKURO-BOX/PROのフロントパネルにある他のVCCランドにはちゃんと電圧が出ているし、UART端子のVCCと他のVCCはちゃんと導通している。と、言う事は....GNDがつながってないんじゃん!!(爆)。

フロントパネルに半田付けしたコネクタのうち、GND端子だけが半田が浮いていて、つながってない状態になっていたのだ。

USBシリアル変換モジュールはUSB側から電源を供給していたから動いたけど、レベルコンバータ基板はKURO-BOX/PRO側なので、GNDが浮いてたら動くわけがない。というか昨日はよく受信だけでも動いてたな。

オシロで信号を見たらレベルがふらふらと動きながらも、かろうじて範囲内に入っている状態だったんだろうな。

フロントパネルを外してGND端子をしっかり半田付けし直して、テスターで導通もチェックしてから再度試してみると、今度は送信も受信も問題無し。もちろんシリアルコンソールからのログインも問題無くできる。

昨日はケーブルの導通まではチェックしたんだけど、コネクタの導通まではチェックしなかったのが敗因か。たぶんこの状態ならUSBシリアル変換モジュールでも問題無く動くハズ。

これで心おきなくハックできるけど、初っぱなから躓いて半分ぐらい燃え尽きてしまった(笑)。続きは暇を見てぼちぼちやっていこう。

このページは xfy Blog Editor を利用して作成されました。

2007年8月28日 (火)

シリアルコンソール

KURO-BOX/PROは基本的にネットワーク経由で使うものだけど、何か設定をミスしてネットワークからのアクセスが不可になると、手も足も出なくなってしまう。特にファームウェアの書き換えで失敗すると致命的なので、ハックする時は最初にシリアルコンソール経由でログインできるようにするのが基本。

前面パネルを外すと現れる基板上にUARTの信号は来てるんだけど、パターンしか出てないからコネクタの半田付けが必要となる。まあケーブルを直に半田付けしても良いんだけど、見た目的にちょっとね。

ちなみにコネクタを半田付けすると製品の保証は無くなってしまう。絶対に必要なのにそれで保証無しってのはちょっと解せないモノが。最初からコネクタぐらい付けといて欲しいぞ。

白いのが半田付けしたコネクタ。

信号はCMOSレベルだから、PCに接続するためにはレベル変換回路をかますか、USBシリアル変換モジュールを使う必要がある。私は秋月で買ってきたAE-UM232Rを使ってこんな基板を作った。

ユニバーサル基板にICソケットを半田付けして、そこにケーブルを取り付けただけ。基板のスペースが半分空いてるけど、これは後でレベル変換ICを乗せて、普通のUSBシリアル変換アダプタとしても使えるようにと考えていたから。

このへんに貧乏性が滲み出ている(笑)。

これをPCに接続すると、ドライバで自動認識されて仮想COMポートとして使えるようになる。TeraTermProを起動してポートとボーレートを設定後、ケーブルをKURO-BOX/PROに接続して電源を入れると、ブート時のメッセージがずらーっと出てきた。

ここまではOK。

ところが、コンソールからログインしようと思ってキーボードを叩くと、文字が化け化けでログインできない。ケーブルの導通をチェックしたり、USBシリアル変換チップのドライバをアップデートしたり色々と試してみたのだが、結果はまるっきり同じ。

昼休み時間にちょこっとできるだろうと思ったのに、こんな所でハマってしまうとは。

メインの仕事があってこっちばっかりやっている訳には行かないので、続きはまた明日。USBシリアル変換アダプタを使わずに、レベル変換ICを使う方法で試してみよう。

このページは xfy Blog Editor を利用して作成されました。

2007年8月17日 (金)

黒いのが来た

先日バッファローダイレクトでつい注文してしまったKURO-BOX/PROが午前中に到着。代引きなので食事に出ている時に来られると困るなぁと思っていたんだけど、Twitterでそう呟くと同時に来た。いいタイミングだ。

15日までお盆休みで発送作業は16日からとなっていたが、たぶん今日は届かないだろうと予測していたのに、良い方に裏切られてしまった。休み明けでもちゃんと仕事しているらしい(笑)。

箱つぶれ&キズ・汚れ有りの商品だったけど、箱のつぶれは大したこと無かったし、キズも背面の縁にちょっと擦れたような跡があっただけで、ほとんど気になるレベルではなかった。前面パネルの保護シールも貼られたままだったし。

注文後にBUFFSHOPでもっと安く売られているのを発見して微妙にヘコんだのだが、きっとそっちはもっと目立つキズや汚れがあったに違いない....と思う事にしよう(笑)。

まあでも実際には同程度の商品なんだろうなぁ。ちなみにBUFFSHOPでは一度完売になって、その後補充されてまたすぐ完売になった様子。9,800円なら当然か。

筐体のデザインは悪くないと思うけど、前面パネルと側面に白抜きで「玄人志向」「玄箱」とレタリングされてるのはちょっと目立ちすぎかなぁという気が。マジックで塗りつぶしちゃうぞ(笑)。

まだSATAのHDDは用意してなかったので、とりあえずそのままで電源とネットワークケーブルだけつないで起動させると、何の問題もなく普通に動作する。DHCPサーバから自動的にIPを取得して、ネットワーク上からも普通にアクセスができた。

WebサーバやSWATもデフォルトで動くようになっていたけど、とりあえず動くようにだけはしてみましたというやっつけ感が色濃く漂っていて(笑)そのままNASとして使う分には問題無いだろうけど、Linux-BOXとしてはかなり物足りない。

そういうコンセプトの製品なんだから当たり前なんだけどね。

HDDを入れずに起動させると当然ながらもの凄く静かで、どうせならこの状態で大容量のCFで稼働させられないモノかと思ったのだが、調べてみるとCF->SATA変換基板って意外と種類が少ない。

CF->ATA(IDE)は端子変換だけだから作るのが簡単だけど、SATAだとそうは行かないからなぁ。

同じ玄人志向から出ているKRHK-CF2.5SATAはCFを2.5インチのSATA互換に変換する基板なので、3.5インチのHDDを直接基板に挿して実装する方式のKURO-BOX/PROには使えないと思うけど、間にケーブルをかませれば可能かも知れないな。

探してみた範囲内ではこの組み合わせでCF化している人は見あたらなかったので、人柱は必至(笑)。仕事がちょっと忙しくなってきてあまり時間が取れそうにないから、しばらくは情報収集かな。

とりあえずシリアルコンソールを使えるようにだけはしておこう。

このページは xfy Blog Editor を利用して作成されました。

フォトアルバム

UNIQLO

2010年3月

  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      

Junk Inn

ブログ powered by TypePad

電卓