Linux(リナックス、他の読みは#「Linux」の読み方で後述)とは、狭義にはUnix系オペレーティングシステムカーネルであるLinuxカーネルを指し、広義にはそれをカーネルとして周辺を整備したシステム全体のことをいう(GNU/Linuxも参照)。
概要
Linuxは、狭義にはLinuxカーネル、広義にはそれをカーネルとして用いたオペレーティングシステムを指す。LinuxはUnix系(英:
Unix like、Unixライク)オペレーティングシステム (OS) の1つとされる。カタカナでは「リナックス」と表記されることが多い(「Linux」の読み方を参照)。Linuxは、スーパーコンピュータ、メインフレーム、サーバ、パーソナルコンピュータ、スマートフォン、組み込みシステム(携帯電話やテレビなど)など、幅広い種類のハードウェアで使用されている。Linuxカーネルは、最初PC/AT互換機で多く用いられていたIA-32向けに開発されたが、その後史上最も多くのハードウェアプラットフォーム向けにリリースされたOSとなった。カーネルについての詳細はLinuxカーネルの記事を参照。現在では特にサーバ、メインフレーム、スーパーコンピュータ用のOSとして首位を走っている。また、携帯電話、ネットワークルータ、テレビ、ハードディスクレコーダ、カーナビゲーションシステム、ゲーム機といった組み込みシステムでもよく使われている。スマートフォンやタブレット端末用プラットフォームAndroidはLinuxカーネルの上に構築されている。Linuxの開発は、フリーかつオープンソースなソフトウェアの共同開発として最も傑出した例のひとつである。Linuxカーネルのソースコードは無償で入手でき、GNU一般公衆利用許諾書のもとにおいて、非営利・営利に関わらず誰でも自由に使用・修正・頒布できる。Linuxは、世界中の開発者の知識を取り入れるという方法によって、あらゆる方面に利用できる幅広い機能と柔軟性を獲得し、数多くのユーザの協力によって問題を修正していくことで高い信頼性を獲得した。デスクトップやサーバ用のLinuxは、Linuxディストリビューションという形でパッケージ化されて配布されている。有名なLinuxディストリビューションとしては、Debian(とその派生であるUbuntu、Linux Mint)、Red Hat Linux(とその派生であるFedora、Red Hat Enterprise Linux、CentOS)、Mandriva Linux/Mageia、openSUSE、Arch Linuxなどがある。各Linuxディストリビューションは、Linuxカーネル、システムソフトウェア、ライブラリ等、巨大なコンパイル済のアプリケーション群を含んでいる。Linuxシステムは、スマートフォンのAndroid OS、家電製品、ゲーム機などの組み込みOSなどとして多用されており、消費者の身の回りの環境を支える存在になっている。デスクトップOSとしてLinuxを使用することは、かつては技術者や上級ユーザだけが行うことというイメージが強かった。しかし最近では、一般ユーザでも容易に使用できるデスクトップ環境が充実したり、非常に簡単にインストールできるディストリビューションが登場したり、各種ハードウェアへの対応や自動設定機能が大幅に向上するなどした結果、それまで縁遠いものとされてきた一般ユーザーの一部にも普及した。デスクトップ環境での使用を念頭に置いているディストリビューションは、典型的には X Window System を含んでおり、それに加えてGNOMEやKDEといったデスクトップ環境が付属している。非力なコンピュータでの使用を考えて、LXDEやXfceといった省リソースなデスクトップ環境を含んだディストリビューションもある。サーバでの利用を想定したディストリビューションなどでは、標準インストールからグラフィカルインタフェースをすべて排除しているものもある。更には、ユーザー自身がソースコードをビルドしてシステムを構成するLinux from Scratchというディストリビューションも存在する。また、Linuxは自由に再頒布できるので、独自のディストリビューションを作ることも自由である。ユーザ空間のシステムツールやライブラリの多くは、リチャード・ストールマンが1983年に立ち上げたGNUプロジェクトによって作られたものであるため、フリーソフトウェア財団 (FSF) はGNU/Linuxという名前を使うことを推奨している。今日ではLinuxの普及に伴い国際規格が策定されている。Linuxカーネルを使用し、Linux Standard Base (LSB) Core Specification (ISO/IEC 23360シリーズ) に準拠したOSが、OSとしてのLinuxであるとされている。2017年のLinux Foundationによる報告書は、99%のスーパーコンピュータ、90%のパブリッククラウド、82%のスマートフォン、62%の組み込み機器がLinuxで動作していると主張している 。
設計
Linuxベースのシステムは、モジュール式のUnix系オペレーティングシステムである。これは、Unixにおいて1970年代から80年代にかけて確立した原則による基本設計から生まれたものである。Linuxカーネルはモノリシックカーネルであり、カーネルは、プロセス管理、メモリ管理、デバイス管理、ネットワーク、ファイルシステムの提供などを行なっている。デバイスドライバは、システムの動作中にモジュールとしてロードするか、カーネルに直接組み込むことができる。カーネルとは別のプロジェクト群がカーネルと対話しており、システムの高水準な機能のほとんどはこれらによって提供されている。GNUが提供するユーザ空間のソフトウェア群は、Linuxシステムの重要な部分である。これらは、標準Cライブラリの最も一般的な実装(GNU Cライブラリ)、Unixシェル、Unixツールの多くを提供しており、オペレーティングシステムの基本的なタスクを実行している。ほとんどのグラフィカルユーザインタフェース (GUI) は、X Window Systemの上に構築されている。インストール済Linuxシステムの構成要素としては以下のようなものが挙げられる:ブートローダ - GRUBなど。コンピュータの電源を入れたときに実行され、Linuxカーネルをメモリ上にロードする。Linuxカーネル - オペレーティングシステムの中核。環境に合わせて、必要なカーネルモジュールも適宜ロードされる。
Init
プログラム - Linuxカーネルによって起動されるプロセスであり、プロセスツリーの根となる。言い換えれば、すべてのプロセスの祖先は
init
である。
init
は、システムサービスやログインプロンプトを起動する。ソフトウェアライブラリ - 他のプロセスによって共有して使われるコード。実行可能形式としてELFフォーマットを使用しているLinuxシステムでは、動的リンカ
ld-linux.so
が共有ライブラリの利用を管理する。プログラム - システムソフトウェア、コマンドシェルやウインドウ環境などのユーザインタフェースプログラム、その他のアプリケーションプログラムなど。
ユーザインタフェース
Linuxシステムのユーザインタフェース(シェルとも呼ばれる)は、コマンドラインインタフェース (CLI) とグラフィカルユーザインタフェース (GUI) のどちらか、またはハードウェアに搭載されているコントロール(これは組み込みシステムでよくみられる)である。デスクトップシステムではGUIが一般的だが、GUI環境でも端末エミュレータウインドウや仮想コンソールを通してCLIインタフェースを利用できる。Unixの標準的ツールを含むLinuxの低水準な構成要素のほとんどはCLIだけで使用できる。CLIは、自動化や繰り返し作業に適しており、非常にシンプルなプロセス間通信(パイプ)によるコマンドの連携もサポートしている。沢山のユーザインタフェースが存在するが、デスクトップシステムにおいて最も名の知られたユーザインタフェースとしては、デスクトップ環境のGNOME、KDE、Unity、Xfceが挙げられる。ほとんどのユーザインタフェースはX Window Systemの上に構築されている。他のGUIは Xウィンドウマネージャに分類されることがあり、その例としてFVWM、Enlightenment、Window Makerなどがある。これらは最小主義的なデスクトップ環境を提供する。ウンドウマネージャはウインドウの配置や外観をコントロールする手段を提供するとともに、X Window Systemとのやりとりを行う。GNOMEやKDEなどのデスクトップ環境はウインドウマネージャを標準で含んでいるが(例えば、GNOMEはMutter、KDEはKWin、XfceはXfwm)、他のウインドウマネージャも選択できる。
グラフィックス
Linuxのグラフィクスは、アプリケーションとディスプレイサーバ・カーネルモジュールが連携して描画を実現している。グラフィクスのアーキテクチャは幾度かの構成更新を重ねて、直接的・間接的な2D・3Dレンダリングをサポートしている。初期のLinuxのグラフィクスでは、アプリケーションはX11の基礎的な機能をXlibを通して利用していた。アプリケーションはXlib・Device-Independent X(DIX)・Device-Dependent X(DDM)・グラフィクスハードウェアの各ライブラリを経由して、間接的にグラフィクスハードウェアにアクセスする。Xlibはユーザースペースのライブラリ、DIXはX11のDDMラッパーライブラリ、DDMはX11のグラフィクスドライバとして振る舞う。Xlib・DIX・DDMを経由した構成ではハードウェアアクセラレーションは利用出来なかった。XFree86はルート権限でX Window Systemを実行することで、X WindowアプリケーションがXlibで2Dレンダリングを利用する際にハードウェアアクセラレーションを利用出来る機構を採用した。X Window Systemをルート権限で実行してハードウェアアクセラレーションを利用する機構は、その後のグラフィクスフレームワークで広く採用されることになった。また、XFree86はGLX APIを実装した
Utah GLXを取り込み、OpenGLアプリケーションがOpenGLライブラリで3Dレンダリングを利用する際にハードウェアアクセラレーションを利用出来る機構を採用した。2D・3Dレンダリングは全く異なるプログラミング技法であるため、XlibとOpenGLはそれぞれ分離した2D・3DグラフィクスドライバとしてXFree86に組み込まれた。同時期にLinuxカーネルは、カーネルレベルでグラフィクスハードウェアに直接アクセスするフレームバッファドライバを採用した。フレームバッファドライバはXFree86のXlib・OpenGLと同様に2D・3Dグラフィクスドライバとして利用可能である。ただし、Xlib・OpenGLとフレームバッファは互いに競合するレイヤーにあり、X Windowアプリケーションとフレームバッファアプリケーションはいずれか一方のみを排他的に利用する必要があった。また、XFree86の提供する機構はユーザースペースのライブラリが直接グラフィクスハードウェアにアクセスするため、セキュリティの観点で問題があった。Linuxカーネルはユーザースペースのライブラリが直接グラフィクスハードウェアにアクセスを不要にするため、
Direct Rendering Manager(DRM)を採用した。最初にOpenGLがDRMを経由するDirect Rendering Infrastructure(DRI)ドライバに切り替え、続いてXlib・フレームバッファがDRMを経由したレンダリングに切り替えた。これにより、従来のX Windowアプリケーションとフレームバッファアプリケーションの競合、XFree86ライブラのセキュリティ問題を解決している。ディスプレイサーバはX11 APIを実装したXFree86・X.Org Server、UbuntuのUnity用に開発されたMir、Android用のSurfaceFlingerなどがある。
-
-
-
-
相互運用性
Linuxベースのディストリビューションは、他のオペレーティングシステムやコンピューティング標準との相互運用性を念頭に置いて開発されている。Linuxカーネルを用いて構築されたOS環境は、一般にはUnix互換OSに分類される。ただし厳密にはUnixとして扱うのは適切ではない。Linuxシステムは、可能な限りPOSIX、SUS、国際標準化機構、米国国家規格協会などの標準を順守しようとしているが、現在までにPOSIX.1の認証を受けたディストリビューションは Linux-FT ただ一つである。POSIXの認定には少なくない時間と予算が必要であり、また認定はバージョン単位となるため、ほとんどのディストリビューションではこれらの制約によって見送らざるを得ない。しかし、LinuxをOSプラットホームとして普及させるためには、ディストリビューションに依存しない一定の基準が必要である。そこで、Linux Foundationを活動母体として、LinuxのOSプラットホームとしての仕様をLinux Standard Base (LSB) として制定した。Linux Standard Baseは、2006年には、ISO/IEC 23360シリーズとして国際規格として認定された。現在、主要な商用ディストリビューションは、The Open Groupにより、Linux Standard Baseに準拠していることが認証されている。なお、非商用ディストリビューションについては、Linux Standard Baseに準拠していても、時間や予算的な制約などによって、認証を受けていないものが多い。開発
他の有名な現代的OSとの主要な違いとして、Linuxカーネルおよびその他の構成要素がフリーかつオープンソースであることが挙げられる。そのようなOSはLinuxだけではないが、Linuxはその中でも突出して広く使われている。フリーかつオープンソースなライセンスの一部は、コピーレフトという原理に基づいている。コピーレフトはある種の相互関係と捉えられる。コピーレフトなライセンスで公開されているソフトウェアのソースコード片は自由に利用できるが、それを利用して作ったソフトウェアを一般に頒布する場合はそれ自身もコピーレフトなライセンスでソースコードを公開しなければならない。最も一般的なフリーソフトウェアライセンスのひとつである「GNU 一般公衆利用許諾書」(GNU GPL) はコピーレフトの一形態であり、LinuxカーネルやGNUプロジェクトの多くのコンポーネントのライセンスとして採用されている。Linuxディストリビューション(俗にディストロ (distro) と呼ばれる)は、システムソフトウェアおよびアプリケーションソフトウェアのパッケージ群およびそれらの構成を管理するプロジェクトである。Linuxディストリビューションは、ソフトウェアパッケージの集合(リポジトリと呼ばれる)をインターネット上で提供しており、ユーザはそれをネットワークを通じてダウンロードし、インストールできる。Linuxディストリビューション
Linuxのカーネル本体はソースコードとして単独で公開されており、他のプログラムによってバイナリへとコンパイルする必要がある。また、サーバやアプリケーション、ウィンドウシステムなどのアプリケーションプログラムを動作させるためには各種のライブラリが必要である。しかし、このような環境をゼロから構築して運用する作業は難解かつ非常に煩雑であり、Linuxを実用したいユーザーが逐一実行することは現実的でない。このため、Linuxディストリビューションがいくつも作られている。Linuxディストリビューションは、Linuxカーネル、ライブラリ、システムソフトウェア、アプリケーションソフトウェアなどをパッケージとしてまとめて、それをインターネットなどで頒布している(多くの場合、パッケージはコンパイル済のバイナリが収められている)。Linuxディストリビューションは、カーネルのデフォルト設定、システムセキュリティ、雑多なソフトウェアパッケージ群が協調して動作するようにするための調整、デフォルト設定ファイルの用意などもユーザに代って行なっている。これによりユーザは、システムの構築・運用に頭を悩ませることなく、手軽にLinuxシステムを使用できる。多くのLinuxディストリビューションでは、カーネル、ライブラリ、システムツール、コマンドラインシェル、コンパイラ、テキストエディタ、X Window System、ウィンドウマネージャ、デスクトップ環境、科学技術計算ツール、オフィスアプリケーション、画像処理ソフトウェアなど、何万ものアプリケーションパッケージを提供している。ユーザはその中から必要なパッケージをダウンロードすることで、自分の用途に合ったシステムを構築できる。ディストリビューションは通常、パッケージマネージャと呼ばれるソフトウェアを提供しており、アプリケーションやシステムソフトウェアのインストール・更新・削除をひとつのツール上で簡単に行えるようにしている。各ディストリビューションは、個人や、緩く結束した集団や、ボランティア団体や、営利企業によって管理されている。Linuxディストリビューションに含まれるソフトウェアパッケージの多くはフリーソフトウェアライセンスを採用している。フリーソフトウェアライセンスは、商業利用を明示的に許諾しており、さらにはそれを推奨している。多くのLinuxディストリビューションは無償で入手できるが、いくつかの大企業は商用版ディストリビューションを販売することで利益を得ている。これらのディストリビューションでは、(特にビジネスユーザ向けの)サポートサービスが提供されており、さらに、プロプライエタリなサポートパッケージや、大量のインストールを行ったり管理作業を簡略化するための管理者向けツールなどが含まれている。コミュニティ
各Linuxディストリビューションは、開発者およびユーザコミュニティによって駆動している。一部のベンダーは、ディストリビューションの開発と資金供給をボランティアベースで行っており、この有名な例としてはDebianがある。商業ディストリビューションのコミュニティ版を公開しているベンダーもある。この例としては、レッドハットのFedoraやノベルのopenSUSEがある。多くの都市や地域には、Linuxユーザー・グループ (LUG) として知られる地域団体がある。彼らはミーティングを開いて、講習会やデモンストレーション、技術サポート、新規ユーザへのOSのインストールなどを行なっている。多くのインターネットコミュニティも、Linuxユーザや開発者のサポートを提供している。ほとんどのディストリビューションがIRCのチャットルームやニュースグループを持っている。その他のサポート手段としてはインターネットフォーラムがある。Linux全般を扱うフォーラムもあるし、ディストリビューションが自身のフォーラムを運用していることもある。Linuxに焦点を当てた技術系ウェブサイトもいくつか存在する。Linuxの雑誌は、しばしば付録ディスクとしてソフトウェアやLinuxディストリビューションを含めている。商用版ディストリビューションを販売している企業などは、Linuxシステムのコンポーネント開発やフリーソフトウェアの開発にも貢献している。とあるLinuxカーネルの解析が示すところによると、2008年12月から2010年1月までに書かれたコードのうち75%は企業によって開発されたものであり、残りの18%がボランティア、7%が未分類となっている。これらの企業としては、デル、IBM、ヒューレット・パッカード、オラクル、サン・マイクロシステムズ、ノベル、ノキア、レッドハットなどがある。したがって、Linuxディストリビューション全体と個々のベンダのあいだには共生関係があると考えられるかもしれない。プログラミング
ほとんどのLinuxディストリビューションは、何十ものプログラミング言語をサポートしている。Linuxアプリケーションおよびオペレーティングシステムを開発するのに使われているツール群の多くはGNUツールチェーンというものの中にみられる。これには、GNUコンパイラコレクション (GCC) や GNU build system が含まれている。GCCは、C言語、C++、Ada、Java、Fortranのコンパイラを提供している。今後GCCを置きかえる可能性がある候補として、2003年に初公開されたLLVMプロジェクトがある。LLVMプロジェクトは、LLVM基盤のひとつの利用例として、C言語/C++/Objective-Cに対応した近代的なオープンソースコンパイラであるClangを提供している。プロプライエタリなLinux用コンパイラとしては、Intel C++ Compiler、Sun Studio、IBM XL C/C++ Compilerなどがある。ほとんどのディストリビューションは、Perl、Python、Ruby、PHPといった動的プログラミング言語もサポートしている。また、C# (Mono) 、Vala、Schemeといった言語もサポートしている。各種のJava仮想マシンやJava開発キットもLinuxで動作する。これにはオリジナルのJVM、IBMのJ2SE RE、その他のオープンソース実装が含まれる。GNOMEやKDEは良く知られたデスクトップ環境であり、アプリケーション開発のためのフレームワークを提供している。この2つのプロジェクトはそれぞれGObject/GTKとQtに基づいており、両者ともC言語/C++だけでなく、様々な言語用のバインディングが提供されている。Linuxでは、いくつもの統合開発環境 (IDE) も利用することができ、例えば、Anjuta、Eclipse、Geany、ActiveState Komodo、KDevelop、Lazarus、MonoDevelop、NetBeans、Qt Creator、Omni Studioなどがある。しかしながら、IDEを使わずに、テキストエディタやその他の個別のツールを組み合わせて開発を行う者も多い。利用状況
Linuxは非常に幅広く移植されているOSカーネルであり、Linuxカーネルは非常に多様な環境において多様な用途で使われている。コンピュータアーキテクチャの観点ではARMベースのiPAQからメインフレームのIBM System z10まで対応し、デバイスの観点では携帯電話からスーパーコンピュータまで対応する。デスクトップやサーバでの汎用に使われることを想定したディストリビューションだけでなく、特定の目的に特化したディストリビューションも存在する。それらの目的は例えば、特定のコンピュータ・アーキテクチャのサポート、組み込みシステム用、安定性の重視、セキュリティの重視、特定のユーザグループを想定、リアルタイム処理のサポートなどである。加えて、あえてフリーソフトウェアのみで構成したディストリビューションもある。300を越えるディストリビューションがプロジェクトを継続しているが、汎用のディストリビューションとして広く名が知られているものは十数個程度である。サーバ・メインフレーム・スーパーコンピュータ
Linuxディストリビューションは、サーバ用のオペレーティングシステムとして長年使われており、その領域においてすでに傑出している。2006年にNetcraftは、10社の最も信頼できるインターネットホスティング企業のうち8社がLinuxディストリビューションを使っていると報告した。2008年6月では、Linuxが5社、FreeBSDが3社、マイクロソフト社製品が2社だった。2010年では、Linuxが6社、FreeBSDが2社、マイクロソフト社製品が1社だった。Linuxディストリビューションは、俗にLAMPと呼ばれるサーバソフトウェアの組み合わせの基盤となっている。LAMPは、開発者のあいだで人気を博し、ウェブサイトのホスティングにおいて一般的な方法のひとつとなった。Linuxディストリビューションは、メインフレームの世界でも人気を増している。2009年にはIBMが、メインフレームベースの企業向けLinuxサーバを主に販売していくと報告した。Linuxディストリビューションはスーパーコンピュータ用のOSとしても一般的に使われている。2010年にはスーパーコンピュータの性能ランキングであるTOP500のリストのうち459システム (91.8%) がLinuxを使用していた。その後もLinuxディストリビューションを採用するシステムの割合は伸び続け、2017年11月のTOP500ではすべてのスーパーコンピュータで利用された。2008年には東京証券取引所の基幹システムのひとつ「派生売買システム」でLinuxが使われるようになった。 以降、東証ではシステムのLinux化が進められている。デスクトップ
ほとんどのLinuxディストリビューションはグラフィカルインタフェースを含んでおり、例えばGNOME (シェルとしてはGNOME Shell、Unity、Cinnamonなど) や KDE(Plasma) がある。デスクトップにおけるLinuxのパフォーマンスは論争を呼ぶ話題であった。2007年にはCon Kolivasが、サーバでのパフォーマンスばかりに注力するLinuxコミュニティを批判した。彼はデスクトップへの関心のなさに苛立ち、Linuxカーネルの開発をやめた。その後、Linuxのデスクトップ環境を改善するための大量の開発が開始された。多くの有名なアプリケーションは幅広いOSで動作する。例えば、Mozilla Firefox、LibreOffice、BlenderなどはLinuxを含む主要なOSで動作する。加えて、Linux用のアプリケーションとして最初に開発され、それが人気を得たために他のOS(WindowsやmacOSなど)に移植されたものもある。この例としてはGIMPやPidginなどが挙げられる。さらにLinuxをサポートするプロプライエタリなソフトウェアも増えてきている。ゲームをLinuxに移植した企業もある。有名なゲーム配信プラットフォームSteamもLinuxに対応した。アニメーションや視覚効果のスタジオではLinuxがよく使われているため、Maya、SoftimageShake、といったソフトウェアはLinux版が用意されている。フリーソフトウェア開発の共同作業の性質によって、世界中に分散したボランティアチームがソフトウェアの翻訳を行うことが可能になっている。このため、Linuxシステムは、費用対効果の問題で営利企業がOSをローカライズできないようなマイナーな言語にも対応していることがある。例えば、シンハラ語版のKnoppixは、Windows XPがシンハラ語に対応するかなり前から利用可能だった。ソフトウェアのインストールや削除は、典型的にはSynapticやPackageKit、YUMなどのパッケージマネージャを通して行う。多くのディストリビューションは何万ものソフトウェアパッケージを抱えているが、オフィシャルのリポジトリからソフトウェアを見つけられない場合は、非公式のリポジトリやコンパイル済パッケージを使ってソフトウェアをインストールすることもできる。もちろんソースコードを自分でコンパイルすることもできるが、これは概して初心者にとっては挑戦的な課題である。とはいえ、現代的なディストリビューションにおいて、ソースコードを自分でコンパイルしなければならない状況になることは少ない。1枚のCD-ROMメディアやUSBメモリからLinuxを起動できるLive CDやLive USBというものもある。Live CD/USBは、ハードディスクにシステムをインストールすることなしにOSを起動できるように作られている。一部のディストリビューションのインストール用メディアはLive CD/USBとしても動作するようになっており、ハードディスクにインストールする前にデスクトップ環境を試すことができる。特定の用途に特化した単機能のLinux Live CD/USBも存在する。例えば、ハードディスクのパーティションを編集するソフトウェアを搭載したGParted Live CD/USBがある。 -
-
-
-
スマートフォンなど
スマートフォンなどで利用されるモバイルOSのAndroid OSはLinuxカーネルを利用するOSの一つである。Androidは2022年12月時点での全世界のスマートフォン市場において 72.34%のシェアを占めている。他のLinuxカーネルを利用するモバイルOSとして、例えばKaiOSがある。KaiOSの2022年12月時点でのシェアは0.11%である。- モバイル機器での歴史
Linuxが動作している携帯電話やPDAは2007年頃から一般的になりだした。例えば、ノキア N810、オープンモコ社のNeo1973、モトローラ社のROKR E3などがある。このトレンドは続き、パーム社はLinuxベースのwebOSを開発した。これはPalm Preスマートフォンに使用された。組み込みシステム
Linuxは組み込み機器全般でよく使われている。有名なティーボ社のデジタルビデオレコーダにもLinuxが使用されている。Ciscoなどのネットワークルータ、日本メーカーの家庭用ルータやネットワークアタッチトストレージの多くでもLinuxが使われている。ソニーやシャープなどは、テレビやハードディスク・レコーダーなどのデジタル家電のOSとしてLinuxを使っている。電子音楽機器のOSとしても使われており、例えば、ヤマハ・MOTIFシリーズ、コルグ・OASYSなどが挙げられる。WholeHogIII consoleのような舞台照明制御システムでも使われている。高い可用性が求められる通信事業者のシステムのためにキャリアグレードLinuxというLinux仕様の要件もまとめられており、この仕様を満たしたいくつかの製品が販売されている。マイナーな環境でも動作するように特化されたディストリビューションもある。ELKSカーネルはIntel 8086や80286プロセッサで動作でき、Clinuxカーネルはメモリ管理ユニット (MMU) が存在しないシステムで動作できる。製造者が作ったOSしか動作させない想定で開発されたアーキテクチャ上でもLinuxは動作している。例えば、Mac(PowerPCおよびインテル製プロセッサ)、携帯情報端末、ゲーム機、ポータブルメディアプレーヤー、携帯電話などが挙げられる。フリーダムHECなど、いくつかの産業団体やハードウェアカンファレンスは、Linuxの多様なハードウェアサポートのための保守および改善に力を注いでいる。- Automotive Grade Linux
組み込み機器のうち、自動車については専用のプラットフォームとして「Automotive Grade Linux」が開発されている。シングルボードコンピュータ
シングルボードコンピュータのRaspberry Pi向けにRaspberry Pi 財団が公式に提供しているOSとしてRaspberry Pi OSがある。Raspberry Pi OSはLinuxディストリビューションの一つであるDebianを基にしたOSである。マーケットシェア
フリー/オープンソースソフトウェアに関する多くの定量的な調査は、マーケットシェアや信頼性を含むトピックに焦点を当てており、なかでも多くの研究がLinuxを調査の対象としている。Linuxのマーケットは急速に成長しており、2008年には、Linuxによるサーバ、デスクトップ、ソフトウェアの収益は357億円を越えると予測された。IDC社の2007年第1四半期の調査は、その時点でLinuxは全サーバの12.7%を占めていると示した。ただしこの数値は、様々な企業によってLinuxサーバとして販売されたマシンの台数だけに基づく推定であり、サーバハードウェアを購入したあとでLinuxをインストールしたものを考慮に入れていない。2008年9月には、マイクロソフト社のCEOスティーブバルマーが、ウェブサーバの60%はLinuxシステムであり、それに対してWindows Serverは40%であることを認めた。W3Schools.comのアクセス解析情報によると、Linuxのシェアは、2003年3月の時点で2.2%、その後ゆるやかに増加を続け、2015年1月の時点で5.5%である。アナリストや支持者たちは、Linuxが比較的成功した要因として、セキュリティや信頼性、低コスト、ベンダロックインからの自由を挙げている。Linuxは、映画業界でも何年ものあいだ選択肢のひとつとして使われてきた。Linuxサーバで初めて作られたメジャーフィルムは1997年のタイタニックである。それ以降、ドリームワークス・アニメーション、ピクサー・アニメーション・スタジオ、WETAデジタル、インダストリアル・ライト&マジックといった大スタジオがLinuxに移行している。The Linux Movies Groupによると、大規模なアニメーションスタジオおよび視覚効果スタジオの95%以上のサーバおよびデスクトップがLinuxを使用している。一般への受け入れ
家庭や企業におけるLinuxデスクトップの使用は成長を続けている。Linuxは各国の地方自治体や政府でも知名度を得ている。ブラジルの連邦政府はLinuxをサポートしていることで有名である。ロシア軍が独自のLinuxディストリビューションを作成していることが明るみに出たこともあり、これは「ゴースト」プロジェクトとして実を結んだ。インドのケーララ州は、すべての州立高校がコンピュータでLinuxを走らせることを命じている。中国は、技術的独立性を達成するために、自身の龍芯 (Loongson) プロセッサ用のOSとしてLinuxのみを使っている。スペインでは、いくつかの地域が独自のディストリビューションを作成しており、教育や公的機関でそれを使用している。ポルトガルは、独自のLinuxディストリビューションとしてCaixa Mágicaを持っており、Magalhãesネットブックや「eエスコラ」行政プログラムで使用されている。フランスやドイツもLinuxを取り入れる方向で歩を進めている。財団法人 コンピュータ教育開発センター(CEC)が、小中学校11校を対象にオープンソース・デスクトップ導入実験を行ったが、その際岡山県総社市で実施したアンケートで、小学生の90%以上がLinuxは簡単と答えている。2000年代後半、OLPCのXOラップトッププロジェクトは、新たなLinuxコミュニティを作ろうとし、発展途上国の何百万人もの学童とその家族にリーチすることを計画した。このプロジェクトの支持者には、Google、レッドハット、イーベイが含まれていた。後にGoogleが開発したChromebookはLinuxベースのChromeOSを搭載している。歴史
Linux 開発開始以前の OS
OSのはじまり
OS(オペレーティングシステム)と言う概念がコンピュータ技術として登場したのは1960年代であり、それまでは計算用であれば計算専用のコンピュータ、事務処理用であれば事務処理専用のコンピュータを構築するのが一般的だった。これはコストがかかる上に利益が小さくなるモデルだった。IBMはOSである基盤ソフトウェアを構築することで効率的にコンピュータを作り上げることを実現した。1964年発表のIBM System/360シリーズに搭載されたOS/360およびDOS/360が世界初の商用オペレーティングシステムとされる。Multics
米国MIT、ゼネラル・エレクトリック、AT&Tのベル研究所で、Multicsと言う名前のOSが作られた。多機能のOSだったが、機能を入れ過ぎようとしたため、商用システムとしての発売には至ったものの、期待したように普及はしなかった。この反省をふまえて、MulticsをもじったUNIXという名前のOSがベル研究所のケン・トンプソンらのチームによって作られた。AT&Tは、独占禁止法によってコンピュータ業界への参入を禁じられていたため、UNIXのソースコードは無償で公開されることになり、大学や研究機関に爆発的に広まった。Unix
UNIXの歴史は、米国AT&Tのベル研究所において1969年から始まる。1971年に初めて公開され、初期には当時の一般的なやり方としてアセンブリ言語のみで実装されていた。その後、Unixは1973年にC言語で書きなおされた。オペレーティングシステムを高級言語で記述するという先駆的な試みは、他のプラットフォームへの移植を容易にした。AT&Tは、反独占訴訟に対する1954年の同意判決によってコンピュータビジネスへの参入を禁じられており、なおかつこの同意判決では、電話以外の技術は「要求する者すべて」にライセンスを供与しなければならないと定められていた。開発者達はこれに素直に従って、求める者に対してUnixのソースコードを提供した。これによってUnixは即座に成長し、大学やビジネス界などで広く受けいれられることとなった。AT&Tの独占状態は1984年に解体され、ベル研究所はウェスタン・エレクトリックの傘下になった。これによって法的な制限がなくなったため、ベル研究所はUnixをプロプライエタリ製品として販売しはじめた。GNU
GNUプロジェクトは1983年にリチャード・ストールマンによって開始され、フリーソフトウェアのみによって「完全なUnix互換ソフトウェアシステム」を作り上げることをプロジェクトのゴールとしていた。作業は1984年より開始され、1985年にはストールマンがフリーソフトウェア財団を立ち上げ、1989年には GNU 一般公衆利用許諾書 (GNU GPL) を書いた。1990年代初頭までに、オペレーティングシステムに必要な多くのプログラム(ライブラリ、コンパイラ、テキストエディタ、Unixシェル、ウインドウシステム)が完成した。しかしながら低水準の要素 — デバイスドライバ、デーモン、カーネルといったものは頓挫しているか未完成であった。リーナス・トーバルズは、もし当時GNUカーネルが利用できたならば、自分はLinuxを作っていなかっただろうと発言している。BSD
1970年代後半から1980年代にかけて、カリフォルニア大学バークレー校のCSRGは派生版UnixであるBerkeley Software Distribution (BSD) を開発していたが、1984年にUnixがプロプライエタリに移行したため、これを自由に公開することができなくなっていた。以前のBSDからAT&Tからのライセンスが必要な部分を削り、必要な部分を書き直したものが4.3BSD Net/2である。さらに、これをベースに386で動かすために必要なコードを補って1992年にウィリアム・ジョリッツらがリリースしたのが386BSDであり、これがNetBSDやFreeBSDの祖先である。市場において、マルチプロセスやメモリ保護など、近代的なOSの実装が可能となる機能を搭載した安価な32ビットパーソナルコンピュータが普及しはじめ、Unixがパーソナルコンピュータで動くものとなる可能性があったことが、こうした広義のPC-UNIXの移植や開発をスタートさせた大きな要因であり、Linuxもまたそれらの現象のうちのひとつだった。リーナス・トーバルズは、当時386BSDが入手可能であったならば、自分はLinuxを作っていなかっただろうと発言している。MINIX
MINIXは、アンドリュー・タネンバウムによって開発されているUnix系OSで、当初はコンピュータ科学におけるオペレーティングシステムの教育という目的に重点を置いた設計であった。教育目的のため、企業のライセンスといったしがらみが無いよう新たに書かれたものであったが、初期にはコンパイルするためのコンパイラにプロプライエタリなものが必要であったり(GCCはまだ開発の初期だった)、教科書として広く配布するため商業出版を(当時は)必要とした関係などもありライセンスには制限があった。2000年からはそれ以前の版にも遡ってライセンスも自由なもの(BSDライセンス)となっている。バージョン3以降は「本格的」な使用のために再設計された。起源
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にとって好都合だった。さらに、リーナスは、商業製品の作成を禁じた独自のライセンスをやめて、GNU GPLへの切り替えを行なった。当初のLinuxの実装は極めて単純で、他の既存の自由でないUnixシステムのどれに対しても、その機能や実績において優位性はなかった。また当時、自由なソフトウェアによるUnix互換OSを開発しようとしていたGNUプロジェクトは自身のカーネル (GNU Hurd) を完成していなかった(2015年現在もなお開発途上である)。一方でライバルのBSDは1992年からUSLとの訴訟を抱えており、権利上の問題をクリアしたバージョンがリリースされたのはFreeBSDでは1994年11月だった。つまり、1990年代前半において、自由なUnix互換カーネルと呼べるようなもののうち、実用的で権利上の問題がないと考えられるのはLinuxのほかなかった。PCで動作するフリーで本格的でUnix系の環境を求める潜在的なユーザたちの多くは、当時は主に書籍として流通していた教育用OSのMINIXに流れていたが、リーナス・トーバルズはLinuxをMINIXのメーリングリスト上で公開し、GPLの下で利用可能にした。これはインテルの32ビットCPUを搭載したPCでしか動作しなかったが、当時はちょうど32ビットPC/ATパーソナルコンピュータの普及期であり、GPLによって誰もが改良可能だったことから、より多くの機能を求める開発者たちによる改良を促した。開発者たちはLinuxカーネルを育てていくとともに、GNUコンポーネントとLinuxを統合する作業を行い、最終的に実用的かつフリーなオペレーティングシステムを作り上げた。成長
Linuxカーネル・メーリングリスト (LKML) が登場し、改良に参加する有志はそこに集まることになった。PC-UNIXの隆盛など社会的な注目が高まる中、1997年ごろより商用目的への応用が注目され、ハイエンドシステムに必要な機能が付け加えられていった。ReiserFSやext3に代表されるジャーナリングファイルシステム、64ビットファイルアクセス、非同期ファイルアクセス、効率的なマルチプロセッサの利用などである。2000年頃より、IBM、ヒューレット・パッカード、シリコングラフィックス、インテルなどの企業にフルタイムで雇用されたプログラマも開発に加わるようになり、開発スピードにはずみが付いた。2007年、リナックスを一層発展させるためにLinux Foundationが発足した。この財団では先のIBMとインテルにくわえ、富士通とNEC も開発に参加している。このように、世界中の多くの人々の共同作業によってソフトウェアが開発されるのは、それまでのソフトウェア開発の常識では考えられないとされ、エリック・レイモンドは、Linuxの開発を分析し、「カテドラルとバザール」を著した。エリック・レイモンドはその中で、Linuxと対比してGNUプロジェクトを「カテドラル」(大聖堂、つまり宗教的ヒエラルキーの比喩)と述べた。2001年のある研究によると、当時の Red Hat Linux には3000万行のソースコードが含まれており、開発工数見積り手法COCOMOを用いて、これをアメリカ内で開発した場合のコストを推定した。その推定値は 14億6万米ドル(2013年)であった。システムの大半 (71%) のコードはC言語で書かれていたが、他の言語も多く使われていた。例えば、C++、Lisp、アセンブリ言語、Perl、Python、Fortran、そして各種のシェルスクリプトなどである。全コード中、半分をわずかに越える量のコードがGPLでライセンスされていた。Linuxカーネル自体は240万行で、これは合計の8%であった。その後の研究で、同じ解析が Debian GNU/Linux version 4.0 (etch)(2007年リリース)に対して行なわれた。このディストリビューションは2億8300万行のコードを含んでおり、従来の方法で開発していたならば3万6千人月が必要であり、80億4万ドル (2013年) が必要と推定された。カーネル開発の遍歴
最初のLinuxのリリースまでの開発はおよそ4カ月かけて行われた。Linuxのソースコードは肥大化を続ける傾向にあり、これを防ぐために古いコードやマイナーなデバイスドライバ用のコードを削除する活動が行われている。2012年のカーネル3.6からカーネル3.7への変更には、1271人、2016年のカーネル4.8から4.9への変更では1719人の開発者が参加している。現在の開発状況
リーナス・トーバルズはカーネル開発の指揮を続けている。ストールマンは、フリーソフトウェア財団を率いており、こちらはGNUコンポーネントのサポートをしている。個人や企業はサードパーティの非GNUなコンポーネントを開発している。これらのサードパーティ製コンポーネントは一連の巨大な作品群であり、カーネルモジュール、ユーザアプリケーション、ライブラリを含んでいる。各Linuxベンダやコミュニティは、カーネル、GNUコンポーネント、非GNUコンポーネント、パッケージ管理システムをLinuxディストリビューションの形に結合し、それを頒布している。名称・ライセンス・商標
名称
名前の由来
リーナス・トーバルズは、自分の作品を「freak」「free」「Unix」を合成して「Freax()」と呼ぼうと思っており、開発の初期の半年程の間は、彼はファイルを「Freax
」というディレクトリに保存していた。 「Linux」という名前も思いついたが、自己中心的すぎるとして当初は却下していた。1991年の9月、開発を促進するために、Linuxのファイルはヘルシンキ工科大学のFTPサーバ (ftp.funet.fi
) にアップロードされた。トーバルズの協力者であり、当時そのサーバの責任者であったレムケは、「Freax」という名前を良く思わず(「Freax」と語感が酷似している「Freaks」は英語で変人・奇人の意味を持つため)、彼はトーバルズに相談することなく、サーバ上のプロジェクトに勝手に「Linux」という名前をつけてしまった。その後トーバルズも、その名前に同意した。後付けではあるが「Linux Is Not UNIX」の略とも「Linux UNIX」の略ともされる。「Linux」の読み方
「Linux」という語の発音は公式に定められておらず、日本ではリナックスと読まれることが一般的であるが、そのほかに、リヌックス、ライナックスなどの読み方もある。英語圏では[ˈlɪnəks] ( 音声ファイル)、[ˈlɪnʊks]、[ˈlaɪnʌks]など様々な発音で読まれている。リーナス・トーバルズ本人は「どのように発音してもらっても構わない」と発言しているが、インターネット上に公開されている本人による英語の録音では[ˈlɪnʊks]()と発音されている。日本では各種の読み方が混在していたが、日本最初のLinux専門誌である『LINUX JAPAN』(五橋研究所、1998-2002年)が表紙をはじめとしてカタカナ表記に「リナックス」を採用し、他も同誌に追従した事から、この読み方が一般に広まった。しかし、日本Linux協会の登記名(商号。設立時にはまだラテン文字での表記ができなかった)は「日本リヌックス協会」である。GNU/Linux
「Linux」とは本来Linuxカーネルを指す語であり、カーネルとはその名の通りOSの核をなすものにすぎない。これを用いて実用的なオペレーティングシステムを構成するには、他の多数のソフトウェア(ライブラリやシステムソフトウェアなど)の助力を必要とする。また、何らかの処理を行なったり業務に使用する際には各種のアプリケーションソフトウェアが必要となる。GNUプロジェクトはこうしたソフトウェアをフリーソフトウェアとして開発・提供しており、実際にほとんどのLinuxディストリビューションはライブラリ環境(GNU Cライブラリなど)やツール環境(GNU Core Utilities等)をGNUのプロダクトに依存している。そのため、LinuxカーネルとGNUプロダクトを組み合わせてUnixと同等のシステムを構成している場合は「GNU/Linux」と呼ぶべきだと主張する者もいる。この主張の他の根拠としては、「GNU自身のプロダクトではないものの、Linuxカーネルを含め多くのソフトウェアがその使用に際してユーザーライセンスとしてGNUが提唱するパブリックライセンス(GPLやLGPL等)を採用していること」や「さらにこれらのソフトウェアの多くが事実上相互依存している点」などが挙げられている。(リチャード・ストールマン、またリーナス・トーバルズ自身もGNU/Linuxと呼称している。ただし、「Revolution OS」でのインタビューにおいてリーナス・トーバルズは「すべてのLinuxをGNU/Linuxと呼称するのはばかげている」と答えている。詳細はGNU/Linux名称論争を参照。ライセンス
LinuxおよびほとんどのGNUソフトウェアは、ライセンスとして GNU General Public License (GPL) を採用している。GPLでライセンスされていることにより、Linuxを再頒布する者はソースコード(加えた修正も含む)を同じ条項で入手可能にすることが要求される。他の主要コンポーネントの中には別のライセンスを使っているものもある。例えば、多くのライブラリはGNU Lesser General Public License (LGPL)(GPLよりも許諾的)を採用しており、X.orgはMITライセンスを採用している。リーナス・トーバルズは、LinuxカーネルのライセンスをGPLバージョン2からGPLバージョン3に移行しないつもりだと述べている。特に、ソフトウェアをデジタル著作権管理のために使うこと(TiVo化)を禁じたバージョン3の条項を嫌っている。商標
米国では、「Linux」という名前はリーナス・トーバルズが登録している商標である。初期は誰もこの名前を登録していなかったが、1994年8月15日に William R. Della croce, Jrが出願を行い、Linuxディストリビュータ達にロイヤリティを要求するということが起きた。1996年にリーナス・トーバルズといくつかの団体が、商標をリーナス・トーバルズに譲渡することを求めて彼を告訴し、1997年にこの問題は解決した。それ以降、商標のライセンス供与は Linux Mark Institute (LMI) によって処理されている。リーナス・トーバルズは、自分が商標を保有している目的は他人が勝手に使用するのを防ぐためだけだと述べている。LMIは、以前は「Linux」という名前を商標の一部として使用することに対してわずかなサブライセンス料を課していたが、のちにこれを変更し、無期限のサブライセンスを無償で提供している。日本では「トルヴアルドズ リヌス」(リーナス・トーバルズ)を商標権者として「リナックス / L i n u x」が商標登録されている(第4657506号)。称呼(参考情報)は「リナックス、ライナックス」、検索用文字商標称呼(参考情報)は「リナックス、LINUX」となっている。マスコット
LinuxカーネルVersion 2.x系列登場後のマスコットには、リーナス・トーバルズの嗜好を汲んで、タックス (Tux) と名付けられたペンギンのキャラクターが選ばれている。
また、Linuxカーネル Version 2.6.29限定のマスコットとして、タスマニアデビルのTuzが発表されている。