1. はじめに
本記事では、インフラエンジニアにとって必須の技術であるLinuxについてご紹介します。Linuxとは、オープンソースのオペレーティングシステム(OS)です。私たちが普段使用しているデスクトップパソコンではWindowsやMacが主流であり、Linuxを使っている人は少数派です。しかし、商用サービスを支えるサーバにおいては、Linuxは圧倒的な存在感を示しています。実際、2024年のFortune Business Insightsのレポートによると、LinuxはグローバルなサーバOS市場において63.1%というトップシェアを誇り、2位のWindowsを大きく引き離しています。したがって、すでにWindowサーバなどの他のOSに習熟している方でなければ、まずはLinuxのスキルを身につけることをおすすめします。本記事を通じてLinuxの基礎を理解し、今後のキャリアに役立てていただければ幸いです。

出展:Server Operating System Market Volume, Share | Analysis, 2032
2. Linuxの誕生/発展
Linuxが現在のように圧倒的なシェアを誇るようになるまでの流れを、コンピュータの歴史を含めて説明します。
□1940年代
世界初の実用的なコンピュータ(電子計算機)は、1946年にアメリカで開発されたENIAC(Electronic Numerical Integrator and Calculator)とされています。これは、大砲の弾道計算などの軍事目的で開発されたコンピュータです。当時としては非常に高性能で、1秒間に約5,000回の演算が可能でした。しかし、「0」と「1」の信号を扱うために約18,000本の真空管が使用されており、故障が頻繁に発生したため信頼性には課題がありました。また、大量の電力を消費する点も問題とされていました。

出展:ENIAC – Wikipedia
□1950年代
真空管によるコンピュータの課題を解決するためにトランジスタが用いられるようになり、コンピュータの小型化と高性能化が進みました。1955年にはIBMが商用機として初のトランジスタ計算機「IBM 608」を発表し、1957年に市場へ初出荷されました。
また、1956年には世界初のオペレーティングシステム(OS)とされる「GM-NAA I/O」が開発されました。当時の大型コンピュータでは、1つのプログラムを実行するたびに、パンチカードの切り替えなどの手作業が必要であり、多くの時間を要していました。
パンチカード画像:

出展: FORTRAN Port-A-Punch card. Compiler directive “SQUEEZE” removed the alternating blank columns from the input. Godfrey Manning. – Punched card – Wikipedia
しかし、GM-NAA I/Oは、実行中のプログラムが終了すると次のプログラムを自動的に実行するバッチ処理を可能とし、入出力待ちの時間を短縮することができました。
さらに、1950年代後半にはFORTRAN(1957年)やCOBOL(1959年)など、さまざまなプログラミング言語が登場しました。
□1960年代
1964年にIBM社がSystem/360という大型メインフレームを発表し、記憶装置容量や計算能力が大幅に向上していきました。また、トランジスタに代わるIC(集積回路)が登場しました。
一方で、コンピュータの小型化が進み、ミニコンピュータと呼ばれる製品が誕生しました。1964年にDEC社が12bitのPDP-8の販売を開始しています。ミニコンピュータ向けの使い勝手の良い汎用OSを目指して、1969年にアメリカのAT&T社ベル研究所でUNIXが開発されました。
□1970年代
1971年、アセンブリで開発されたUNIXの初版が稼働しました。その後、1973年にアセンブラで開発されたUNIXがにC言語に変更されています。C言語によって移植性と汎用性を高められたUNIXは、UCバークレーなどの大学や研究機関に広がっていきました。
□1980年代
1983年、AT&T社は商用UNIXであるUNIX System Vをリリースしました。これはSolaris、AIX、HP-UXなど多くの商用UNIXの基盤となりました。また、カリフォルニア大学バークレー校によってBSD(Berkeley Software Distribution)UNIXの研究も進められ、ネットワーク機能の強化が図られました。BSD UNIXは、後のTCP/IPの普及に大きく貢献しました。
さらに、1981年にはIBM PC用OSとしてMS-DOSが、1984年にはApple Macintosh向けにMac OSが登場し、これによりパーソナルコンピュータの需要が急速に拡大していきました。
□1990年代
UNIXの開発が主流でしたが、UNIXは高価なコンピュータやワークステーション上で動作するため、個人が扱うには敷居が高いものでした。こうした背景の中、当時ヘルシンキ大学の学生であったフィンランド人のリーナス・トーバルズ氏がUNIX互換のOSを目指しスクラッチから個人的に開発を始めたのがLinuxの起源です。1991年にその開発がスタートして以降、Linuxはオープンソースのフリーソフトウェアとして世界中の多くの開発者の協力のもとで進化を続けています。現在では、Linuxの中核を成すLinuxカーネルのソースコードは、2,000万行を超えるほどの巨大なプログラムとなっています。
3. Linuxの機能概要
Linuxとは、オープンソースのOS(オペレーティングシステム)です。狭義には、「Linuxカーネル」と呼ばれる基本コンポーネントを指しますが、広義には、Linuxカーネルに加えて周辺ソフトウェアを組み合わせたOS全体を指します。一般的に「Linux」として認識されているのは、この広義の定義であり、Red Hat、Debian、Fedora などの「Linux ディストリビューション」として配布されています。

Linuxの主な機能について概要を記載します。各機能の詳細については別の記事に記載しますので、そちらご参照いただければと思います。

システムコール
システムコールとは、ユーザモード(非特権モード)で動作しているアプリケーションプログラムが、カーネルモード(特権モード)で動作しているLinuxカーネルに処理を依頼するための仕組みです。このような仕組みによって、ユーザプログラムが直接ハードウェアや他のプロセスに干渉することを防ぎ、システム全体の安定性やセキュリティを確保することができます。
プロセス管理
プロセス管理とは、実行中のプログラムであるプロセスに対して、どのプロセスが、いつ、どのくらいの時間CPUを使用できるかを決定する仕組みです。この仕組みは、Linuxカーネルのスケジューラによって実現されており、プロセスを定期的に切り替えることで、複数のプロセスを並行して動作させる(あるいは同時に動作しているように見せる)ことが可能になります。
メモリ管理
メモリ管理とは、限られた物理メモリを複数のプロセスに効率的かつ安全に割り当てるための管理機能です。Linuxでは、仮想メモリの仕組みを用いることで、各プロセスが独立したメモリ空間を持ち、他のプロセスのメモリにアクセスできないようにすることでセキュリティや安定性を高めています。また、物理メモリが不足した際には、一時的にディスク上のスワップ領域を利用することで、物理メモリ以上のメモリ容量を扱うことが可能になります。
デバイス管理
デバイス管理とは、コンピュータに接続されているハードウェア(デバイス)を、Linuxカーネルが識別し、適切に制御・利用できるようにする機能を指します。Linuxでは、通常のデータファイルと同様に、デバイスもファイルとして抽象化されます。このデバイス操作用のファイルは「デバイスファイル」と呼ばれ、これに対して入出力が行われると、デバイスドライバを介して物理デバイスへのアクセスが行われます。
ファイルシステム
ファイルシステムとは、ハードディスクやSSDに保存されているデータに対して、ファイルの作成、読み込み、書き込み、削除などの操作を安全かつ効率的に行うための仕組みが、ファイルシステムです。ハードディスクやSSDなどの物理デバイスとの通信は、ブロックデバイスドライバと呼ばれるカーネルモジュールが担っています。ブロックデバイスドライバを介することで、Linuxカーネルはハードウェアの違いを意識することなく、安全かつ効率的にブロック単位でのデータの読み書きを実現できます。
ネットワークスタック
ネットワークスタックとは、ネットワーク通信を実現するためのソフトウェアの階層構造であり、TCP/IPやUDPなどのプロトコルの処理を担います。カーネル内のネットワークスタックは、ネットワークデバイスドライバを通じて、スイッチやルータなどの物理ネットワーク機器とデータの送受信を行います。
4. Linuxの特徴
オープンソース
無料で使えるオープンソースであり、ソースコードが公開されている点が最大の特徴です。誰でも自由に利用・改変・再配布することが可能です。また、コミュニティ活動が活発に行われているので、情報を収集しやすいという利点があります。
安定性・安全性が高い
致命的なバグが少なく、セキュリティ・ホールなどの脆弱性に対する対処もすぐに対応されることから、安定性・安全性が高いOSと認識されています。長期間の運用でも安定稼働することが期待できます。
カスタマイズ性が高い
最小構成でインストールを行い、必要な機能だけを追加することが可能です。OSを軽量な構成にすることで、スペックの低いマシンでも効率的に動作させることができます。
5. さいごに
Linuxの歴史・機能概要・特徴について説明してきました。普段あたりまえのように使っているLinuxですが、意外と知らないことが多いと感じている人もいるかと思いますので、しっかりと基礎を身に着けることをお勧めします。Linuxの各機能についての詳細説明に関する記事も書いていこうと思いますので、引き続き読んでもらえると嬉しいです。最後まで読んでくれてありがとうござました。
6. 参考文献


コメント