なぜこの記事を書こうと思ったか?

最近、SNSで「Red Hat系とDebian系で同じLinuxというOSなのに使い勝手が全く異なる。もはや別のOSではないか。」という主旨の投稿を見かけました。古くからLinuxディストリビューションを使っている人間にとってはこの手の話は当たり前すぎて解説不要でしょう。しかし、これまでMacやWindowsというOSを使っていた方がLinuxを初めて使う場合は「Linuxという一つのOSが存在する」という認識から入るため、多くのディストリビューションがあることに困惑してしまうのは当然かも知れません。

これまでLinux関連の記事を書いてきた人間として、この点に触れずにきてしまったことを反省しました。すでにネットには多くのLinuxディストリビューションに関する解説はあるのですが、改めて記事としてまとめておこうと思いました。できるだけ初心者にもわかりやすい言葉で書いていこうと思います。「Linuxの種類がたくさんあるのは何故?」とか「同じLinuxってOSなのに使い勝手が違うのはなぜ?」という誤解を含んだ疑問をお持ちの方にぜひ読んでいただければと思います。

Linuxはカーネルの名前

もう世間でも十分に名前が知られている「Linux」はカーネルというOSの中で最も中核的な仕事を担うプログラムの名前です。Linuxカーネルはメモリ管理、プロセス管理、ネットワーク管理、ファイルシステム管理、デバイスドライバ管理などを担うOSの中核部分です。開発者のLinus Torvalds氏の名前がLinuxの名前の由来です。

OSのコアであるLinuxカーネルだけでは現代的なコンピューターのOSとしての役割は果たせません(OSについては後に触れます)。そこでユーザーがLinuxカーネルを使うためにカーネルの外側(ユーザーランド)で仕事をするツール群が必要になります。くどいようですが、これらのツール群はLinuxとは異なるプロジェクトで生み出されているものです。

自由なソフトウェアとLinuxの関係

ご存知の方も多いと思いますが、LinuxはLinus Torvalds氏が生み出しソースコードを公開するオープンソースとしてGPL-2.0のライセンスで公開されています。GPL-2.0の細かい解説は省きますが、GPL-2.0ライセンスのもとでは誰でも自由に実行、再配布、改変ができます。ただし、改変版を第三者へ配布する場合にはGPLの条件に従いソースコードの提供が必要になります。

時代は少し遡りますが、リチャード・ストールマンが自由なライセンスによってUnixとの互換性を持つOSを作るために創設したGNUプロジェクトが発足し多くのツール群が生まれていました。(GNUも独自にGNU Hurdというカーネルを作っていましたが、結果的にはあまり普及しませんでした。)Linuxカーネルが生み出されたときに既にGNUによって多くのツール群が使える状態にあったというのは非常に幸運であったと思います。

GNUプロジェクトの成果物とLinuxカーネルの組み合わせによるOSをGNU/Linuxと呼びます。現在でも多くのLinuxディストリビューションはGNUツール群とLinuxカーネルで構成されたGNU/Linuxであることが多いです。UbuntuやDebian、Fedoraなどの多くのディストリビューションはGNU/Linuxに分類されます。

OSとは?

ここまでLinuxカーネルとGNUツール群について触れてきました。ところでOS(Operating System)とは何でしょうか?私はOSという言葉が狭義と広義で使われ方が異なっていると考えています。

狭義のOSとはコンピューターサイエンスで使われるOSです。この場合メモリ管理、プロセス管理、ファイル管理、ネットワーク管理などの役割を果たすシステムであり、主にカーネル周辺の機能のことを指す場合が多いです。この定義ではBashなどのプログラムもアプリケーションという扱いになります。

広義のOSとは日常会話で使われる用語としてのOSです。「OSはMacですか?Windowsですか?」のような使い方でのOSです。日常会話においてOSとはカーネルだけでなくシステム管理ツールやGUIデスクトップ環境までも含むことが多いです。Linuxディストリビューションは広義のOSを提供するために作られています。Linuxカーネルに加え、GNU由来のユーザーランドツール群やGUIデスクトップ環境、オフィススイート、Webブラウザなどを組み合わせて提供しています。

多くのディストリビューションがある理由

Linuxディストリビューションには多くの種類があります。それはLinuxカーネル以外のツールに何を選択するか?という選択肢が膨大にあるからです。どのような思想や選択基準によってどのアーキテクチャをサポートし、どのツールを選ぶか?ということがLinuxディストリビューションの性質を決定づけます。

ここではディストリビューションの性質を分ける要素を大まかに見てみます。

  • アーキテクチャ:Arm, X86-64, i386など
  • init:Systemd, OpenRC, runit, dinitなど
  • パッケージ管理: DNF, APT, Pacman, XBPSなど
  • 標準Cライブラリ:glibc, musl libcなど
  • ユーザーランドツール:Coreutils, iproute2, net-toolsなど
  • セキュリティツール:AppArmor, SELinuxなど
  • デスクトップ環境:GNOME, KDE, Xfce, LXQtなど

何を選択し何を採用しないのか?これらは企業やコミュニティの哲学により決定されます。無数の選択肢の中から自分たちが信じた理想的なOSを提供すべくLinuxディストリビューションは多様な様相を呈しています。

ディストリビューションの系統

無数の選択肢の中から組み合わせられるLinuxディストリビューションですが、歴史的な経緯から主流な系統がいくつかあります。Linuxディストリビューションをすべて紹介することはとてもできないので代表的な系統のみを簡単に紹介します。ただ、ディストリビューションの中には途中から大きく方針転換するものもあり、単純に系統づけができないものもあることは留意しておいてください。また、系統の分け方は人によっても異なる場合があります。Arch Linuxも登場時には独立系に分類されることが多かったです。

二大系統としてRed Hat系とDebian系があり、それ以外にSUSE系、Slackware系、Arch系、Mandriva系、その他の独立系があると理解しておけば良いかなと思います。図に示すと以下のようになります。

Linuxディストリビューション
├─ Debian系
│  ├─ Debian
│  ├─ Ubuntu
│  └─ Linux Mint など
│
├─ Red Hat系
│  ├─ Fedora
│  ├─ RHEL
│  ├─ Rocky Linux
│  └─ AlmaLinux など
│
├─ Arch系
│  ├─ Arch
│  ├─ Manjaro
│  └─ EndeavourOS など
│
├─ SUSE系
│  ├─ openSUSE
│  └─ Gecko など
│
├─ Mandriva系
│  ├─ Mageia
│  ├─ OpenMandriva
│  └─ PCLinuxOS など
│
├─ Slackware系
│  ├─ Slax
│  └─ Puppy など
│
└─ その他独立系
   ├─ Gentoo
   ├─ Solus
   └─ Void Linux など

Red Hat系

Red Hat社が開発するRHELやその互換性のあるAlmaLinux, Rocky Linuxなど。またRed Hat社とつながりの深いコミュニティベースで開発されているFedoraやその派生ディストロがあります。特長としてはパッケージ管理にRPMを採用し、DNFやyumなどのツールを用います。

Debian系

イアン・マードック氏がDebian社会契約を掲げ立ち上げたコミュニティによって開発されてきたDebianが源流となる系統です。DEBパッケージをAPT(Advanced Package Tool)で管理する方式が特徴的です。Debianから派生したUbuntuが人気の火付け役となり、Ubuntu派生のディストリビューションも多く生まれました。Linux Mint, Zorin OS, elementary OSなど多数あります。

Slackware系

Patrick Volkerding氏によって開発されたSlackwareは最古のLinuxディストリビューションですが、そのシンプルさを保ちながら現代でも開発が続けられている息の長いプロジェクトです。複雑さを避け、極力シンプルな作りと設定ファイルによってシステムを手動で管理する方式はシステムを自らの手で管理したいパワーユーザーから支持を受けています。Slax, Puppyなどシンプルさを生かした派生ディストリビューションがあります。

Arch系

カナダのプログラマーJudd Vinet氏がSlackwareやBSD, CRUXなどのシンプルなシステムの影響を受けてパッケージ管理ツールを持つシンプルなシステムを作る目的で開発したのがArch Linuxの始まりです。Arch Linux用に開発されたパッケージ管理ツールpacmanは改良を重ね、今でもこのディストリビューションの心臓部です。Archcraft, Garuda, EndeavourOS, Manjaroなど多くの派生ディストリビューションを生み出しています。

SUSE系

SUSE社によって開発されているSUSE Enterprise LinuxやSUSE社の支援を受けてコミュニティベースで開発をしているopenSUSEなどがSUSE系の代表です。RPM形式のパッケージをYaSTというツールで管理します。歴史的な経緯からSlackware系に分類されることもありますが、現在では技術的にはSUSE系として独立していると考えて良いと思います。Geckoなどの派生ディストリビューションがあります。

Mandriva系

歴史的にはRed Hat Linuxから派生したMandrake Linuxの子孫にあたる系譜です。Red Hat系に含める場合もありますが、ここでは独立したMandriva系として扱います。OpenMandriva, Mageia, PC Linux OSなどがあります。正確にはOpenMandrivaとMageiaがMandriva Linuxの子孫、PC Linux OSがMandrake Linuxの子孫になります。RPM形式のパッケージをDNFやurpmなどのツールで管理します。ヨーロッパにシェアが多いためか、日本語関連の機能はあまり重視されていない印象を受けます。

その他の独立系

上記の系統に入らない独立系のものです。歴史ある有名どころではGentoo Linuxがあります。ソースコードベースのパッケージ管理を徹底したGentooはメタディストリビューションと呼ばれるようにディストリビューションの枠を超越した存在になろうとしています。その他にはSolusやVoid Linux、Chimera Linuxなどがあります。

Red Hat系とDebian系でコマンドが違う理由

よく比較されるRed Hat系とDebian系ですが、両者は独立したプロジェクトとして発展してきたために設計思想も異なり、パッケージ管理システムや管理ツールに大きな違いがあります。コマンドの多くはプログラムを起動するためのプログラム名やスクリプト名なので、採用するツールが異なれば当然コマンド名も異なるということが起きます。

特にDebian系からCanonical社が主導で開発してきたUbuntuが登場しシェアを拡大して以降はエンタープライズ用途で大きなシェアを持っていたRHEL(Red Hat Enterprise Linux)やそれと互換性をもつAlmaLinuxなどのRed Hat系と比べられることが多くなりました。両者ではパッケージ管理やシステム管理に用いるコマンドが異なることがあります。Red Hat系でよく知られるコマンドがDebian系では採用されておらず、逆もまた然りです。一例を挙げると以下のような違いがあります。

目的 Red Hat系でよく使われる Debian系でよく使われる
パッケージ管理 dnf apt
ファイアウォール管理 firewall-cmd ufw

注)Ubuntu系でもfirewalldを導入しfirewall-cmdを使うことは可能です。また、Red Hat系でufwを使うことも技術的には可能です。

これは結局Linuxカーネル以外のツールに何を採用するか?という哲学や思想が異なるからということになります。

最後に

Linuxディストリビューションとはどのようなものか、筆者なりの解説をしてみました。冒頭でも触れましたが、MacやWindowsから移行してきた方には「ディストリビューション」というものが理解し難く「Linuxの種類がたくさんあるの?」とか「同じLinuxってOSなのに使い勝手が違うのはなぜ?」という疑問を持つことになるのだと思います。そんな疑問が少しでも解決すればという気持ちでこの記事を書きました。初心者向けに書いたつもりですが、少し専門的な用語も入ってしまったかなと思います。不明な用語は調べながら読んでいただければより理解が深まると思います。

ともするとコンピュータの話題は詳しい人が詳しい人向けに書く記事になりがちですが、Linuxの普及のためには初心者の方のためのわかりやすい記事が少しでも増えることが大事かなと考えています。記事の感想お待ちしています。あまり手厳しい意見だと筆者が弱りますのでお手柔らかに。では楽しいLinuxライフをお送りください。

参考資料