組み込みLinux（くみこみリナックス、）は、組み込みシステムに特化したLinuxカーネルやLinuxオペレーティングシステム、またはそれら搭載する組み込み機器を指す用語である。携帯電話や携帯情報端末、メディアプレイヤーなどの家電機器、ネットワーク機器、ファクトリーオートメーション装置、カーナビ、医療機器など様々な組み込みシステムにて利用されている。米VDC (Venture Development Corporation) の2008年における調査によると、Linux は18%の組み込みエンジニアが使用しているとされる。

 通常のLinuxとの違い 
デスクトップおよびサーバなどの汎用的なシステムと異なり、組み込みシステムではリソースが制限されており、例えば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カーネルの組み込み向け機能 
以下は、組み込み機器に特化した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ベースの仕組みを提案している。

 他の組み込みOSとの比較 
 ミドルウェアが豊富
 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)