Linuxカーネルとは

コード行に囲まれたプログラマーの写真

執筆者

Mesh Flinders

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Linuxカーネルとは

Linux® カーネルは、多くのコンピューターシステムに不可欠な無料のオープンソースカーネルです。Linuxオペレーティングシステム(OS)では、Linuxカーネルがハードウェア層とソフトウェア層の間に重要なインターフェースを形成し、OSが多くの異なるコンポーネントを一度に管理できるようにします。

カーネルは、オペレーティングシステム(OS)の中核を形成し、システムを構成するハードウェアおよびソフトウェアコンポーネントを完全に制御するコンピュータープログラムです。カーネルは、システムを適切に機能させるために不可欠な重要なプロセス間の競合を防ぐのに役立ちます。カーネル コードはコンピュータのメモリに保持され、ソフトウェアとハードウェア間のすべての対話を可能にします。たとえば、入力/出力 (I/O)、CPU とキャッシュの使用率、デバイスの占有率、ファイル システム、ネットワーク ソケットなどです。

Linuxカーネルは、ユーザーがコンピューターと直接対話できるようになった最初のOSの1つであるUnixに代わる無料のOSとして、1991年にLinus Torvalds氏によって開発されました。それ以来、 Linuxカーネルとその後のカーネル バージョンおよびカーネル リリースは、 Linuxディストリビューションにとって重要なものになりました。現在、これらは世界最大級のテクノロジー、ソフトウェア、コンピューティング企業によって使用されています。

Linux カーネル・ディストリビューション

9~10週間ごとに、Linuxカーネルの新しいバージョンがリリースされます。これらのバージョンは「安定版カーネル」と呼ばれ、Linuxカーネル開発者やLinuxリポジトリのメンテナによって管理されており、kernel.orgやGitHubで入手可能です。

しかし、DebianやRed Hatなどの一部のベンダーは、カスタマイズされたソース ツリー、つまり自社プロジェクト用のすべてのLinuxカーネル ソース コードのコレクションを維持することを好みます。このアプローチは、 AIエッジコンピューティング 、 IoT(モノのインターネット) などの多くの最新のエンタープライズアプリケーションにおける Linux カーネルの使用に重大な影響を及ぼします。

例えば、Red Hat Enterprise Linuxは、オーダーメイドのセキュリティーと主要な機能を備えた安定した高性能なLinuxプラットフォームであり、Red Hat社がカスタマイズしたLinuxソースツリーを使用して構築されています。Debianは、ソース・ツリーを使用して、多くのIoT(モノのインターネット)アーキテクチャーの基礎となるオープンソース・コードであるUbuntuを保守しています。

LinuxカーネルとLinuxオペレーティング・システムの比較

カーネルは、ユーザーがコンピューターのハードウェアおよびソフトウェアと対話できるようにするシステムであるOSの心臓部として機能するコンピューター・プログラムです。Linux OS の場合、Linux カーネルは OS のコアコンポーネントを形成し、OS の機能を実行できるようにするコードです。

Linux OSは、Linuxカーネル以外にも、システム・ライブラリーやユーザー空間ユーティリティー、アプリケーションなど、さまざまなコンポーネントで構成されています。ただし、これらすべてのコンポーネントは、入力/出力 (I/O) などのコマンドを受信し、ユーザーの要求を満たすことができるように、OS と通信するためにLinuxカーネルに依存しています。Linux カーネルは柔軟性が高いことで知られており、ユーザーのニーズや特定のプログラムの要件に合わせて変更できます。

Linux カーネルのライフサイクル

各Linuxカーネルのリリースには、テストが行われ、一般に公開され、その後段階的に廃止されるライフサイクルがあります。Linuxカーネルのライフサイクルは、プリパッチ、メインライン、安定性レビュー、長期サポート(LTS)、サポート終了(EOL)の5つのフェーズに分けられます。

  • プリパッチ: Linux開発者は、カーネル・ソース・ツリーの主要な機能を実験します。
  • メインライン:厳格なテストと調整を通じて変更を安定させます。
  • レビュー: カーネルは、リリース前にメインライン段階で特定されたよりクリティカルな問題を修正するために追加のテストを受けます。
  • 長期サポート (LTS):一部のカーネルのみが LTS カーネルとして区別され、他のカーネルよりも長い期間 (通常は 2 年) にわたってメンテナンスされます。
  • サポート終了: LTSに選択されていないカーネルは、新しいカーネルがリリースされると、そのサポートが終了します。

 

The DX Leaders

AI活用のグローバル・トレンドや日本の市場動向を踏まえたDX、生成AIの最新情報を毎月お届けします。登録の際はIBMプライバシー・ステートメントをご覧ください。

ご登録いただきありがとうございます。

ニュースレターは日本語で配信されます。すべてのニュースレターに登録解除リンクがあります。サブスクリプションの管理や解除はこちらから。詳しくはIBMプライバシー・ステートメントをご覧ください。

Linuxカーネルのメリット

現在、Linuxは世界で最も広く使用されているオープンソース・オペレーティング・システムの1つです。これは主に、Linuxカーネルの柔軟性と有効性によるものです。Linux OS を強力なプラットフォームにする多くの管理機能と制御機能が提供されます。この機能には、 CPU (コンピュータ・システムのアクティブな頭脳) を強化する機能や、ネットワーク機能 (他のデバイスに接続してリソースや情報を共有する能力) が含まれます。Linuxカーネルが企業にもたらすメリットの最も広範なものは次のとおりです。

  • 抽象化:コンピュータ・サイエンスの用語で「抽象化」とは、デバイスとプログラム間のシームレスな相互作用を可能にするために、重要でない情報を省略することを意味します。Linuxカーネルは、基盤となるハードウェアを抽象化し、その重要でない詳細をOSから隠すことができるため、システムやソフトウェアがより効率的に機能するようになります。
  • カスタマイズ: Linuxカーネルは、さまざまなユーザーやさまざまな種類のOSの特定のニーズに合わせてカスタマイズできます。カスタマイズのプロセスでは通常、カーネル・ソース・コードを変更し、カスタム・カーネル・イメージ(特定の目的を満たすために調整されたカーネル)をコンパイルする必要があります。次に、特定のカーネル機能やカーネル・モジュール(特定の機能を追加または削除するためにカーネルにロードまたはアンロードされるコード)を、特定のコンピューティングのニーズに合わせて選択できます。高性能コンピューティング (HPC) 、エンタープライズ・アプリケーション、グラフィックス・プロセッシング・ユニット (GPU)などのタスクやデバイス向けに、人気のカーネル・モジュールが存在します。
  • コンテナ化:コンテナ化は、あらゆるコンピューティング環境で実行するために必要な OS ライブラリと依存関係だけを含むソフトウェア・コードをパッケージ化するもので、多くの最新のクラウド・ネイティブアプリケーションにとって重要です。Linux カーネルは、コンテナ化と、コンテナを可能にするDockerKubernetesなどの関連テクノロジーに不可欠です。DockerとKubernetesは、市場で最も人気のある2つのコンテナ化ツールで、調査済みの企業の94%がどちらか、あるいは両方を使用しています1。Docker はコンテナの作成と実行に使用され、Kubernetes はコンテナ化されたアプリケーションの管理とスケーリングを可能にするオープンソースのコンテナ・オーケストレーションプラットフォームです。
  • 仮想化: Linux カーネルは、「カーネルベースの仮想マシン (KVM)」の主要機能を使用して、単一の物理マシン上で仮想マシンを実行できます。VMが重要なのは、それがメモリー、CPU、ネットワーク・インターフェース、ストレージなどの単一の物理マシンのリソースを、単一のデバイス上でさまざまなオペレーティング・システムで使用できるようにするからです。このプロセスは基本的に、Linux システムをハイパーバイザー、つまりVM の管理と監視に使用されるツールに変換し、VM の管理に関して重要な機能を提供します。
AI Academy

ハイブリッドクラウドでAI対応を実現

IBMのエキスパートが主催するこのカリキュラムは、ビジネス・リーダーが成長を促進するAI投資に優先順位を付けるために必要な知識を習得できます。

Linuxカーネルはどのように機能しますか?

Linuxカーネルは、コア機能を実現する6つの異なる層、つまりサブシステムで構成されています。

  • システム・コールの実装(SCI)
  • プロセス管理
  • メモリー管理
  • 仮想メモリー
  • ネットワークスタック
  • デバイス・ドライバー

ここでは、それぞれとその機能について詳しく見ていきます。

SCI

SCI層には、カーネルがユーザー空間からカーネルにシステム・コールを実行できるようにする機能が備わっています。これは Linux カーネルの重要な機能です。ユーザー空間はアプリケーション・ソフトウェアとドライバーがワークロードを実行する場所であるのに対し、カーネル・スペースはクリティカルな OS 機能を実行するためだけに使用されるためです。SCI 層は、2 つの空間の間にブリッジを形成します。たとえば、Eメールの受信トレイを更新したり、モバイルバンキング・アプリケーションを開いたりといったリクエストが、システム・コールとしてユーザー空間から開始されると、システム・コールはカーネル層への切り替えをトリガーし、そのリクエストをOSに送信できるようにします。

プロセス管理

プロセス管理層により、Linuxカーネルは、ユーザーがコンピューターと対話できるようにするプロセスを実行できます。たとえば、Linuxを初めて起動するとき、Init(「初期化」の略)は、起動スクリプトを実行し、実行レベルを管理することによって、システムを使用可能な状態にします。各プロセスは、スレッド・コード、データ、スタック、CPUレジスターなど、プロセッサーの個別の仮想化を表します。

メモリ管理

コンピューターは、「ページ」と呼ばれるものを使用して仮想メモリを管理します。ページは、仮想メモリに依存するOSでデータを分類できる最小単位です。Linuxカーネルのメモリー管理層は、OS(ひいてはユーザー)がコンピューターの利用可能なメモリを管理できるようにします。仮想メモリは、すべてのプログラムとアプリケーションにとってクリティカルです。

仮想ファイルシステム (VFS)

Linuxカーネルの仮想ファイル・システム(VFS)は、ファイル・システム用の共通インターフェースを提供します。VFSは、SCIとカーネルでサポートされているファイル・システムの間の切り替えレイヤーとして動作し、多くのクリティカルな機能(オープン、クローズ、読み取り、書き込みなど)を可能にします。

ファイル・システムの抽象化(言い換えれば、ファイル、ディレクトリー、ファイル・システムがユーザーに表示される方法)は、VFSレイヤーのもう1つの重要なコンポーネントで、ユーザーが理解しやすい代表的な方法でコンピューティング・システムの複雑さを示すのに役立ちます。

ネットワーク・スタック

「ノード」とも呼ばれるネットワーク上のすべてのコンピューターは、データを共有および受信するための厳格なルール・セットであるネットワーク・プロトコルに従う必要があります。これらのプロトコルは、Android電話とMacコンピューターなど、互換性のないデバイスが同じネットワークを使用できるようにするために重要です。

この種の通信を促進するために、ネットワーク・プロトコルは、2つの異なるネットワーク間の通信を促進するハードウェア・デバイス(ルーターなど)であるゲートウェイに依存しています。Linuxカーネルのネットワーク・スタックは、レート・コンバージョンやプロトコル・トランスレーターなど、多くの一般的なゲートウェイ・デバイスを使用して、互換性のないデバイス間のインターネット通信を可能にしています。

デバイス・ドライバー

デバイス・ドライバーは、外部キーボードやドライブ、マウス、プリンターなどの特定のデバイスが機能できるようにするソフトウェア・インターフェースをOSに提供します。Linuxカーネルのソースコードの大部分は、特定のデバイスに固有のドライバーに含まれるコードで構成されています。

Linuxソースツリーは、Linuxカーネルとデバイスドライバーのすべてのソースコードを含むディレクトリであり、サポートされているさまざまなデバイスとその接続(Bluetoothやシリアルポートなど)に分割されています。デバイス・ドライバーは、個々のデバイスまたはデバイスのクラスに与えられたコマンドを認識し、これらのコマンドを含むI/O要求を作成し、デバイスがユーザーの意図した方法で動作するようにします。

Linuxカーネルのユースケース

さまざまな業種・業務が、Linuxカーネルと、Linuxカーネルが提供するさまざまな機能を利用して、従業員のイノベーションを維持し、顧客が信頼するプログラム、アプリケーション、サービスを提供しています。ここでは、Linuxカーネルの最も一般的なエンタープライズ・ユースケースをいくつか紹介します。

コンピューター・ネットワーキング

Linuxカーネルを使用すると、デバイスの互換性に関係なく、Wi-Fi、イーサネット、またはその他の接続タイプを介して、コンピューターとコンピューティング・デバイスを安全に接続できます。この機能により、イントラネットの使用や、 SaaS (Software as a Service)製品の迅速かつ効率的な配信など、クリティカルな知識とリソースの共有が可能になります。

Linux カーネルには、コンピューター、プログラム、アプリケーション、およびそれらが実行されるネットワークに危害を与える可能性のあるサイバー脅威からユーザーとオペレーティング・システムを保護するのに役立つ強力なセキュリティ機能が備わっています。これらの脅威には、 ランサムウェア 、ルートキット、ワームなど、さまざまな種類の マルウェアが含まれます。Linux カーネルの脆弱性を狙ったこうした脅威は、修正プログラムなどのパッチを頻繁に適用することで対処され、システムとその上で実行されるプログラムのセキュリティが確保されます。

リソースの最適化

企業の89%がデジタル・トランスフォーメーションの取り組みを実施しており2、デジタル・トランスフォーメーション専用のコンピューティング・リソースの最適化は、ほとんどのビジネス戦略の不可欠な要素となっています。

Linuxカーネルは、企業がサーバーやデータベース、最先端のアプリケーション・ソフトウェアなど、最も貴重なコンピューティング・リソースのニーズのバランスを取るのに役立ち、カーネル・チューニングと呼ばれるプロセスを通じて、システムとネットワークがピークレベルでパフォーマンスしていることを確信できるようにします。

カーネル・チューニングとは、Linuxカーネルの設定を微妙に調整することで、ネットワーク、メモリー、プロセス・スケジューリング、ファイル・システムといった特定のLinuxカーネル・サブシステム全体の性能を向上させることです。たとえば、ファイル・システムの場合、ビデオ・ゲーム、金融取引アプリ、ソーシャル・メディア・サイトなどの多くのデータ集約型アプリケーションをピークレベルで実行するためには、ファイル・システム・パラメーターのチューニングが必要になります。LinuxのVFSであるprocファイルシステムは、カーネルの内部データ構造間のインターフェースを介してシステムに関するデータを取得し、カーネル・パラメーターを調整してアプリケーションの性能を最適化できるようにします。

デバイス管理

今日、最も成功している企業は、成長するために、従業員にノートPCやモバイル・デバイスなどの最先端のテクノロジーを備えさせる必要があります。Linuxカーネルを使用すると、さまざまな場所にいる何千人もの従業員がさまざまな種類のデバイスを使用してシームレスに連携できるようにサポートするプログラムとネットワークが可能になります。カーネルにより、ハードウェア・デバイスは、カーネルにロードできる特定のデバイス・モジュールを使用して対話できるため、OSで管理できます。

一般的なLinuxデバイス管理プロセスの1つは、中断として知られています。Interrupt は、特定のオペレーションが必要ないときに Linux カーネルがデバイスとアプリケーション間の通信を停止できるようにすることで、コンピューティング リソースを節約するのに役立ちます。もう1つは、OSへのデバイスの追加と削除を管理し、各デバイスがディレクトリ内にどのように表示されるかを制御するLinuxデバイス管理ツール、udevです。

クラウド・コンピューティング

クラウド・コンピューティングは、インターネットを介してコンピューティング・リソースをオンデマンドで提供するもので、多くの現代の企業にとって不可欠なツールとなっており、イノベーションを促進し、迅速かつスケーラブルな方法で顧客にソリューションを提供するのに役立っています。

Linuxカーネルはクリティカルな方法でクラウド・コンピューティングを可能にし、Amazon(AWS)、Microsoft Azure、Oracle、Googleクラウドなど、世界最大級のクラウド・プロバイダーにおいて不可欠なコンポーネントとなっています。

カーネルの拡張性により、参考情報を大幅に増やすことなく、スーパーコンピュータデータセンターなどの大規模なコンピュータ・システムをサポートできます。これは、クラウド・アーキテクチャに不可欠な機能です。Linuxカーネルは安定性が高く、ダウンタイムが比較的短いため、クラウドのワークロードにも最適です。最後に、Linuxカーネルは汎用性が高く、さまざまな種類のハードウェアで動作できます。これは、現代のクラウドの中核をなす仮想化環境における重要な機能です。

脚注

1. 2024年のトップ5コンテナ化テクノロジー(リンクはibm.com外部にあります)6Sense、2024年

2.デジタル・トランスフォーメーションの価値ibm.com外部へのリンク)ハーバード・ビジネス・レビュー、2023年7月31日

関連ソリューション
IBM Cloud Infrastructure Center 

IBM Cloud Infrastructure Centerは、IBM zSystemsおよびIBM LinuxONE上のプライベートクラウドのインフラストラクチャーを管理するためのOpenStack互換ソフトウェア・プラットフォームです。

Cloud Infrastructure Centerの詳細はこちら
ITインフラストラクチャー・ソリューション

企業のハイブリッドクラウドとAI戦略のために設計された、サーバー、ストレージ、ソフトウェアを紹介します。

ITインフラストラクチャー・ソリューションはこちら
クラウド・ソリューション

安全性と柔軟性を備えたクラウドで、ビジネスの成長に合わせてリソースを無理なく拡張できます。

クラウド・ソリューション
詳細情報はこちら

IBMのハイブリッドクラウドとAI対応ソリューションで、企業インフラを変革しましょう。ビジネスを保護、拡張、モダナイズするために設計されたサーバー、ストレージ、ソフトウェアを発見したり、専門家のインサイトにアクセスして生成AIストラテジーを強化したりできます。

ITインフラストラクチャー・ソリューションはこちら 電子書籍を読む