GonkはFirefox OSプラットフォームのための、Android Open Source Project のLinux Kernelベースと、Userspace Hardware Abstraction Lyaer(HAL)から構成される低レベルオペレーティングシステムです。この記事では、Gonkの構成を説明することに的を絞っています。Firefox OSの全般的なアーキテクチャやGonkがどのようにFirefox OSに最適化されているかは、Firefox OS architecture を読んでください。
Gonkの概要
Geckoのソースコードの中にはb2g/フォルダがあり、モバイルハードウェア機能をウェブ用にアンロックするための、Gonkポートが含まれます。それらにはLinux KernelとHAL、そしてOEMライブラリが含まれます。数種類のGonkのライブラリはcommonオープンソースプロジェクトです。(libusb, bluezなど) いくつかのHALの一部はAndroid プロジェクトと共有しています。(GPS, Cameraなど)
Gonkはデバイスを移植するレイヤー(ハードウェアとGecko間をつなぐアダプター役)です。GonkはGeckポーティングレイヤーとペアをなしているGeckoポートを扱うことができる比較的シンプルなLinuxディストリビューションです。(だから、GeckoをOS XやWindows, Androidにポーティングするように、GonkはGeckoをポーティングターゲットとしています。)
Note:モバイルデバイスはそれぞれ異なるチップセット、異なるハードウェア仕様になります。そのためデバイス毎に異なるGonkディストリビューションが存在します。
Firefox OSプロジェクトがGonk全てコントロールするようになって以来、他のオペレーティングシステムでは見せることができないインターフェイスを見せることができています。例えばGeckoは直接テレフォニースタックの全てにアクセスしたり、Gonkのバッファーフレームに描画することができます。
Gonk ソースコード
B2G repo on Githubには複数のデバイスにポーティングされた公式サポートのGonkをが含まれ、Gonkレポジトリを自身で扱うことができます。サポートしているデバイスリストは B2G/config.shから入手できます。
Gonk作業の日々の大半では、異なるボード上への移植や、異なるデバイス上でGeckoがうまく動作することを確認することです。