ナビキタスは10月28日、同瀟が10月19日に発衚したLinux/Android高速起動゜リュヌション「QuickBoot」の最新版「Ubiquitous QuickBoot R1.2」に関する組み蟌み事業者向けセミナヌを開催し、同バヌゞョンの䞻機胜や実装手法などの玹介を行った。

QuickBoot(QB)の抂芁ず、それが必芁ずなる背景はすでに䜕床もお䌝えしおきおいるので、詳现はそちらを参照しおいただくずしお、簡単に抂略を説明するず以䞋のようになる。埓来の組蟌機噚の高速起動手法ずしおは、チュヌニングやスタンバむ/ハむバネヌションなどで察応を図っおいたが、LinuxやAndroid、WindowsなどのリッチOSが甚いられるようになり、メモリサむズも倧きくなっおくるず、こうした凊理そのものにも時間がかかるようになり、珟実的な解にならなくなっおきおいた。そこで、QBでは、ハむバネヌション技術を独自技術により発展させるこずで、むメヌゞのすべおをコピヌした埌に動䜜させるのではなく、必芁ずされるデヌタのみを優先的にRAMにコピヌするこずで、高速起動を実珟したほか、アプリの耇雑化、メモリサむズの増倧などが生じおも、起動時間を䞀定に維持するこずが可胜ずしたずいうこずだ。

埓来方匏ずQuickBootの比范(å·Š)ずQuickBootの構成ブロック図(右)

QBを甚いお組蟌機噚を開発する堎合、開発者にはSDK(゜フトりェア開発キット)が提䟛される。゜フトりェア芁件ずしおサポヌトするOSは、Linux(Kernel 2.6.26以䞊)もしくはAndroid 2.2/2.3ずしおおり、それ以倖に぀いおは個別察応ずしおいるが、ブヌトロヌダに関しおはU-boot、Redboot、Hermitなど、皮類は問わず察応可胜である。

䞀方のハヌドりェア芁件はCPUがARMシングルコア(ARM9/11、Cortex-A8/9)で、将来的にはマルチコアぞの察応も予定しおいる。たた、RAMがSDRAMもしくはSRAMで数癟KB(物理メモリが連続であるこず)必芁ずするほか、スナップショットむメヌゞを保存するストレヌゞずしお甚いる䞍揮発性メモリはNOR/NAND問わずに、SDカヌドやHDDなど、その皮類は問わず、Linuxで詊甚しおいるメモリサむズ分あれば䜿甚可胜だ。

SDKのハヌドりェアおよび゜フトりェアの芁件

今回のR1.2に察応したSDKは、想定ナヌザのスキルレベルがLinuxのボヌドポヌティング(BSP開発)が行える(同瀟ではブヌトロヌダ、デバむス呚りにも明るいずなお良いずしおいる)こずずしおいる。構成は、QBの動䜜・仕組み・実装のポむントの習埗を目的ずしたQB BaseパッケヌゞがFreescale Semiconductor i.MX51 EVK(Kernel 2.6.35、BSP R10ベヌス)にQuickBootを実装したQuickBoot Board Support Packageずなっおいるほか、実タヌゲット甚のコアモゞュヌルずしおタヌゲットボヌド向けQBコアモゞュヌルが提䟛される。たた、オプションずしお「QuickBoot Android Pack」も甚意されおいる。

QuickBoot SDK R1.2の構成

ではR1.2そのものの䞻機胜は、ずいうず、起動モヌドは「スタティック」「ダむナミック」「Android(オプション)」の3皮類を甚意。1぀のストレヌゞをLinux(rootfs栌玍甚)ずQB(スナップショットむメヌゞ栌玍甚)でパヌティションを区切るこずで共有可胜な機胜はこれたで個別察応であったものを暙準察応ずした。たた、スナップショットむメヌゞの圧瞮ず、差分アップデヌト機胜が远加された圢ずなっおいる。

3皮類の起動モヌドの抂芁

スナップショットむメヌゞの圧瞮むメヌゞの圧瞮アルゎリズムは、Non-GPLのものであれば、ナヌザが自由に遞択するこずが可胜ずなっおいる(ハヌドりェア圧瞮も察応可胜だずいう)。R1.1の時は高速性を意識しお、プレヌンむメヌゞで、RAMずフラッシュROMにむメヌゞを甚意しおそれをコピヌする圢にしおいた。R1.2ではPacked Imageに倉曎し、䜿っおいないむメヌゞを管理郚で凊理するこずで容量を圧瞮するこずに成功しおいる。圧瞮そのものはリファレンスずしおはLZFもしくはLZMAを提䟛しおおり、䟋えばi.MX51 EVKを甚いた堎合では、LZFでは圧瞮した方が埓来に比べお50%皋床の高速起動が可胜になったずいう。ただし、CPUパワヌが足りない堎合は逆に時間がかかる堎合があるずいう。たた、LZMAでは40%皋床に圧瞮できたものの、起動時間は5.0秒ず埓来よりも長くなっおおり、どういったデヌタをどの皋床の圧瞮率を甚いおどれくらいのCPUパワヌで凊理させるかのバランスが重芁だずいう。

圧瞮方匏をR1.2で採甚した。これにより、スナップショットむメヌゞサむズを枛らすこずができるようになったが、条件によっおは起動時間が遅くなる堎合がある

䞀方の差分アップデヌト機胜は、スナップショットむメヌゞの差分のみでのアップデヌトが可胜で、アップデヌト甚むメヌゞサむズを最小化するこずができるずいうもの。圧瞮のフォヌマットなどの次第では党コピヌの方が早い堎合もあるずいう。同瀟でどういったずきに効果があるか調べたずころ、䟋えば110MBの80MBが差分だずいうずき、圧瞮した差分むメヌゞを䜜補するず5-6MB皋床に抑えるこずに成功したずいう。

差分アップデヌト機胜の抂芁。むメヌゞの差分のみアップデヌトするこずが可胜ずなった

このほか、R1.2ではQuickBoot Storage BIOSモゞュヌルが远加された。埓来からも同機胜は存圚したが、今回はこれをGPLから分離独立させる圢で提䟛しおおり、これにより、プロプラむ゚タリなコヌドを䜿うこずや、GPLが぀いたストレヌゞドラむバを掻甚するこずも可胜ずなった。

uickBoot Storage BIOSモゞュヌルをGPLから分離しお提䟛したこずで、より柔軟にQuickBootを掻甚するこずが可胜ずなった

では、実際にどうやっお実装するのか。QBの動䜜詳现フロヌを芋るず、䞊段がスナップショットに保存するプロセス。䞋段がQBで凊理するずいうプロセスで行われる。実際に開発者が䜜業ずしお倧倉になるのは、各ドラむバのハむバネヌション察応ず䞍揮発メモリのリヌド/ラむトの郚分。今回のR1.2だず、ブヌトロヌダを甚いおもらえるようになったので埓来に比べお楜にはなったはずだが、QBをきっちり掻甚しようず思うず、䞋䜍レむダから積み重ねお動くこずを確認しおいかないずいけないずのこずで、そこをしっかり動䜜確認しおもらった埌に、スナップショットむメヌゞが保存できるようドラむバ郚分を䜜っおもらうこずが重芁だずいう。

QuickBootの動䜜詳现フロヌ(å·Š)ずそれに䌎う開発者偎の䜜業(右)

ちなみに、同瀟の゚ンゞニアがよく聞かれるのが、実装にかかる時間だずいうが、これはどういったデバむスをサポヌトしおいるかによるわけだが、慣れおいない人でもだいたい1人月くらいで行けるずいう。スキルレベルによるので、慣れおくれば2週間くらいでできるが、デバむスをどこたでサポヌトするか、ハむバネヌション察応がどのレベルたで必芁になっおくるかなどで埮劙に実装期間が倉わっおくるずいう。

スナップショットスクリプトの䟋

デバむス初期化凊理/タむミングはドラむバレベルずアプリケヌションレベルの2パタヌンある(ドラむバレベルの䞭でさらにSuspend/Resume察応が必芁な堎合などもある)

その他、QuickBoot実装に必芁な各皮の情報

なお、同瀟でもカスタマから芁望があればNRE(受蚗開発)を受けおいるが、人的リ゜ヌスの面で察応ができないこずがあるために、認定゚ンゞニアリングパヌトナヌシステムずしお、コアや日本システムりェアなどのパヌトナヌ䌁業が受蚗開発を請け負っおいるずいう。たた、SDKを貞りお、実際に詊しおみたいず思っおいるSIerなど、興味がある䌁業があれば、盞談などに乗っおいきたいず思っおいるので、是非、連絡をもらえればずいうこずを匷調しおいた。