FreeBSDに関する世界観です。BSDも参照のこと。
FreeBSDは、*BSDの中では正統派で、性能や機能や安定性を重視した*BSDとして知られる。
公式・Wikipedia
ソースコード
特に、昔の工業大学などでは、大学の研究室などのOSはFreeBSDが使われていることが多かった。Linuxなどと機能的に遜色が無く、フリーなライセンスである、そして伝統的に良く使われてきたBSDの子孫であるというFreeBSDの特徴は、大学でUNIXを教えたり計算業務を行ったりするなどの用途にうってつけである。
また、BSDの「ネットワークに強いOS」という特徴は、Linuxなどが普及した今でも衰えていない。本当にハイエンドでたくさんの処理が必要なサーバーでは、LinuxよりもFreeBSDを使うこともある。たとえば、巨大掲示板2ちゃんねるのサーバーはFreeBSDで動いている。他にも、商用の組み込みシステムなどでは、BSDライセンスというソースコード公開の義務のないFreeBSDは良く用いられており、プレイステーションのOSにもFreeBSDが使われている。
BSDは「世界と関係のない」日本のシステム管理者にも人気で、「Linuxと機能的に遜色がないのに、なぜ*BSDは普及しないのか」と良く論議に挙がる。その理由は多くの場合、Red Hatのような強力な企業のスポンサーが居ないからであるとされる。また、GNUのような声高にフリーを宣言する活動家の集団も居ない。だが本当に、FreeBSDのネットワークや低レベル機能(ストレージなど)は、今でもLinuxより品質が高いことがある。だがLinuxと敵対関係にあるわけではなく、最近Linux開発者にOpenBSDが好きな人間が多い(特にsystemdが嫌いなど)ように、両者は協力し、高品質でフリーなOSのさらなる品質改善に努めている。
後日注記:特に、FreeBSDはUNIXシステムとしてとても完成されている。コマンドラインシェルもきちんとtcshが動き、コマンドプログラムやデーモンも一通りそろっていて、大学でTeXやgnuplotを教えるのにうってつけである。ネットワークシステムも構築しやすく、DuckDuckGoのようにIT企業のインフラにも多く導入されている。
LinuxとFreeBSDを比べると、まず挙がるのは、「安定性」です。
FreeBSDは、Linuxのようにたくさんの機能をつめこみ、効率やスループレットを上げる、ということよりも、信頼性や安定性が高く、「本当に安定した正しい製品が必要な場合」に最適です。
Linuxには、なんでもかんでも機能がある代わり、システム全体のサイズが巨大になり、安定性や信頼性が欠けています。こうした場合に、FreeBSDは良い選択肢となります。
FreeBSDには、他のOSに未だ欠けている、先進的なネットワークやストレージの機能があります。ZFSも使えますし、WindowsのTCP/IPの通信機能のコードはFreeBSDを基にしています。よって、ネットワークやストレージで、商用製品並みの「正しい基盤ソフトウェア」が必要であれば、FreeBSDを採用すると良いでしょう。BSDライセンスを採用しているほか、最近はGCCからClang/LLVMに移行したため、商用製品としてコードを使いたい場合に、派生ソフトウェアにGPLを継承しなくても良い、というライセンスは、商用製品の一部として組み込む場合に優れています。
その一方で、System V系のUNIXではなくBSD系のUNIXでは、BSD系ならではの独自仕様がシステム構築の課題となります。シェルにCシェル系のtcshを使い、Portsやrc.confによるシステム管理をしなければなりません。Dockerはjailsにする必要がありますし、デフォルトのviはVimではなくnviです。UNIXコマンドのオプションや機能も違います。こうした場合にどれくらい対応できるUNIXエンジニアが居るかどうか、が課題となるでしょう。
後日注記:FreeBSDの強みとしてよく言われるのが、「たくさんのタスクを同時に効率的に処理できる」ということ。どんなにネットワーク負荷が高くなっても、FreeBSDは壊れない。きちんと安定して、多数のタスクをさばくことができる。
FreeBSDの特徴は、以下のようなものがある。
特徴 | 解説 |
---|---|
カーネルが堅牢 | どれだけたくさんのタスクがあっても、不安定になることなく安定して動き続ける。 サーバOSとしてはLinuxの古くからの宿敵・ライバル。 |
ZFS | Sunが開発したCDDLライセンスの信頼性の高いファイルシステムZFSを標準で採用。 Linuxではライセンスの問題から使うことができない。 |
BSDライセンス | ライセンスにGPLではなくBSDライセンスを採用。 商用OSのベースとして使われることもある(たとえばプレイステーション3/4/VitaやmacOS/Darwin)。 |
カーネル+ユーザーランド | FreeBSDでは、カーネルだけではなく、ユーザーランドのコマンドも同時に提供している。 アプリケーションのパッケージとしてはportsで対応。 きちんとOS一式すべてを提供しているため信頼性と利便性が高い。 |
インストール時点では最小限の環境 | Ubuntuなどのように、インストール後に何でも使える環境にはなっていない。 必要なソフトウェアを手動で自分自身で導入・設定・管理をする必要がある。 逆に「UNIXのシステムを学ぶ」という点では優れている。 ユーザー必読の高品質なハンドブックなどもドキュメント化されており、勉強になる。 |
make worldできる | システム全体を完全にビルドし直すことができ、チューニングやカスタマイズが可能。 |
BSD系のシステム | BSD系のシステムの特徴として、シェルがCシェルであること、rc.confを使ったinit処理を行うことなどがある。 |
どちらかというと、Linuxがエンジニアやオタクだけではなく一般ユーザーまで大風呂敷を広げようとしているのに対し、「分かる人間だけに使ってほしい」という姿勢が見られる。一般ユーザー向けとしてはFuryBSD(PC-BSD・TrueOSに敬意を払うFreeBSDベースのデスクトップOS)、GhostBSD、MidnightBSDなどがあるが、むしろFreeBSDから自分の力でGUI環境を導入・設定した方が勉強になるだろう。
また、LinuxがX.orgに代わるwaylandや、systemdなど、今までのUNIXの常識ややり方を積極的に変えようとするのに対し、*BSDの開発者はUNIX古来からの環境を守り続けているところがある。ただし、GCCに代わるClang/LLVMなどの採用は、「GNUのコンポーネントの排除」という点で、BSDをよりBSDらしくさせている(GPLでライセンスされたコンポーネントをできるだけ含めない)。
またWindowsとの結びつきもあり、WindowsのWinsock2のベースはBSDのTCP/IPスタックをTurbo Pascalで書き直したものである。
標準のシェルはBシェル系のBashではなく、Cシェル系のTcsh(あるいはcsh)である。これは、cshやviの作者であるビル・ジョイがBSDの設立と深く関わっているためである。
LinuxやmacOSで標準的なbashではないため、シェルスクリプトの記法などに相違点がある。csh由来の「使ってはならない記法」なども存在する。だが、BSDは長らくcshを標準にしてきたため、大学やUNIXエンジニアには「え、Cシェル使ってないの?」と言ってLinuxを嫌う方も居る。
SysV initを採用せず、独自の起動の仕組みを採用している。
rc.confを設定するBSDの起動処理の手法は、簡素で扱いやすい代わり、設定ファイルを書き間違えたり誤って消したりするとシステムが起動しなくなるという欠点を持っている。
Linux initとデーモンを参照のこと。
portsというパッケージ管理システムを使って、簡単にアプリケーションをビルド・インストール出来る。また、設定に基づいて全システムをmake worldでコンパイル出来る。
この仕組みは、LinuxではGentoo Linuxが良く似ている。
FreeBSDでは、ソースベースのパッケージ管理システムであるportsを使う。これは、makeを上手く活用したパッケージ管理システムで、ユーザーはmakeコマンドを使って簡単にパッケージをその場でビルドし、インストールできる。また、パッケージは常に最新に同期される。Gentoo Linux創始者のダニエル・ロビンズは、Gentoo Linuxを作る際にこの仕組みをLinuxに持ち帰ってPortageというソースベースのパッケージ管理システムを作った。Gentooも参照のこと。
portsの設定は、Gentooと同様make.confに記載する。
jailはOSレベルでの仮想化機構。Dockerのようなコンテナ型仮想化の始祖のようなもので、FreeBSDシステムを小さなサブのFreeBSDシステムにできる。
仮想化を参照のこと。
Linuxではライセンス問題のおかげで使うことの出来ない、次世代のファイルシステムZFSを使うことが出来る。
Linux カーネル開発(Btrfs/ZFS)も参照のこと。
TrueOSはFreeBSDベースの手っ取り早くマシンに導入できてすぐに使えるOS。以前は「PC-BSD」という名前だった。
僕が最近知って驚いたこととして、DuckDuckGoのシステムでは、FreeBSDとPerlとNginxが使われているそうです。
DuckDuckGoはプライバシー侵害をしないことで有名な「オタクしか知らない検索エンジン」ですが、やはりそういうオタクの間では今でもFreeBSDとPerlが生きています。
FreeBSDやPerlはまだ死んでいません。時代が変わったと言いますが、FreeBSDとPerlは今でも現役で生きているのです。
DuckDuckGoも参照のこと。
2023.11.10
スタンダードな*BSD。Linuxに比べて安定性が高く、「たくさんのタスクを抱えても、壊れることなく正常に動き続ける」という信頼性を大切にしている。
Linuxと遜色のない機能を持っているにも関わらず、なぜか流行らない。マスコットのデーモン君(悪魔のデーモン)のせいだろうか。
ソースベースのパッケージ管理システム。
システム全体をmake worldできる。
シンプルな起動システム。
ひとつの設定ファイルでinitを行う。
コンテナ型仮想化のDockerのオリジナル的存在。
FreeBSDシステムを独立した小さな隔離システムに分割できる。
Linuxでは一部のディストリビューションでしか使えないZFSをライセンス問題なしで使える。
cshはビル・ジョイ由来のCライクな文法を持つシェル。
viがvimではなくnviであったりなどの違いがあることもある。