Linux
インストール済Linuxシステムの構成要素としては以下のようなものが挙げられる:
ブートローダ - GRUBなど。コンピュータの電源を入れたときに実行され、Linuxカーネルをメモリ上にロードする。
Linuxカーネル - オペレーティングシステムの中核。環境に合わせて、必要なカーネルモジュールも適宜ロードされる。
Initプログラム - Linuxカーネルによって起動されるプロセスであり、プロセスツリーの根となる。言い換えれば、すべてのプロセスの祖先はinitである。initは、システムサービスやログインプロンプトを起動する。
ソフトウェアライブラリ - 他のプロセスによって共有して使われるコード。実行可能形式としてELFフォーマットを使用しているLinuxシステムでは、動的リンカld-linux.soが共有ライブラリの利用を管理する。
プログラム - システムソフトウェア、コマンドシェルやウインドウ環境などのユーザインタフェースプログラム、その他のアプリケーションプログラムなど。
1991年に、当時フィンランドのヘルシンキ大学の学生であったリーナス・トーバルズはオペレーティングシステムに好奇心を抱くようになっていた。当時、近代的なOSを動作させる能力を持つ Intel 80386 CPU を搭載した32ビットPC/AT互換パーソナルコンピュータが登場していた。ワークステーションやミニコンピュータ等と比較すれば遥かに安価に入手できるものであったため、リーナス・トーバルズはこれを使ってUnix互換の機能を持つOSを動作させてみたいと考えていた。しかし商用Unixは高価であり、Unixを模して実装された安価なMINIXも教育用という仕様から機能が大幅に簡略化されていたり、教育目的での使用に制限されているという問題があり、いずれもリーナス・トーバルズの目的を果たすことは困難だった。このためリーナス・トーバルズは、既に使用していた自作のターミナルエミュレータを改造したり、ファイルシステムなどのUnix互換APIを実装したりして、独自のOSカーネルの開発を開始した。最終的にこれが現在のLinuxカーネルへと成長することとなった。
リーナス・トーバルズはLinuxカーネルの開発をMINIX上で開始し、MINIX上で動作するアプリケーションはLinux上でも使われていた。Linuxが十分に成熟すると、それ以降のLinuxの開発はLinux自身の上で行えるようになった。すべてのMINIXコンポーネントはGNUのプロダクトによって置き換えられていった。フリーで利用可能なGNUプロジェクトのコードを取り込んでいくことは、まだ未熟な段階にあったLinuxにとって好都合だった。