欧米ではすっかりメジャーになったAmazonの電子書籍端末「Kindle」。ビブリオマニア兼ガジェットマニアには垂涎の製品だが、これをハックすることで日本語入力やネット閲覧まで可能になるという。いい年した大人の「夏休みの自由研究」を見よ!
きんどるちゃんと怪しいハッカーのおはなし
2010年11月、国際送料をケチってアメリカ出張中に購入したAmazon Kindle3。Linuxで動いていることは事前の情報で知っており、帰国後すぐに中身をいじり始めました。
Amazon Kindleは、無料の3Gネットワークを通して世界中で書籍を購読できる、世界シェアNo.1(2010年の出荷台数)の電子書籍端末。
物理キーボードは付いているけれども、「読む」ための端末なので、文章のコピー&ペーストや本格的にノートをとることはできません。もちろん日本語入力などできません。でもちょっと待ってくれ。文字を書き込めないなんて本じゃない。
……そして2週間後、そこには元気にテキストエディターで日本語入力を受け付けるKindleの姿がありました。この記事では、ロボット工学を研究するドクターコースの大学院生の手によるKindleハックの過程を紹介します。
文鎮化に要注意&自己責任万歳!
Kindleの内部に手を加えると「文鎮」や「レンガ」と呼ばれる、完全に復旧不可能な状態になる恐れがあります。こうなると電子書籍端末が、文字通り重しにするぐらいしか能のない無益な物体になってしまいます。
また、通信系などを不正に使用すると、Amazonから何らかの制裁を受ける可能性もあります。
なお、この記事はなんとかしてKindleにSSHでリモートログインできる状態になっていることを前提としています。JailBreakの必要があるため、Amazonのサポートなどを一切受けられなくなります。
さらに、Linuxのシステムに関する知識を十分に持ち、かつ注意を払って作業しないと、誤ってシステムを破壊してしまう可能性があります。すべて自己責任で!
オープンなハートをもつ彼女
彼女の根底に流れる血は「Linux」。オープンソースのOSで動いています。彼女の心に直接語りかけることができれば、新たな進展が!?
Kindleのインタフェースは、Linux上のJava仮想マシンの上で動作するJavaアプリケーションとして実装されています。このインターフェースと連動して何かを作るのは手間が大きいので、今回はJava仮想マシンのプロセスを一時停止させて自作のプロセスをアクティブにするという手順でハックしました。
ちなみにKindleはオープンソースのシステムをベースに作られているため、OS周辺のソースコードはAmazonのウェブで公開されています。ハックする上では、ドライバ回りの仕様を知る必要があるので、このソースコードを読みながらプログラミングをすることになります。
また、Kindleには、ARM11ベースのFreescale社製プロセッサが使用されています。自作のプログラムをコンパイルする際には、arm-linux用のクロスコンパイラを利用します。クロスコンパイラ自体をコンパイルして作ることもできますが、CodeSourcery GNU Toolchain for ARM Processorsのような、コンパイル済みのものを利用するのが簡単です。
動画で見るKindleハック:Linuxのターミナルエミュレーター
必見! 彼女の心を打つ会話術
出会ったばかりの彼女は、あなたの言葉を理解するすべを持ちません。彼女に話しかけるためには、「端末エミュレーター」を用意しましょう。
いくらLinuxベースとはいえ、Kindleは汎用入出力インターフェイスを持たないため、画面上で目的のコマンドやアプリケーションを実行するには専用の端末が必要となります。ここでは、私が独自に作成した端末ソフト「hackindle」を使用した例を紹介しましょう。
hackindleを利用するために、文字表示に使用したいフォントを用意し、ソースコード中のフォント指定を書き換えてクロスコンパイルします。
Linux起動時に自動で実行されるように、/etc/init.dディレクトリ内に起動スクリプトを作り、/etc/rc0~6.dのディレクトリ内に他のプロセスとの起動順の兼ね合いを考えながら、起動・停止用のシンボリックリンクを張ります。
これでKindleを再起動すると、hackindleがバックグラウンドで起動するようになりました。
この状態で、[Alt]+[Aa]+[Q~Y]を押すことで、普段のKindleの画面と、端末1~5画面に切り替えながら使用することができます。
hackindleでは、UTF-8で表現された日本語のアンチエイリアス表示や、アルファベットしか持たないKindleのキーボードを補う、Shift/Alt/Symキーとの組み合わせによる記号入力が可能です。