組み込みLinux(くみこみリナックス、英: Embedded Linux)は、組み込みシステムに特化したLinuxカーネルやLinuxオペレーティングシステム、またはそれら搭載する組み込み機器を指す用語である。携帯電話や携帯情報端末、メディアプレイヤーなどの家電機器、ネットワーク機器、ファクトリーオートメーション装置、カーナビ、医療機器など様々な組み込みシステムにて利用されている。米VDC (Venture Development Corporation) の2008年における調査によると、Linux は18%の組み込みエンジニアが使用しているとされる[1]。
デスクトップおよびサーバなどの汎用的なシステムと異なり、組み込みシステムではリソースが制限されており、例えばRAMや二次記憶装置の容量が小さい。組み込みLinuxを使った機器は、二次記憶装置としてハードディスクドライブの代わりにより小さいフラッシュメモリを使うことが多い。組み込みLinuxはアプリケーションや対象ハードウェアに必要な機能に特化されていることが多く、Linuxカーネルもそのアプリケーションに対し最適化し構成されている。最適化の具体的な例は、OSのリアルタイムオペレーティングシステム化などである。
一般的にLinuxは移植性にすぐれるシステムであると言われており、デスクトップコンピュータやサーバにあまり採用されていないコンピュータ・アーキテクチャにも移植されている。その中には組み込みシステムも含まれている。
組み込みシステムへのオペレーティングシステムの移植にはプロプライエタリなアセンブラやCコンパイラ、標準Cライブラリを利用するケースもあるが、それらと比較して、OS自体のソースコードを修正して再配布でき、ロイヤルティーやライセンス料が発生しないといったフリーソフトウェア/オープンソースソフトウェアとしての特徴だけではなく技術的な優位点もあり、使用メモリ量が比較的少なく(2MB以下のメモリで起動可能)、安定した動作、比較的サポートベースが大きい、などの利点がある。組み込みLinuxは、Linuxカーネルに少数のフリーソフトウェアを組み合わせたものである。標準Cライブラリにはglibcの代わりに、もっとリソース消費量の少ない dietlibc、uClibc、Newlibが採用される場合もある。
2006年05月、Linuxカーネル開発者のグレッグ・クロー=ハートマンによりLinuxのドライバ開発キットがリリースされた[2]。また、Linux Foundation(以前はOSDL)によって開発のトレーニング講座や無料のウェビナーが開かれている。
組み込みLinuxに使われるオープンソースのミドルウェアとしては、BusyBoxなどのオールインワンなものや、SambaやWebKit、FreeTypeなどのプロプライエタリな代替が少なくかつ重要なものも多い。また、MaemoやMoblin、Androidのようにミドルウェアの大部分をオープンソースで改めて開発するものや、Palm WebOSのようにミドルウェアの多数の部分にオープンソースソフトウェアを組み合わせて使うものもある。マルチメディアに関してはオープンソースで扱う場合、GStreamer経由でハードウェアデコーダとFFmpegをバックエンドにして使われることが多いが、AndroidにおいてはOpenCoreが使われている。
開発環境としてはEclipseか、商用製品が使われることが多い。Eclipseでは組み込みにおいて以下のプラグインが使われる。
また、EclipseにはMoblin Eclipse Plug-inやAndroid Development Tools (ADT) など特定のOSに特化したプラグインも存在する。 また、開発にはエミュレータのQemuや分散コンパイルの為のdistccやiceccなども使われる。
Gartnerのプレスリリースによると、2008年のLinuxのシェアは8.1%としている[3]。AdMobのレポートによると、全世界のモバイルデバイスにおいてLinuxカーネルを採用しているOSであるAndroidとPalm WebOSを合わせたシェアは2009年8月時点で11%であり、2009年2月の2%と比べ9%伸びている[4]。また、AdMobの2010年2月のレポートによると、スマートフォンにおけるAndroidのシェアは24%に達し、2位になったとしている[5]。
日本では、NTTドコモの制定したMOAP(L)及びALPベースのFOMA端末用オペレータパックに使われている。
日本では、ネットワーク接続可能なハイエンド機種のテレビにはほぼLinuxが搭載されている[6]。
ゲームコンソール(コンシューマーゲーム)において、Linuxが使われる例は少ない。
PS2においては、PS2 Linuxがハード込みで発売された。また、PlayStation BB UnitにはLinuxが使われている。PS3においてはLinuxがインストールできることを売りにしていたが、新型を出した際にオミットされた。また、旧型PS3においてもファームウェア更新によって無効化された。
近年[いつ?]ではスマートフォンのゲーム市場が活性化されており[7]、Androidでのゲーム市場も急速に成長している[8]。そのためXperia PlayやODROIDのようなAndroidを使った携帯ゲーム端末が出始めている。
その他、直接組み込みLinuxが使われているコンソールとしては、GP2X/GP2X WizやLeapFrog Didj、Pandora、EVO Smart Consoleなどがある。
以下は、組み込み機器に特化したLinuxカーネルの機能である。"CONFIG_*"という表記はカーネルコンフィグレーションであり、コンパイルする際に機能を有効化するための識別子となる。Linuxカーネルはモノリシックであるため、カーネルコンパイル時に必要とする機能を有効化する。
なお、AMP (非対称型マルチプロセッシング) にはまだ対応していない。RenesasとTIはそれぞれ異なったVirtioベースの仕組みを提案している[9][10]。
リアルタイムな用途では、スループットよりもレイテンシが重要となることが多い。レイテンシを改善するためには、カーネルの設定変更・チューニングの他に、アプリケーション自身も最適化する必要がある。カーネルのレイテンシを測定するためにCyclictestなどのベンチマークや各種トレーサが使われる。Linuxにおけるリアルタイム全般の情報は Real-Time Linux Wiki にまとめられている。ELCヨーロッパ2008においてソニーのFrank Rowandによりターゲットへのレイテンシ最適化の実例がプレゼンテーションされている[11][12]。また、同氏によってハードウェア/カーネルに付随するリアルタイムの不足点と改善案が提示されている[13]。
かつてのLinuxカーネルはリアルタイム性能が悪かったため、高機能なLinuxカーネルをリアルタイム用途とともに使うために、Linuxカーネルよりも下にリアルタイム性能が高くリアルタイムタスクを実行可能な別のシンプルなカーネルが使われることが多かった。現在はMontaVista、レッドハットなどによりプリエンプション用のパッチセットRT PREEMPTが開発されLinuxカーネルのリアルタイム性能は大きく改善しているものの、他のカーネルとの組み合わせは現在[いつ?]も使われている。
また、Linuxカーネルにはバージョン2.0時点で導入された、アトミックな単一カーネルロックのBKL (Big Kernel Lock)が以前存在していたが、レイテンシ・スループットやスケーラビリティを大きく下げる原因となるため[14]、現在はロックの細分化やロックレス・アルゴリズムへの置き換えなどによって、全てのBKLが削除されている[15]。
現在[いつ?]、RT PREEMPTは"mainline"と呼ばれるリーナス・トーバルズ管理の主要カーネルツリーへのマージを目指している。標準やPREEMPTで有効になった機能の他にCONFIG_PREEMPT_RCUやthreadirqsなど多くの部分が既にマージされているが、まだマージされていないフィーチャーは残っている[16]。
Linuxの組み込み用途での使用を推進する業界団体がいくつか結成されている。
2000年7月に結成された Emblix は日本における組み込みLinuxの普及とその周辺技術の標準化を目的としている。プロセスをグループ化しCPUのリソースを制限するCABIが開発されたが、現在はプロセス集約機能cgroupsに取って代わられている。
2003年に結成された CE Linux Forum はLinuxカーネル本体に組み込み用機能を含めることを目的としている。2010年10月、メンバーの重複が多いことや活動目的の一致、組み込みLinuxに関わる企業や開発者の増加からLinux Foundationと合併し、従来の活動の継続の他、組み込みLinuxの開発プロセスを容易にするためにYocto Projectという技術ワークグループを開始した[19][20]。
Linuxに関する統括的団体であるLinux Foundationも組み込みLinuxを推進している。2005年にLinux Foundationに合流した Embedded Linux Consortium (2000年3月結成) には、IBM、インテル、LynuxWorks などが参加し、APIの標準化を行っていた。そこで作成された ELCPS (Embedded Linux Consortium Platform Specification) は、組み込みLinuxを使った機器の開発において、アプリケーションの移植性を有する標準プラットフォームとしてどのような機能を含めるべきかのガイドとなっている。
2004年に結成された Linux Phone Standard Forum はLinuxを使った携帯電話でのアプリケーション環境の標準化を目的としている。
2006年に結成された LiMo Foundation は、サードパーティのLinuxベース携帯電話向けアプリケーション開発のための標準インタフェースの確立を目的としている(設立時メンバーは、モトローラ、NEC、パナソニック、サムスン電子、NTTドコモ、ボーダフォン)。
2007年に結成された Open Handset Alliance は、Androidの開発推進を目的としている。
2009年に日本で結成された Open Embedded Software Foundation は、Androidに関わる企業間の協力を目的としている。また、できる限りAndroidと同じApatche 2.0ライセンスで、最小構成のAndroid (Light Weight Android)やデジタルテレビ拡張 (Digital TV Extension)、各種スタックなどの開発を予定している。2010年3月にEmbedded Masterをリリースした。これはAndroid 1.6をベースにSIP/RTPスタックやBluetoothのHID/SPP/OBEXプロファイルへの対応、リモコン対応、ポインティング対応、GUI用APIなどを追加したものである[21]。
2010年に結成された Linaro は、六ヶ月毎に参加企業の各SoCに最適化されたツール・カーネル・ミドルウェアを提供することなどを目的とした非営利のイギリス企業である(設立時のメンバーはARM、サムスン電子、IBM、Freescale、ST-Ericsson、Texas Instruments)[22]。
組み込みLinuxに関わらず、元となるLinuxカーネルにまつわる特許、とりわけソフトウェア特許の問題がいくつか存在する。
Linuxカーネルではリード・コピー・アップデートを始めとしていくつかの特許で保護された技術が利用されている。これらの保護されている技術はパッチ寄稿者が特許権者である場合、Linuxや他のオープンソースプロジェクトで使うことを権利者が許可している場合が多い(このような特許で保護されたテクノロジーは多くは企業の従業員によるLinuxカーネルへの貢献によるものが多数を占めるため)。
2005年にはOpen Invention Network (OIN) が誕生し、Linuxや関連アプリケーションに対し自社保有の特許を行使しないことに同意しかつOINとライセンス契約を締結すれば、OINのライセンシーはOINが保有するLinux関連特許をロイヤリティフリーで使えることが保証されるようになった。これら特許にはSamba、Mono、Apacheなどが利用する特許も含まれる[40][41]。現在OINにはライセンサーまたはライセンシーとしてIBM(メインフレームやAIXの著作権ならびに特許を持つ)、ノベル(UNIXの著作権ならびにUNIX System Vの特許を持つ)、オラクル(SunOS/Solarisの特許を持つ)[42]、HP(HP-UXやPalmの特許を持つ[43])、Cisco[44](IOSの特許を持つ)、レッドハット、Google、カノニカル(特にこの3社はFLOSSへの多数の貢献を行う企業として有名)[45]、フィリップス、NEC、ソニー、富士通ゼネラル、富士通などを含め数百の企業、団体、個人[46]が参加している。
2007年5月、マイクロソフトは「訴訟を起こすつもりはない」とするものの、Linuxカーネルに42件の特許侵害があると主張した[47]。一方リーナス・トーバルズはOSの基本理論が1960年代に成立したことを挙げ、「マイクロソフトの方が特許を侵害している可能性が高い」と主張し、侵害内容の提示を求めた[47]。
2007年10月、マイクロソフトは欧州連合でのマイクロソフト製品の競争法違反に関する裁判で敗訴した。
2009年2月にはマイクロソフトはTomTomのLinux製品が自社のFATファイルシステムに関する特許を侵害したとして提訴した(詳しくは記事"マイクロソフト対TomTom事件"を参照)。同年3月この裁判は和解に終わり、問題とされたLinuxのFATファイルシステムに関するコードはその後特許に抵触しない形に修正された[48]。また同年9月、OINはマイクロソフトが持っていたLinux関連特許22件をAllied Security Trust (AST) から買い取ったと発表した[49]。これらの特許はASTがマイクロソフトの非公開オークションにより手に入れたものである[50]。ASTはOIN同様特許訴訟を防衛することを目的としたパテントプールを形成する企業コンソーシアムであり、オラクル・モトローラ・HP・ベライゾン・コミュニケーションズ・シスコ・Google・エリクソンなどのメンバーで構成されている[51]。
2010年1月、マイクロソフトはティーボを特許侵害で提訴した。ティーボはLinuxを製品に利用しているが(記事"TiVo化"などを参照)このときマイクロソフトはLinuxに関しては法廷で取り上げなかった[52]。
富士ゼロックス(現:富士フイルムビジネスイノベーション)はLinux製品の特許についてマイクロソフトとクロスライセンス契約を結び[53]、メルコやアイ・オー・データ機器もマイクロソフトとLinux製品の特許に関する契約を結んでいる[54][55]。同種の特許防衛を事業とする企業コンソーシアム、RPX Corporationにはマイクロソフトと共にLinuxに関わる企業が多数参加している。
2010年、AppleがHTCを特許侵害で提訴した。侵害したとする特許の中にはOSレベルのものも含まれている[56]。この件でHTCはGoogle等のパートナー企業と協力を取りアップルへ反訴することを計画している[57]。また、同年4月、マイクロソフトはAndroidが特許侵害しているとして非難した[58]。マイクロソフトと協業関係であったHTCはこの件でマイクロソフトと特許契約を結んでいる[58]。同年4月、HPはパームを買収し、パームの持つ1500件の特許を引き継ぐこととなった[43]。アップルがパームを提訴しなかった理由はこれらの特許の存在があるとも噂されている[43]。なお、パームはBeのBeOSに関する知的財産を買収しているが、これらの特許は会社を分割した際にPalmSource(現ACCESS Systems)が引き継いでいるとみられる。
2010年4月、フリーソフトウェア財団 (FSF) は「ビルスキー対カッポス事件」 (Bilski v. Kappos) をテーマにソフトウェア特許の問題を描いたドキュメンタリー映画、Patent Absurdityを公開した[59]。この映画はソフトウェア特許支持者、反対者双方の意見を収録したドキュメンタリーである。