そもそもサーバOSとは何か
Linux系サーバOS
リーナス・トーバルズ氏の手で生み出され、現在はオープンソース開発モデルのもと世界各国の開発者がそのディストリビューションを開発しているUNIXライクなOSが、Linuxである。
Linuxディストリビューションは、図3に示すようにLinuxカーネル(すなわち本来の意味でのLinux)とソフトウェア群から構成されている。Linuxカーネルは、ディストリビュータによって多少の修正は加えられているものの、基本的には同じものである。よって、Linuxディストリビューション同士の違いは、ソフトウェア群同士の違いと言いかえることもできる。
現在は非常に多くのLinuxディストリビューションが存在し、どれを選択したら良いかわからない読者も多いと思うが、サーバOSとして見た場合に着目すべきポイントは「パッケージ管理システムの有無」と「インストール直後の環境」だ。
セキュリティホール、あるいは開発したソフトウェアの不具合につながる可能性のある不要なソフトウェアやプロセスは、できるかぎり減らしておきたい。これはシステム開発における鉄則であるが、その反面、アプリケーションインストール時の依存関係調整に手間取りたくないという本音もある。
近年、ほとんどのLinuxディストリビューションのパッケージ管理システムに、yumかaptのどちらかが採用されているため、アプリケーションインストール時、もしくはライブラリのインストール時アプリケーションが要求する依存関係で悩むことは無くなった。
インストール直後がクリーン、すなわち不要なソフトウェアが少なく、プロセスも最低限な状態を作ることができるLinuxディストリビューションが、サーバOS向きのLinuxディストリビューションであると言える。
BSD系サーバOS
BSD系OSはオープンソースであることや無償で手に入れられることから、Linux系のOSと対比して紹介されることが多い。
FreeBSD、NetBSD、OpenBSDはすべてBSD系のOSであるが、Linuxと異なり、それらはディストリビューション名ではなく、それぞれがOSの名前を示している。
インストール直後からコンパイラなどの開発環境が一通りそろっており、カーネルはもちろん、アプリケーションもソースコードからコンパイルして利用するスタイルが一般的だ。
このようなスタイルは手間がかかる反面、OSを含めたシステム全体の透明性を高く保つことができる。Linuxもオープンソースであるため、ソースコードからインストールすことは十分可能であるが、その場合「開発環境を作る必要がある」「パッケージ管理システム内の依存関係のつじつま合わせが必要となる」などの問題があるため、あまり行われない。
BSD系サーバOSは、ソースコードさえ手に入れることができればアプリケーションのアップグレードが可能なため、バイナリパッケージを待つ必要が無い。このような特徴から、セキュリティ面で有利であり、この特徴はサーバOSとしても適していると言える。
以上、系統別にサーバOSとしてみた場合の特徴を説明してきた。次回はサーバOSの具体的な選び方について解説したいと思う。