Linux 講座 / Linux とは?カーネル・ディストリビューション・オープンソースを理解する

厳密には、Linux はコンピューターのハードウェアとプログラムの間で資源を管理するカーネル(kernel)です。普段インストールして使う「Linux オペレーティングシステム」は、カーネルにコマンド、ライブラリ、インストール・更新ツールなどを組み合わせたディストリビューション(distribution)を指します。この違いを知ると、Ubuntu と Rocky Linux がどちらも Linux でありながら、管理方法が異なる理由を理解できます。

ディストリビューションの意味を理解したら、ディストリビューションの選択基準で利用する系統を検討し、仮想マシンのインストールと復旧準備を参考に実習環境を用意できます。

Linux はカーネルですか、オペレーティングシステムですか?

どちらの表現も使われますが、指す範囲が異なります。Linux カーネルはオペレーティングシステムの中核となるプログラムで、一般にいうLinux オペレーティングシステムは、カーネルを含めて実際に利用できるよう構成したシステム全体です。そのため、「Linux カーネルを更新する」ことと「Linux をインストールする」ことは同じ作業ではありません。

カーネルは実行中のプログラムに CPU 時間やメモリを割り当て、ファイルシステム、ネットワーク、デバイスドライバーを通してハードウェアを扱います。プログラムは記憶装置を直接制御する代わりに、カーネルが提供するインターフェースを利用します。Linux カーネル公式ドキュメントでも、カーネルそのものと、ユーザー空間のプログラムが利用するインターフェースを区別して説明しています。

一方、ファイルをコピーするコマンド、ウェブブラウザー、ウェブサーバー、グラフィカルな画面は、カーネルそのものではありません。これらのプログラムやライブラリはユーザー空間(user space)で動作し、必要に応じてカーネルの機能を使います。多くの Linux ディストリビューションには GNU プロジェクトのツールが含まれますが、すべてのユーザー空間のプログラムが GNU ソフトウェアというわけではありません。GNU と Linux の関係は、GNU プロジェクトの説明で詳しく確認できます。

Linux システムはどのような部分で構成されますか?

最初は次の三つの層に分けて考えると理解しやすくなります。これは概念を説明するための簡略化であり、実際のシステムには起動処理やさまざまな中間の構成要素もあります。

  1. ハードウェア:CPU、メモリ、記憶装置、ネットワーク機器などの実際の部品です。
  2. Linux カーネル:ハードウェア資源を管理し、プログラムが利用する共通機能を提供します。
  3. ユーザー空間:シェル、コマンド、システムサービス、ライブラリ、グラフィカル環境、アプリケーションが動作する領域です。

例えば、端末でファイルの内容を読むコマンドを実行すると、コマンドのプログラムはユーザー空間で動作し、ファイルを開く処理にはカーネルの機能を利用します。同じカーネルを使っていても、ユーザー空間に組み込むプログラムによって、サーバー向けとデスクトップ向けのシステムの使い方は変わります。

ディストリビューションは何を追加しますか?

Linux ディストリビューションは、Linux カーネルと複数のソフトウェアを選択・組み合わせ、インストール、設定、更新ができるよう提供するオペレーティングシステムです。通常、パッケージ管理ツールとソフトウェアリポジトリ、標準のシステムサービス、セキュリティ更新方針、ドキュメントなどが含まれます。Debian プロジェクトの紹介でも、ディストリビューションをカーネルだけではない、完成したオペレーティングシステムとして説明しています。

Ubuntu と Rocky Linux はどちらも Linux カーネルを基盤としますが、パッケージ形式、ソフトウェア管理ツール、標準設定、サポート方針が異なります。コマンドを学ぶときは、「Linux カーネルの機能」「多くのディストリビューションで使われるツール」「特定のディストリビューション向けの手順」を区別してください。どのディストリビューションを選ぶかは講座 02(ディストリビューションの選択基準)で扱います。ここでは、カーネルが同じでも、利用環境全体が同じとは限らないという点を押さえましょう。

オープンソースとはどのような意味ですか?

オープンソース(open source)は、単にソースコードを閲覧できることだけを意味しません。ライセンスで定められた条件に従って、コードの使用、変更、再配布が認められる必要があります。Open Source Initiative によるオープンソースの定義には、ソースコードの提供に加え、再配布や派生物を認めることなどの条件が含まれています。

オープンソースと「無料で提供されること」も区別してください。無料で入手できても変更・再配布の権利がなければ、それだけでオープンソースにはなりません。反対に、オープンソースのソフトウェアを有料で配布したり、技術サポートを販売したりすることもできます。また、ディストリビューション内のすべての構成要素が同じライセンスを使うとは限らず、すべてがオープンソースとも限りません。個々のプログラムの利用・変更・配布条件は、そのライセンスで確認します。

今使っているシステムでは何を確認できますか?

Linux をインストールしたコンピューターや仮想マシンがあれば、次のコマンドで実行中のカーネルのバージョンを確認できます。

uname -r

ディストリビューションの名前とバージョンは、通常、次のファイルで確認します。

cat /etc/os-release

出力内の PRETTY_NAME は読みやすいディストリビューション名、ID と VERSION_ID はディストリビューションの識別情報です。uname -r の結果とディストリビューションのバージョンは異なる対象のバージョンなので、数字が一致する必要はありません。一部の最小構成や特殊なシステムには、/etc/os-release が存在しない場合や、表示内容が異なる場合があります。

主要な概念を整理する

  • カーネル:ハードウェア資源を管理し、プログラムに共通機能を提供するオペレーティングシステムの中核です。
  • ユーザー空間:シェル、コマンド、サービス、アプリケーションが実行される領域です。
  • ディストリビューション:Linux カーネルとソフトウェアをまとめて、インストール・管理できるようにしたシステム全体です。
  • オープンソース:ライセンスに従ってソースコードの使用・変更・再配布が認められる開発・配布の方式です。

Linux の誕生と発展については、Linux の歴史:1991 年の趣味のプロジェクトから世界のインフラへで年表と主な転換点を確認できます。この記事では歴史よりも、現在の Linux システムの構成と用語の理解に重点を置いています。