UnixでなくLinuxである理由は

ごく一部に過ぎませんが、他のUnixではできない、他のUnixにはないものを紹介します。

なお、NetBSDや、さらにはIRIXなどと比較すると、Linux固有ではなく機能的不足から来る優位もあるため、主にはFreeBSDあるいはMac OS Xと比較していきます。 また、初期状態で導入されていないとしても、デスクトップ環境やGNUツールなどは他のUNIX環境でも選択しうるものですから、これらは除外します。

ファイルシステム

多彩なファイルシステムをサポートするというのは非常に珍しいです。 FreeBSDは原則としてZFSを使用し、レガシーサポート的にUFSをサポートします。MacはHFS+ファイルシステムを万能としています。 DragonflyBSDはUFS, HAMMER, そしてHAMMER2をサポートしています。

Linuxの場合Ext, XFS, JFS, Btrfs, reiserfsといった基本的なファイルシステムに加え、SquashFSやNILFS, f2fsといった特定用途に向けたファイルシステムも持っています。 特定用途のための特殊なファイルシステムのサポートが有効な場合もありますし、またExtファイルシステムやBtrfsが魅力的な場面もあるかもしれません。例えば、アンバランスな容量のディスクでミラーリングされたボリュームにおいて最小のディスクに容量を制限されることはありません。これは、ZFSにはない特長です。

dm (device mapper)

暗号化を提供するdm-crypt (LUKS)や、RAIDを提供するdm-raid、ディスクを抽象化し論理ボリュームを提供するLVMといった機能はデバイスマッパーによって提供されており、これはLinux固有です。

これらはいずれも意図して利用する場合は非常に強力な機能であり、これらの機能を使用している場合はLinuxでなければ要求を満たすことができないでしょう。

netfilter (ファイアウォール)

netfilterはLinuxにとって非常に強力な機能です。 ただし、「明らかに先んじている」という状況ではなくなっています。 OpenBSDはPFという強力なファイアウォールを備えており、これはFreeBSDにも移植されています。 後発ということもあり、これらのファイアウォールはLinuxのものよりも強力です。

ただし、PFは英文に近い構文で操作するため、普通にコマンドになっているiptablesのほうが使いやすいかもしれません。 netfilterのインターフェイスでも新しいnftablesはPFに似た構文になっています。

procfs, sysfs

カーネルに対するインターフェイスであるprocfs、及びsysfsはLinux固有です。 これらは非常に便利な機能を提供しています。

便利であるだけでなく強力であり、シェルスクリプトでこれを利用している場合はそのシェルスクリプトはLinuxに限定されることになります。 そして、シェルスクリプトでこれらを利用することで、簡単に、非常に強力な機能を追加することができます。

デバイスドライバ

Unix系OSの中ではメジャーなだけに、豊富なデバイスドライバが提供されています。 (ただしnvidiaビデオドライバに関してはFreeBSDのほうが優れています)

特にALSAはひときわ強力で、サウンドデバイスに関しては強みがあります。

ただし、これに関してはMacに対しては分が悪いかもしれません。

V4L

Video For Linuxは強力です。 これは多くの場合カメラデバイスに対する対応力として機能しますが、v4l2loopbackを使うことで画面表示をカメラデバイスにすることができる、というのは非常に便利です。

メモリー管理

何が最善か、というのは争いの元ですが、Linuxが非常にアグレッシヴなメモリー戦略をとっているのは確かです。 これにより、多く搭載されたメモリーを有効なリソースとして積極的に活用できるようになっています。

これは、ファイルアクセスに対しても同様です。 Linuxはそのメモリー管理によって実際のディスクやファイルシステムの性能以上に快適なIO性能を提供します。

Systemd / Linuxコンテナ

Systemdに対して賛否あるのは知っていますが、Systemdは非常に幅広い機能をカバーするものであり、その機能を使いこなすことで高い利便性をもたらすことができます。

特に、Linuxシステムにおいて長年「微妙にイケてない」ものであったcron/atのエコシステムを革新したことは、多くのユーザーにとって(使うことさえできれば)恩恵をもたらすことでしょう。 確かにserviceユニットとtimerユニットの2つのiniファイルを書かなくてはいけないという手間はあるものの、より制御は細かく、またユーザーにも広く間口が設けられています。 cronと比べ失敗時を想定するのも楽ですし、atのように設定しづらいこともありません。 特にatと比べればsystemd-runは実行の予約にはずっと高い利便性を提供します。

問題がないとはいいませんが、「ユーザーユニット」の存在も非常に便利でしょう。 ユーザーレベルでrespawnするデーモンを書くことができます。

比較的複雑な仮想ネットワークデバイスの設定がsystemdにまとめられたこともメリットといえるのではないでしょうか。 もちろん、覚えてしまえばどうということはなかったのですが、今までは形態の違いから設定ファイルの置き場所や書き方が分散してしまっていたため、この点は楽になったと感じます。

また、Linuxでは比較的容易に、しかも強力なコンテナを作ることができるのもまた魅力のひとつです。 特に、ルートファイルシステムを丸々コピーしてしまえば、systemd-nspawnを使ってレスキューされたLinux環境にログインできるのは非常に強力なのではないでしょうか。