ちょっとここ数日でおもしろいことやってました。
(Flashの道連れになって記事の一部が飛んだのは内緒)
「7000円の中華タブレットにDebianを入れる」
なんとまあ、素敵な響きなんでしょう(棒読み)
組み込み環境の裏で動くOSをハックしたりするのが大好きな人にとってはワクワクする単語じゃないんでしょうか。
そう、事の始まりはというと、先日実家に帰省し机の引き出しを開けると懐かしいタブレットが姿を表したからなのです…
去る3年前、ネットで見た7000円のタブレット「EKEN M001」をなぜか衝動買いしてしまいました。
300MHzのCPU、128MBのメモリ、Android 1.6、カックカクのADW.Launcher。
まるで使えるシロモノではありませんでした。
実は当時からカスタムROMの他に、「M001にはDebianが入る!やったね!」という話はあったのですが、
その頃はもっぱらLinuxをゴリゴリいじる気もなく(いじる知識もなく)、そのまま机の中に葬られました。
そして3年が経った今、このタブレットで遊んでみようと思います。
(ある程度知っている人が読むことを想定して書きます。そもそもEKEN M001をいじってる人そのものがほとんどいないと思いますが…)
Debianのインストール + 初期設定
ここからDebianのイメージを落とし、win32diskimagerとかでSDカードに焼いてください。そのあとは好きな方法でSDカードのext2のパーティションを広げておいてください。Gpartedが一番ラクかも。
M001に挿して起動させます。ブートローダ→プログレスバー→コンソールと画面が遷移していくはずです。
しばらく待つと、ウインドウマネージャとしてMatchboxが起動するので、そのままxtermを起動してください。
(にしてもなんの飾りっ気もないUIです。余談ですがボーイング787の座席についてる端末のPDFビューアもMatchboxの下で起動してた気がします。)
xtermが出たら、passwdコマンドでrootにパスワードを設定しておきましょう。後々困るので。
というのも、このDebianはどうもM001のRTCの扱いが悪いらしく、スイッチ長押しで電源を切るとディスクチェックに引っかかって起動シークエンスの途中で止まってしまいます。その際、パスワードを入力してルートパーティションをfsckする必要があるのです。
できたら、今度はicewmをapt-getして…といきたいところですが、さきにWi-Fiの設定をします。
SlateDroidのこのトピックの#158を見てみてください。改行コードが抜けてますが、これに従ってwpa_supplicant.confと~/wifi.shを書き直しましょう。
アプリ一覧にあるWi-Fiなんたらという名前のソフトを一度実行させておくとwpa_supplicant.confはすでに自動生成されてるはずです。
設定が終わったら、ここに従ってIceWMを入れ、諸設定を行います。
再起動すると…
おおお!!!!!!!
さっきよりリッチなGUIが現れましたね!
このあとは煮るなり焼くなりいろいろできるわけですが、私はだいたいこんなことをやりました:
1. oneko(xneko)を入れる
元祖デスクトップマスコットともいうべきNekoのXバージョンであるonekoを入れてみます。(また余談ですが、私が人生で初めて見たデスクトップマスコットもNekoでした。正確にはNeko for Windowsでしたが。もう12年も前の話です…(遠い目))
apt-get install oneko
とすればもう完了です。
ただし/binや/usr/binではなく/usr/games/onekoにバイナリは存在するので、シンボリックリンクを/usr/binに貼っておきましょう。
ln /usr/games/oneko /usr/bin/oneko
とすればあとはonekoと打つだけで起動します。
お〜デスクトップとおんなじように動くのは感動ですね。
あ、寝ちゃった。かわいい!
2. 日本語を出せるようにする + ibus-anthyを入れて日本語変換できるようにする
英語ロケールしか入ってないんで、もちろんWebブラウザとかで日本語ページを出しても余裕で化けます。
そこで、ロケール切り替え・フォント導入・ibus導入をやってみます。
(先に言っておくと、ロケール切り替えはできましたがibusはうまく動きませんでした。)
まず
dpkg-reconfigure locales
を起動してロケールを選びます。起動に時間がかかりますがゆっくり待ちましょう。
ロケール選択画面になったら、"en_US.ISO-8859-15"と"en_US.UTF-8"と"ja_JP.UTF-8"を有効化してOK。
次に標準のロケールを選ぶのですが、ここではen_US.ISO(ryを選択しておきます。それ以外を選ぶとロケールの設定がうまくいかないようです。
終わったら、ここを参考に標準ロケールを手動で書き換えます。
~/.profileの2行目の部分に
export LC_ALL=ja_JP.UTF-8
export LANG=ja_JP.UTF-8
export LANGUAGE=ja_JP.UTF-8
と追記します。まだ再起動しないでください。
次にフォントを導入しましょう。IceWMを入れるときにリポジトリはupdateしてるはずなので、
apt-get install ttf-vlgothic
とすれば入る…と思ったのですが、どうもVL Gothicのパッケージがリポジトリにないようです。なんでだろう。手動で入れればいいんですが、ここは面倒なんで
apt-get install ttf-umeplus
でUmePlusを入れちゃいましょう。VL Gothicが元になっているフォントなのであまり問題はありません。
ここで再起動します。うまくいくと、いろんな表示が日本語になっているはずです。
おぉ〜〜。やった!
3. Chrome (Chromium) を入れる
このディストリには最初からMidoriという軽量なWebkitベースのブラウザが入っています。
まあここはお馴染みのブラウザが使いたいので、重いのを承知でChromeを入れてみます(汗)
上のIceWMのチュートリアルの最後にも書いてあるのですが、実は
apt-get install chromium-browser
とするだけでChromeが入ってしまいます。超簡単ですね。
はぁぁ… ARMのSoCでChromeが動いてるよ… (キモい)
4. 寿司打をやる (=Flashを入れる)
どう考えてもマシンスペックからして無理そうな気がしますが、むりやりFlashを動かせるか挑戦です。
ARMのSoC + Linuxベースのシステムで動くFlashといえばAndroidのICS以降向けのビルドがありますが、これは比較的新しいARMアーキテクチャ向けに最適化されたものなので使えません。また、flashplayer-nonfreeをapt-getしてももちろんパッケージはありません。そこで、フリーのFlashレンダラであるGnashを使います。
この記事を執筆している今現在(2013/07/30 20:58)、Gnashをインストール中です(すでに30分経過)。
追記: 動きました。
Midoriブラウザ + Gnashで寿司打が表示できます。ただ、言い表わせないぐらい遅いです。
おおっ!!ロゴが出て来ました。
ステージを選択して…(ロゴからここまで約30秒)
ッアアアァァァァァアアァァ!!!!!!!!!!!!!!
遅い上に文字が正しく出ないので遊べたものではありませんでした。
ただMidori + GnashでもFlashが出せるんですね。表示できただけでも感動です!
すごいですね。組み込みとかをハックするのが好きな私はヨダレダダ漏れです。
遅さの前に楽しさが先行してるので、apt-getも30分とか普通に待てます。
Nexus 7にUbuntu入れたりするのは割とポピュラーなので、みなさんもどうでしょう、タブレットにOSを突っ込むのぜひやってみてください。楽しいですよ。