「Linuxの簡単な歴史」
日本語で、以下の内容を自然な言葉で言い換えるとすると、一つの選択肢が必要です。
イントロダクション
一般的に、「Linux」という言葉は、Linuxカーネルを中心に構築された一群のオペレーティングシステムディストリビューションを指すことがあります。しかし、厳密な意味では、Linuxはカーネルそのものの存在を指します。完全なオペレーティングシステムを構築するために、LinuxディストリビューションにはしばしばGNUプロジェクトや他のソースからのツールやライブラリが含まれています。最近、より多くの開発者がLinuxを使用してモバイルアプリケーションの開発や実行を行っています。また、LinuxはChromebookなどの手頃なデバイスの開発においても重要な役割を果たしており、これらのデバイスはカーネル上で動作するオペレーティングシステムを実行します。クラウドコンピューティングやサーバー環境全般では、Linuxはいくつかの実用的な理由から人気の選択肢です。
- Its distributions remain current and supported by communities of other developers.
- It can run on a wide range of hardware and will install alongside pre-existing systems (a helpful trait in local development environments).
- It supports centralized software installation from pre-existing repositories.
- Its resource requirements are low.
- It is often top of mind when developers are building application ecosystems and tooling for servers, leading to high levels of compatibility.
- It sustains necessary modifications to operating system behaviors.
Linuxはまた、フリーでオープンソースのソフトウェア運動と関連があるため、一部の開発者は倫理的な理由と実用的な理由の組み合わせのためにそれを選びます。
- For some developers, using Linux represents a commitment to accessibility and freedom of expression.
- The Linux community is also a draw for some developers: when they have questions, they can consult the resources produced by this community or reach out directly to one of many active maintainers.
開発者コミュニティ(およびその他)におけるLinuxの役割を理解するために、この記事ではUnixを経由したLinuxの簡単な歴史を概説し、いくつかの人気のあるLinuxディストリビューションについて議論します。
Unixの起源
Linuxは、UNIXとMulticsという2つのプロジェクトに起源を持ちます。これらのプロジェクトは、堅牢なマルチユーザーオペレーティングシステムの開発を目指していました。
Unixの始まり
ユニックスは、ベル研究所のコンピュータ科学研究センターで行われていたマルティクスプロジェクトの進化から生まれました。ベル研究所や他の場所でマルティクスに取り組んでいた開発者たちは、マルチユーザーのオペレーティングシステムを構築することに興味を持ち、シングルレベルのストレージ、動的リンキング(実行中のプロセスが別のセグメントをアドレス空間に追加することを要求でき、そのセグメントのコードを実行することができるようになる)、および階層型のファイルシステムを実現することに関心を持っていました。
ベル研究所は1969年にMulticsプロジェクトの資金提供を停止しましたが、ケン・トンプソンとデニス・リッチーを含む研究者グループはプロジェクトの中核原則に基づいた開発を続けました。その後、1972年から1973年にかけて、彼らはシステムをC言語で書き直すことを決定しました。これにより、Unixは他の当時のオペレーティングシステムとは異なり、ハードウェアから移動したり、そのハードウェアの寿命を超えたりできるようになりました。
ベル研究所(後のAT&T)における研究開発は続き、Unix System LaboratoriesはSun Microsystemsと提携し、商業Unixベンダーに広く採用されることになるUnixのバージョンを開発しました。一方、学術界でも研究が継続され、特にカリフォルニア大学バークレイ校のComputer Systems Research GroupがBerkeley Software Distribution(BSD)を生み出しました。このグループによって開発されたBSDは、現在でも多くのオペレーティングシステムの基盤となりました。歴史的に注目される2つのBSDディストリビューションとしては、NeXTが先駆けとなったオペレーティングシステムであるNeXTStep(macOSを含む他の製品の基礎となりました)と、Linus TorvaldsがLinuxを開発する際の比較的な基盤となった教育用オペレーティングシステムであるMINIXがあります。
Unixの主な特徴
Unixは明瞭さ、移植性、および同時性の原則に基づいています。
- Clarity: Unix’s modular design allows functions to run in a limited and defined way. Its file system is unified and hierarchical, which simplifies the manipulation of data. Unlike some of its predecessors, Unix implements hundreds (rather than thousands) of system calls, each of which is designed to be straightforward and clear in goal.
- Portability: By writing Unix in C, the group at Bell Labs positioned Unix for wide-scale use and adoption. C was designed to have low-level access to memory, minimal run-time support, and an efficient relationship between language and machine instructions. A basis in C means Unix is adaptable and easy to run on a variety of hardware.
- Simultaneity: The Unix kernel is tailored toward the goal (shared by the Multics project) of sustaining multiple users and workflows. Kernel space remains distinct from user space in Unix, which allows multiple applications to run at the same time.
Linuxの進化
Unixが開発者に重要な問題を提起した一方で、最初のバージョンではプロプライエタリのままでした。その後の歴史では、開発者がUnix内で作業しながら、それに対抗して自由でオープンソースの代替案を作り出すという物語が展開されます。
オープンソースの実験
リチャード・ストールマンは、ユニックスの非所有の代替手段を開発するためにインスピレーションを受けた開発者たちの中心的な人物でした。MITの人工知能研究所で働いていた彼は、GNUプロジェクト(GNU’s not Unix!の再帰的な略)の作業を開始しました。そして1984年に研究所を去り、GNUのコンポーネントを自由なソフトウェアとして配布することができるようにしました。GNU HURDとして知られるGNUカーネルは、1985年に設立されたフリーソフトウェア財団(FSF)の焦点となり、現在はストールマンがその財団を率いています。
その間、別の開発者、フィンランドの大学生リーナス・トーバルツがUnixの無料の代替案を作業中でした。トーバルツはMINIXのライセンスにイライラしており、1991年8月25日にMINIXユーザーグループに自身のオペレーティングシステムの開発を発表しました。このシステムはMINIXに似ていました。最初はGNU Cコンパイラを使用してMINIX上で開発されましたが、Linuxカーネルはすぐに独自のプロジェクトとなり、1994年にトーバルツを含むコアの開発者たちによってカーネルのバージョン1.0がリリースされました。
トーバルズはカーネルと一緒にGNUのコード(GNU Cコンパイラも含む)を使用しており、多くのLinuxディストリビューションが今でもGNUのコンポーネントを利用していることは事実です。スターマンは、「Linux」の名前を「GNU/Linux」と拡張するようロビー活動を行っており、それによってGNUプロジェクトの役割とLinuxの開発、そしてGNUプロジェクトとLinuxカーネルの基礎にある理念の両方を捉えると主張しています。現在、「Linux」という言葉は、Linuxカーネルの存在とGNUの要素を示す場合にしばしば使われます。同時に、多くの携帯機器やスマートフォンの組み込みシステムでは、Linuxカーネルを使用し、ほとんどGNUのコンポーネントを使わないことがあります。
Linuxの主な特徴
Linuxカーネルは、Unixから多くの目標と特性を受け継いでいますが、以下の点で以前のシステムと異なるということです。
- Its core component is the kernel, which is developed independently from other operating system components. This means that Linux borrows elements from a variety of sources (such as GNU) to comprise an entire operating system.
- It is free and open-source. Maintained by a community of developers, the kernel is licensed under the GNU General Public License (an offshoot of the FSF’s work on the GNU Project), and available for download and modification. The GPL stipulates that derivative work must maintain the licensing terms of the original software.
- It has a monolithic kernel, similar to Unix, but it can dynamically load and unload kernel code on demand.
- It has symmetrical multiprocessor (SMP) support, unlike traditional Unix implementations. This means that a single operating system can have access to multiple processors, which share a main memory and access to all I/O devices.
- Its kernel is preemptive, another difference from Unix. This means that the scheduler can force a context switch on a driver or another part of the kernel while it is executing.
- Its kernel does not differentiate between threads and normal processes.
- It includes a Command Line Interface (CLI) and can also include a Graphic User Interface (GUI).
人気のあるLinuxディストリビューション
開発者たちは現在、多くの人気のあるLinuxディストリビューションを維持しています。その中でも長く存在しているのが、Debianです。Debianは無料かつオープンソースのディストリビューションであり、50,000のソフトウェアパッケージを提供しています。Debianは、他の人気のあるディストリビューションであるUbuntuに影響を与えました。UbuntuはCanonical Ltd.から資金援助を受けており、Debianと同様のdebパッケージフォーマットやパッケージ管理ツールを使用しています。また、Ubuntuの開発者たちは変更点をDebianに上流に戻しています。
Red Hat、Fedora、およびCentOSの間には、同様の関係が存在しています。Red Hatは1993年にLinuxディストリビューションを作成し、10年後にRed Hat Enterprise LinuxとFedoraに取り組みを分割しました。Fedoraは、LinuxカーネルとGNUプロジェクトの要素を利用したコミュニティベースのオペレーティングシステムです。Red Hatはまた、ウェブサーバー向けの人気のあるもう一つのLinuxディストリビューションであるCentOSプロジェクトとも関係があります。ただし、この関係には有償のメンテナンスは含まれていません。CentOSはDebianと同様にコミュニティの開発者によってメンテナンスされています。
結論:
この記事では、LinuxのルーツであるUnixとその定義的な特徴について取り上げました。もしLinuxとUnixの派生版(FreeBSDを含む)の歴史についてもっと知りたい場合は、FreeBSDに関するシリーズをご覧になると良いでしょう。Linuxを始めるための入門シリーズも考慮する選択肢となります。また、Linuxにおけるファイルシステムのレイアウトについての紹介、Linux VPSにおいてファイルを検索するためのfindとlocateの使い方についての議論、また、コマンドライン上での正規表現についての入門もご覧いただけます。