組み込みLinux

組み込みLinux（くみこみリナックス、英: Embedded Linux）は、組み込みシステムに特化したLinuxカーネルやLinuxオペレーティングシステム、またはそれら搭載する組み込み機器を指す用語である。携帯電話や携帯情報端末、メディアプレイヤーなどの家電機器、ネットワーク機器、ファクトリーオートメーション装置、カーナビ、医療機器など様々な組み込みシステムにて利用されている。米VDC (Venture Development Corporation) の2008年における調査によると、Linux は18%の組み込みエンジニアが使用しているとされる。 デスクトップおよびサーバなどの汎用的なシステムと異なり、組み込みシステムではリソースが制限されており、例えばRAMや二次記憶装置の容量が小さい。組み込みLinuxを使った機器は、二次記憶装置としてハードディスクドライブの代わりにより小さいフラッシュメモリを使うことが多い。組み込みLinuxはアプリケーションや対象ハードウェアに必要な機能に特化されていることが多く、Linuxカーネルもそのアプリケーションに対し最適化し構成されている。最適化の具体的な例は、OSのリアルタイムオペレーティングシステム化などである。 一般的にLinuxは移植性にすぐれるシステムであると言われており、デスクトップコンピュータやサーバにあまり採用されていないコンピュータ・アーキテクチャにも移植されている。その中には組み込みシステムも含まれている。 組み込みシステムへのオペレーティングシステムの移植にはプロプライエタリなアセンブラやCコンパイラ、標準Cライブラリを利用するケースもあるが、それらと比較して、OS自体のソースコードを修正して再配布でき、ロイヤルティーやライセンス料が発生しないといったフリーソフトウェア/オープンソースソフトウェアとしての特徴だけではなく技術的な優位点もあり、使用メモリ量が比較的少なく（2MB以下のメモリで起動可能）、安定した動作、比較的サポートベースが大きい、などの利点がある。組み込みLinuxは、Linuxカーネルに少数のフリーソフトウェアを組み合わせたものである。標準Cライブラリにはglibcの代わりに、もっとリソース消費量の少ない dietlibc、uClibc、Newlibが採用される場合もある。 2006年05月、Linuxカーネル開発者のグレッグ・クロー＝ハートマンによりLinuxのドライバ開発キットがリリースされた。また、Linux Foundation（以前はOSDL）によって開発のトレーニング講座や無料のウェビナーが開かれている。 組み込みLinuxに使われるオープンソースのミドルウェアとしては、BusyBoxなどのオールインワンなものや、SambaやWebKit、FreeTypeなどのプロプライエタリな代替が少なくかつ重要なものも多い。また、MaemoやMoblin、Androidのようにミドルウェアの大部分をオープンソースで改めて開発するものや、Palm WebOSのようにミドルウェアの多数の部分にオープンソースソフトウェアを組み合わせて使うものもある。マルチメディアに関してはオープンソースで扱う場合、GStreamer経由でハードウェアデコーダとFFmpegをバックエンドにして使われることが多いが、AndroidにおいてはOpenCoreが使われている。 開発環境としてはEclipseか、商用製品が使われることが多い。Eclipseでは組み込みにおいて以下のプラグインが使われる。 Eclipse C/C++ Development Tooling (CDT) - EclipseでのCやC++の開発に必須 Target Management (RSE) Linux Tools Project - プロファイラや動的解析などの機能を統合 Tools for mobile Linux (TmL) EGit - バージョン管理システムの一つ、Gitの統合 Mylyn - バグトラッカの統合 また、EclipseにはMoblin Eclipse Plug-inやAndroid Development Tools (ADT) など特定のOSに特化したプラグインも存在する。 また、開発にはエミュレータのQemuや分散コンパイルの為のdistccやiceccなども使われる。 Gartnerのプレスリリースによると、2008年のLinuxのシェアは8.1%としている。AdMobのレポートによると、全世界のモバイルデバイスにおいてLinuxカーネルを採用しているOSであるAndroidとPalm WebOSを合わせたシェアは2009年8月時点で11%であり、2009年2月の2%と比べ9%伸びている。また、AdMobの2010年2月のレポートによると、スマートフォンにおけるAndroidのシェアは24%に達し、2位になったとしている。 日本では、NTTドコモの制定したMOAP(L)及びALPベースのFOMA端末用オペレータパックに使われている。 日本では、ネットワーク接続可能なハイエンド機種のテレビにはほぼLinuxが搭載されている。 ゲームコンソール（コンシューマーゲーム）において、Linuxが使われる例は少ない。 PS2においては、PS2 Linuxがハード込みで発売された。また、PlayStation BB UnitにはLinuxが使われている。PS3においてはLinuxがインストールできることを売りにしていたが、新型を出した際にオミットされた。また、旧型PS3においてもファームウェア更新によって無効化された。 近年ではスマートフォンのゲーム市場が活性化されており、Androidでのゲーム市場も急速に成長している。そのためXperia PlayやODROIDのようなAndroidを使った携帯ゲーム端末が出始めている。 その他、直接組み込みLinuxが使われているコンソールとしては、GP2X/GP2X WizやLeapFrog Didj、Pandora、EVO Smart Consoleなどがある。 以下は、組み込み機器に特化したLinuxカーネルの機能である。"CONFIG_*"という表記はカーネルコンフィグレーションであり、コンパイルする際に機能を有効化するための識別子となる。Linuxカーネルはモノリシックであるため、カーネルコンパイル時に必要とする機能を有効化する。 多くのCPUアーキテクチャやハードウェアプラットフォームで動作 MMU (メモリ管理ユニット)の無いCPUでも動作可能 (CONFIG_MMU=n) 少ない資源でも動作 XIP (Execute in place) 読み出し専用ファイルシステム (romfs、cramfsやSquashFSなど) サイズを削ることができる (Linux Tinyなど) シングルプロセッサに最適化可能 (CONFIG_SMP=n) メモリ内圧縮スワップによるメモリの有効活用 (ramzswap(compcache)) NAND型フラッシュメモリを直接使用可能 (JFFS2やUBIFS) タイトな用途にも使用可能 マウントの早いファイルシステム (YAFFS2など) ソフトリアルタイム (CONFIG_PREEMPT) ハードリアルタイム (CONFIG_PREEMPT_RT patch set) ユーザーアプリケーションのリソース制限 (rlimit, cgroupsなど) サンドボックス (seccomp) コンテナ (LXC) リブート不要なセキュリティパッチ (Ksplice) なお、AMP (非対称型マルチプロセッシング) にはまだ対応していない。RenesasとTIはそれぞれ異なったVirtioベースの仕組みを提案している。 ミドルウェアが豊富 POSIX互換であるためUNIX系のミドルウェアが使える TCPスタック、LANスタック、Wifiスタック、Bluetoothスタック、USBスタックなどの各種プロトコルスタックが揃っている 開発しやすい PC上である程度の開発が可能 Linuxカーネルはアーキテクチャー毎に開発されているのではなく、デスクトップ、サーバー、組み込み、メインフレームに関わりなく、共通のソースベースで開発されており、アーキテクチャー相互のソースレベルでの互換性は高い GCC、GNU Binutilsを利用してクロスビルドツール（クロスコンパイラ、クロスリンカなど）を用意することもでき、ビルドまではPC上ですべての開発が可能 カーネルがモジュール化されているため、再起動なくモジュールの開発が可能（ローダブル・カーネル・モジュール） NFSが使えるため、ファイル転送が容易 tftpbootが使えるため、カーネル切り替えが容易 gdbserverが使えるため、リモートデバッグが容易に可能 distccを使った分散コンパイルが容易に可能 機能が豊富、設定も柔軟（反面、複雑ともいえる） カーネルのコンパイルオプション(.config)には汎用OS向けのものも含まれる（共通のソースベースを利用しているため） カーネルのコンパイルオプション(.config)には組み込み向けの設定も多いが、その多くが何らかの資源や機能とのトレードオフであるため、知識が必要になる。 カーネル全体の状態の取得・動的な調整が可能 (/sys/以下, /proc/sys/ 以下, sysctlなどでチューニング可能) ネットワークバッファ プロセス毎の状態の取得・動的な調整が可能 (/proc/プロセス番号/ 以下, rlimitなど) メモリ逼迫時のOOMキラーによりkillされるプロセスの優先順位の設定 動作中のカーネルから別カーネルへ再起動をかけず瞬時に切り替え可能 (コールドブート機能。kexec) オープンソースである 自由に改良することができる（それぞれソフトウェアライセンスにより条件や義務が異なるが、少なくとも改変や再頒布に関してはロイヤルティー・フリーで自由に可能である） 世界中の企業・団体・個人・政府機関による持続的な開発が行われている 脆弱性も調べられているため、セキュリティが高い サポート企業・団体が複数ある 機能の開発を依頼できる所が多い 開発講座が多い 採用前に工数を見積もれる LinuxカーネルなどはGPLでライセンスされているため、機器の販売など配布を伴う場合はソースコードの開示が必要となる（しかし配布を伴わないケース、例えば「自組織内で私的に流用するのみ」ならばソースコードを一切開示する必要はない）。 ソースコードの提供によりOSSコミュニティにコードが還元され、ソフトウェアの機能向上につながり、結果として自社製品の機能強化につながる可能性もある。 採用事例が多く公開されている デバッグ/プロファイリングの仕組みが豊富 カーネルのロック依存性動的チェック (lockdep (CONFIG_LOCKDEP_SUPPORT。標準で有効)) カーネルのデバッグログの個別動的有効無効切り替え (ddebug (dynamic debug。CONFIG_DYNAMIC_DEBUG)) カーネル用のデバッガ (KDB, KGDB, KGTP(パッチ)) カーネルプローブ(kprobe, jprobes, SystemTap) ユーザー空間プローブ (uprobes (パッチ)) カーネル内イベントトレーサ (ftrace event tracer, kprobe-based event tracer, GDB tracepoint support(パッチ), trace-cmd, KernelShark) システムコールトレーサ (strace) プロセストレーサ (ptrace, utrace) 共有ライブラリトレーサ (ltrace) ユーザランド用デバッガ (GDB) プロファイリング (gcov (カーネルではGCOV_KERNEL), OProfile, perf tools) ロック競合のチェック (lock_stat, perf lock) 各種ベンチマーク (perf bench, ffsbなど) ハードウェアによって生まれるレイテンシの検出 (Hardware Latency Detector (rtパッチ)) モニタリング (top, htop, iotop, slabtop, xrestop, latencytop, powertop, apachetopなど) 動的カーネル内メモリ管理バグチェッカ (Kmemcheck, Kmemleak) 動的メモリ管理・スレッドバグチェッカ (Valgrind (UserModeLinux+パッチを使うことでカーネルのチェックも可能)) 静的解析 (Clang Static Analyzer, Smatch, Coccinelle) ロギング (MRTG, Nagios, Xymon, Zabbix, Hinemos, Cacti, Muninなど) リモート管理 (OpenSSH, adb, screen) クラッシュダンプ取得 リアルタイムな用途では、スループットよりもレイテンシが重要となることが多い。レイテンシを改善するためには、カーネルの設定変更・チューニングの他に、アプリケーション自身も最適化する必要がある。カーネルのレイテンシを測定するためにCyclictestなどのベンチマークや各種トレーサが使われる。Linuxにおけるリアルタイム全般の情報は Real-Time Linux Wiki にまとめられている。ELCヨーロッパ2008においてソニーのFrank Rowandによりターゲットへのレイテンシ最適化の実例がプレゼンテーションされている。また、同氏によってハードウェア/カーネルに付随するリアルタイムの不足点と改善案が提示されている。 かつてのLinuxカーネルはリアルタイム性能が悪かったため、高機能なLinuxカーネルをリアルタイム用途とともに使うために、Linuxカーネルよりも下にリアルタイム性能が高くリアルタイムタスクを実行可能な別のシンプルなカーネルが使われることが多かった。現在はMontaVista、レッドハットなどによりプリエンプション用のパッチセットRT PREEMPTが開発されLinuxカーネルのリアルタイム性能は大きく改善しているものの、他のカーネルとの組み合わせは現在も使われている。 また、Linuxカーネルにはバージョン2.0時点で導入された、アトミックな単一カーネルロックのBKL (Big Kernel Lock)が以前存在していたが、レイテンシ・スループットやスケーラビリティを大きく下げる原因となるため、現在はロックの細分化やロックレス・アルゴリズムへの置き換えなどによって、全てのBKLが削除されている。 現在、RT PREEMPTは"mainline"と呼ばれるリーナス・トーバルズ管理の主要カーネルツリーへのマージを目指している。標準やPREEMPTで有効になった機能の他にCONFIG_PREEMPT_RCUやthreadirqsなど多くの部分が既にマージされているが、まだマージされていないフィーチャーは残っている。 RTAI (Adeos+Linux) RTLinux (Realtime executive+Linux) Linux on ITRON (ITRON+Linux) T-Linux (T-Engine+Linux) L4-Linux (L4+Linux) Litron (TOPPERS/JSPカーネル+Linux) Wind River Real-Time Core for Linux (Real-Time Core+Linux) KURT-Linux ART-Linux 1997年より通商産業省工業技術院電子技術総合研究所（現:産業技術総合研究所）にて開発されている。2009年にLinux バージョン2.6用に更新したものがソースコード、バイナリ含め一般公開された。 Linuxの組み込み用途での使用を推進する業界団体がいくつか結成されている。 2000年7月に結成された Emblix は日本における組み込みLinuxの普及とその周辺技術の標準化を目的としている。プロセスをグループ化しCPUのリソースを制限するCABIが開発されたが、現在はプロセス集約機能cgroupsに取って代わられている。 2003年に結成された CE Linux Forum はLinuxカーネル本体に組み込み用機能を含めることを目的としている。2010年10月、メンバーの重複が多いことや活動目的の一致、組み込みLinuxに関わる企業や開発者の増加からLinux Foundationと合併し、従来の活動の継続の他、組み込みLinuxの開発プロセスを容易にするためにYocto Projectという技術ワークグループを開始した。 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などを追加したものである。 2010年に結成された Linaro は、六ヶ月毎に参加企業の各SoCに最適化されたツール・カーネル・ミドルウェアを提供することなどを目的とした非営利のイギリス企業である(設立時のメンバーはARM、サムスン電子、IBM、Freescale、ST-Ericsson、Texas Instruments)。 モトローラ: RAZR² V8, RAZR² V9, ROKR E2, ROKR E6, A780, E680, A910, A1200, U9, E8 (MontaVistaなどがベース) DROID, Motorola Milestone (Androidベース) など en:First International Computer: Neo 1973 (OpenMoko) Google: Android Dev Phone, Nexus One (Androidベース) パナソニックモバイルコミュニケーションズ: FOMA P702iD，P901iTV，P902iS，P903i, P901i (MOAP(L)ベース) P-02B (FOMA端末用オペレータパックベース) など NEC: FOMA N900iL, N901iC, N902iL, N902iL onefone, N902iX, N903i, N904i, N905i, N905iμ, N906i, N906iμ (MOAP(L)ベース) FOMA N601i, N702iS, N703iD, N703iμ, N704iμ, N705i, N705i, N706i, N706ie (MOAP(L)ベース) N-01A, N-02A, N-03A, N-04A, N-06A, N-07A, N-08A, N-09A (MOAP(L)ベース) N-01B, N-02B (FOMA端末用オペレータパックベース) SoftBank 820N, SoftBank 821N, SoftBank 830N, SoftBank 831N, SoftBank 840N, SoftBank 841N SoftBank 930N, SoftBank 931N, SoftBank 940N, SoftBank 001N など カシオ計算機: SoftBank 830CA, SoftBank 930CA HTC Nippon: HT-03A, X06HT(HTC Desire) (Androidベース) T-Mobile: T-Mobile G1 (Androidベース) Palm: Palm Pre, Palm Pixi (Palm WebOS) ノキア: N900 (Maemo) ソニー・エリクソン: SO705i, SO706i (MOAP(L)ベース) Xperia SO-01B (Androidベース) シャープ: IS01 (Androidベース) Emblaze Mobile: ELSE (ELSE INTUITIONベース) 東京工科大学&ネットツーコム: 工科大ケータイ 京セラ: Kyocera Zio M6000 Android (Androidベース) SMC Networks: SMC WSKP100 ノキア: Nokia 770 Internet Tablet, N810, N800 (Maemo) シャープ: Zaurus SL-B500, SL-C700 (Embedixベース) SL-C750, SL-C760, SL-C860 (OpenPDAベース) SL-C3000, SL-C1000, SL-C3100, SL-C3200 (Lineo uLinuxベース) NetWalker PC-Z1, PC-T1 (Ubuntuベース) ソニー: mylo パナソニック TH-36D30T, TH-32D30T, TY-S36D50, TY-S32D50, TY-S28D50, TH-36D60, TH-32D60, TH-32D55, TH-28D55 DMR-E700BD VIERA D-dock ブルーレイDIGA, ハイビジョンDIGA など 日立 Wooo 9000シリーズ, W50P-HR10000, W37L-HR9000など ソニー CoCoon Channel Server (MontaVistaベース) シャープ 東芝（現TVS REGZA） レグザ（Android TV搭載モデル除く） NEC AX10 People of Lava:Scandinavia (Androidベース) シャープ: ガリレオ (HG-01S, HG-02S) (axLinuxベース) 玄人志向: 玄箱 (EMモードはMontaVistaベース・他のOSをインストール可能) 玄柴 (Ubuntuベース・他のOSもインストール可能) ぷらっとホーム: OpenBlockS, OpenBlockS S, OpenBlockS R, OpenBlockS 266, OpenBlockS 600 マーベル: SheevaPlug, Plug Computer 3.0, GuruPlug (Ubuntuベース・他のOSもインストール可能) アイ・オー・データ機器: LANDISKシリーズ (Debian(など?)ベース) USL-5Pシリーズ BUFFALO: LinkStationシリーズ (MontaVista(など?)ベース) TeraStationシリーズ NETGEAR: ReadyNAS DUO, ReadyNAS NV+など (Debianベース) NTTコムウェア: L-BOX ソニー: HDR-SR7, HDR-CX12, HDR-CX500V ソニー: サイバーショット DSC-T100, DSC-T20, DSC-G1, DSC-G3, DSC-H7, DSC-W80, DSC-W80HDPR, DSC-W200, DSC-H3, DSC-H10, DSC-H50, DSC-T200, DSC-T70, DSC-T2, DSC-TX1, DSC-WX1, DSC-W110, DSC-W120, DSC-W170, DSC-W220, DSC-T900, DSC-T90, DSC-W270, DSC-HX1, DSC-W300, DSC-T300, DSC-T700, DSC-T77など オリンパス: ORPHIS HC5500シリーズ アルゴシステム: Algo Smart Panelシリーズ ソニー: VGF-CP1 NTT東日本: 光iフレーム (Androidベース) Camangi: Camangi WebStation (Androidベース) NEC: コミュニケーター (Androidベース) Amazon.com: Kindle バーンズ・アンド・ノーブル: Nook Skiff LLC: Skiff Reader Foxit: Foxit eSlick Neofonie GmbH: WePad バッファロー: AS-A100 (DD-WRTベース) WBR-B11, WBR-G54, WLA-G54, WLA-G54C, BLR-TX4S WLAH-G54, WLAH-A54G54 BHR-4RV, FS-G54, WBR2-B11, WBR2-G54, WHR2-A54G54, WHR2-G54, WHR2-G54V, WHR3-AG54, WLA2-G54, WLA2-G54C, WLI-TX4-G54HP, WLI2-TX1-AG54, WLI2-TX1-AMG54, WLI2-TX1-G54, WLI3-TX1-G54, WLI3-TX1-AMG54, WZR-G108, WZR-G54, WZR-HP-G54, WZR-RS-G54, WZR-RS-G54HP WER-A54G54, WER-AG54, WER-AM54G54, WER-AMG54, WHR-HP-AMPG WHR-G54S, WHR-HP-G54, WHR-AMG54, WHR-AM54G54, WLI3-TX1-G54 WLI3-TX1-AMG54, WLI-TX4-G54HP, WLI-TX4-AMG54, WRP-AMG54 WHR-G, WHR-G125 WHR-HP-G WZR-AMPG144NH, WZR-AMPG300NH, WZR-AG300NH WLI-TX4-AG300N WZR-AGL300NH WZR2-G300N WZR-HP-G300NH リンクシス: WRT54G プラネックスコミュニケーションズ: BRC-W14V, BRC-14V, BRC-W14VG, BRC-14VG, BRC-W14VG-BT, BRC-14VG-BT パナソニック: broadband terminal AVM GmbH: FRITZ!Box LASER5: L-Router ケンウッド: HD20GA7, HD30GA9, HD30GB9 ターボリナックス: wizpy (wizpy OS) ヤマハ: MOTIF XS, MOTIF-RACK XS (MontaVistaベース) KORG: OASYS ソニー: NV-XYZ 33, 55, 77など Jokerworks: ジョーカーレーサー R/C サーバー Parrot: AR.Drone - ラジコンヘリコプター 産業技術総合研究所ほか: HRP-2m Choromet, HRP-4C (ART Linux) 富士通: HOAP-1, HOAP-2, HOAP-3 (RT-Linux) 富士ソフト: PALRO (Ubuntu) 第一興商: デンモクの一部 DAM-DSII (MontaVistaベース) など Valve Corporation Steam Deck (SteamOS) フィリップス: LPC3180 LASER5: L-CardA, L-Card+, NPA1000, L-Board ACCESS (ACCESS Linux Platform) LynuxWorks (LynuxWorks Linux) MontaVistaソフトウェア (MontaVista Linux) TimeSys (TimeSys Linux) ウインドリバー・システムズ (Wind River Linux) コンカレント・コンピュータ (RedHawk Linux) アックス[要曖昧さ回避] (axLinuxなど) シリコンリナックス (シリコンリナックスOS) リネオソリューションズ (Lineo uLinux) アドソル日進 (BlueCat Linux) エニア (Enea Linux) Linux Driver Project - NDAありなしに関わらず無料でドライバ開発を行っている シャープビジネスコンピュータソフトウェア - シャープのガリレオシリーズのソフトウェアを作成 デバイスドライバーズ 日新システムズ NECラーニング イーエルティ ウェルビーン Qt Extended - モバイル機器向けアプリケーションプラットフォーム Openmoko - 携帯電話向けプラットフォーム MeeGo - Linux Foundationが統括する種々デバイス向けのプラットフォーム。現在はインテルとノキアが主導している。MaemoとMoblinを統合して作られた。 Maemo - ノキア主導のハンドヘルドコンピュータ向けプラットフォーム Hildon - Maemoのアプリケーションプラットフォーム Moblin - インテル主導のネットブックやモバイルインターネット端末向けプラットフォーム Tizen - LiMo Foundationの仕様をMeeGoに取り込み作られた、インテルとサムスン主導の携帯電話向けプラットフォーム。 MOAP(L) - NTTドコモ主導の携帯電話向けプラットフォーム Access Linux Platform - ACCESS主導の携帯電話向けプラットフォーム Hiker - Access Linux Platformのアプリケーションフレームワーク Palm WebOS - Palmの携帯電話プラットフォーム Mojo - Palm WebOSのアプリケーションプラットフォーム Android - Google主導の携帯電話・タブレット向けプラットフォーム Bada - Sumsung主導の携帯電話プラットフォーム Meltemi - Nokiaの低価格端末向けプラットフォーム Ubuntu MID Edition - Canonical主導のモバイルインターネット端末向けプラットフォーム OpenWrt - ルータ向けプラットフォーム DD-WRT - ルータ向けプラットフォーム OPIE - Qtopia (現Qt Extended)の派生 Familiar Linux - PDA向けディストリビューション JLime - ハンドヘルドコンピュータ向けディストリビューション GPE Palmtop Environment - PDA向けアプリケーションプラットフォーム OpenZaurus - ザウルス用の代替OS LiMo Platform - 携帯電話端末メーカーが主導の携帯電話向けプラットフォーム。Tizenプロジェクトに採用される。 組み込みLinuxに関わらず、元となるLinuxカーネルにまつわる特許、とりわけソフトウェア特許の問題がいくつか存在する。 Linuxカーネルではリード・コピー・アップデートを始めとしていくつかの特許で保護された技術が利用されている。これらの保護されている技術はパッチ寄稿者が特許権者である場合、Linuxや他のオープンソースプロジェクトで使うことを権利者が許可している場合が多い（このような特許で保護されたテクノロジーは多くは企業の従業員によるLinuxカーネルへの貢献によるものが多数を占めるため）。 2005年にはOpen Invention Network(OIN) が誕生し、Linuxや関連アプリケーションに対し自社保有の特許を行使しないことに同意しかつOINとライセンス契約を締結すれば、OINのライセンシーはOINが保有するLinux関連特許をロイヤリティフリーで使えることが保証されるようになった。これら特許にはSamba、Mono、Apacheなどが利用する特許も含まれる。現在OINにはライセンサーまたはライセンシーとしてIBM（メインフレームやAIXの著作権ならびに特許を持つ）、ノベル（UNIXの著作権ならびにUNIX System Vの特許を持つ）、オラクル（SunOS/Solarisの特許を持つ）、HP（HP-UXやPalmの特許を持つ）、Cisco（IOSの特許を持つ）、レッドハット、Google、カノニカル（特にこの3社はFLOSSへの多数の貢献を行う企業として有名）、フィリップス、NEC、ソニー、富士通ゼネラル、富士通などを含め数百の企業、団体、個人が参加している。 2007年5月、マイクロソフトは「訴訟を起こすつもりはない」とするものの、Linuxカーネルに42件の特許侵害があると主張した。一方リーナス・トーバルズはOSの基本理論が1960年代に成立したことを挙げ、「マイクロソフトの方が特許を侵害している可能性が高い」と主張し、侵害内容の提示を求めた。 2007年10月、マイクロソフトは欧州連合でのマイクロソフト製品の競争法違反に関する裁判で敗訴した。 2009年2月にはマイクロソフトはTomTomのLinux製品が自社のFATファイルシステムに関する特許を侵害したとして提訴した（詳しくは記事"マイクロソフト対TomTom事件"を参照）。同年3月この裁判は和解に終わり、問題とされたLinuxのFATファイルシステムに関するコードはその後特許に抵触しない形に修正された。また同年9月、OINはマイクロソフトが持っていたLinux関連特許22件をAllied Security Trust (AST) から買い取ったと発表した。これらの特許はASTがマイクロソフトの非公開オークションにより手に入れたものである。ASTはOIN同様特許訴訟を防衛することを目的としたパテントプールを形成する企業コンソーシアムであり、オラクル・モトローラ・HP・ベライゾン・コミュニケーションズ・シスコ・Google・エリクソンなどのメンバーで構成されている。 2010年1月、マイクロソフトはティーボを特許侵害で提訴した。ティーボはLinuxを製品に利用しているが（記事"TiVo化"などを参照）このときマイクロソフトはLinuxに関しては法廷で取り上げなかった。 富士ゼロックス（現:富士フイルムビジネスイノベーション）はLinux製品の特許についてマイクロソフトとクロスライセンス契約を結び、メルコやアイ・オー・データ機器もマイクロソフトとLinux製品の特許に関する契約を結んでいる。同種の特許防衛を事業とする企業コンソーシアム、RPX Corporationにはマイクロソフトと共にLinuxに関わる企業が多数参加している。 2010年、AppleがHTCを特許侵害で提訴した。侵害したとする特許の中にはOSレベルのものも含まれている。この件でHTCはGoogle等のパートナー企業と協力を取りアップルへ反訴することを計画している。また、同年4月、マイクロソフトはAndroidが特許侵害しているとして非難した。マイクロソフトと協業関係であったHTCはこの件でマイクロソフトと特許契約を結んでいる。同年4月、HPはパームを買収し、パームの持つ1500件の特許を引き継ぐこととなった。アップルがパームを提訴しなかった理由はこれらの特許の存在があるとも噂されている。なお、パームはBeのBeOSに関する知的財産を買収しているが、これらの特許は会社を分割した際にPalmSource（現ACCESS Systems）が引き継いでいるとみられる。 2010年4月、フリーソフトウェア財団 (FSF) は「ビルスキー対カッポス事件」 (Bilski v. Kappos) をテーマにソフトウェア特許の問題を描いたドキュメンタリー映画、Patent Absurdityを公開した。この映画はソフトウェア特許支持者、反対者双方の意見を収録したドキュメンタリーである。 ウィキメディア・コモンズには、組み込みLinuxに関連するカテゴリがあります。 OpenZaurus LiMo Foundation