MK802IV と PicUntu

MK802IV を試す

これまで使っていた Android Stick の MK808B は、PicUntu の kernel config をいじらなくても結構使えたのでそれをベースに FirefoxOS を試していました。とはいえ一世代前の製品ということもあって不都合もあります。

  • 本線は RK3188 に移っているので開発から置いていかれる
  • Android も 4.2 から更新されることもない
  • Recovery 起動のままなので一度 Android を経由しないといけない (最新 PicUntu は直接起動可能)
  • もう一台ないと冒険できない(最悪焼き失敗したら文鎮になるので)

ということで RK3188 搭載の Stick に乗り換えるべく以前より同じメーカー Tronsmart の MK908 を購入して試していたのですが、 Tronsmart MK908 は PicUntu の本線でないことや build した kernel がなかなか安定して動かないことから、Rikomagic MK802IV を入手し、そちらを試しています。

MK802IV

MK802IV は直接 HDMI 端子が出ているのでディスプレイに直接挿すことができますが、HDMI オスコネクタなので今回は サンワサプライの HDMI-VGA 変換で アナログRGB に出すことにしました。

PicUntu 導入

PicUntu 4.5 は 本体 NAND メモリから boot 及び root filesystem を置くようになっています。Android は上書きにより使えなくなるので注意してください。

Windows による導入手順は FreakTab のスレッド に詳しく書いてありますが、翻訳しておきます(一部修正追記)。

  1. picuntu-4.5-BasicGUI-Nand をダウンロードし、任意の場所に展開します。
  2. 本体を bootloader モードにする必要があります。本体のmicroSD側にある通気スリット真ん中の凹んだ部分にボタンがあり、先の細い棒でボタンを押しながら電源を入れます。Android が起動している場合は、adb で接続して "adb reboot bootloader" でも可能です。
  3. rk_flash_1.37 フォルダの RKAndroidTool.exe を実行します。ウィンドウの下方に "Found Device ready to flash" が出ていれば OK です。
  4. オプションのうち binloader, parameter, kernel, boot, system をチェックし、misc, recovery, backup のチェックを外します。以下の画面のように設定します。rk_flash_tool
  5. 「Erase NAND」ボタンを押して 内蔵 NAND メモリを初期化します。
  6. 「Flash ROM」ボタンでイメージを書き込みます。
  7. 自動的に再起動され、GUI のログイン画面が立ち上がります。

PicUntu on MK802IV

Kernel ビルド

カーネルソースは github に公開されています。さらに kernel から最初に呼び出す initramfs もビルドに必要なので取得しておきます。

$ git clone https://github.com/aloksinha2001/Linux3188.git
$ git clone https://github.com/Galland/rk30_linux_initramfs.git

MK802IV で使える kernel config はすでに用意されているので、コピーしておきます。

$ cd Linux3188
$ cp arch/arm/configs/rk3188_picuntu-4.4-MK802IV-AP6210_defconfig .config

そのままでは NAND パーティションが異なる(Android recovery 向け)なので、.config の CONFIG_CMDLINE を以下のように置き換えます。パーティションは PicUntu-4.5-NANDGUI 向けの設定にしています。最後の text は CUI で起動するための指定です。

CONFIG_CMDLINE="init=/sbin/init root=/dev/mtdblock2 mtdparts=rk29xxnand:0x00008000@0x00002000(boot),0x00008000@0x0000A000(kernel),-@0x00012000(system) text"

さらに、Framebuffer Console の切り離しができるようにオプションを有効にします。これができないと FirefoxOS を乗せる際に Framebuffer Console が有効になったままになるため、画面が Console Log で延々上書きされることになってしまいます。

CONFIG_VT_HW_CONSOLE_BINDING=y

ビルドを実行します。以下では CCPATH にコンパイラの path を指定します。INSTALL_MOD_PATH はカーネルモジュールを保存する path を指定します。全て完了すると イメージファイル KERNEL.img が得られます。

$ export ARCH=arm
$ export CROSS_COMPILE=$CCPATH/arm-eabi-
$ export INSTALL_MOD_PATH=$PWD/mod
$ make -j4
$ make modules_install
$ mkknlimg arch/arm/boot/zImage ./KERNEL.img tvbox:

できた kernel イメージは上記で展開したフォルダにある rockdev\Image 以下に名前を変えて(たとえば mykernel.img とか)から保存し、 rk_flash_1.37 フォルダの RKAndroidTool.exe を起動して、kernel の path 部分を変えた名前(..\rockdev\Image\mykernel.img)に変更してから 「Flash ROM」で 書き込みます。

FirefoxOS の可能性

Android や FirefoxOS が使う OpenGLES ライブラリは GPU である Mali が使えるようにするため、kernel build でドライバも build する必要がありますが、今のところ有効にすると console が表示できずうまく起動しないようです。Framebuffer Console がぶつかるのかもしれませんが、原因追跡が必要です。

すでにパッケージに用意された build 済み ドライバは API バージョンが異なるため使用できないようなので、まずはこの辺りの突破が最初の関門のようです。


コメント

タイトルとURLをコピーしました