FreeBSD(フリービーエスディー)は、FOSSのUnix系オペレーティングシステム (OS) である。Research UnixをベースにしたBerkeley Software Distributionに由来しており、最初のバージョンは1993年にリリースされた。2005年には、FreeBSDは最も人気のあるオープンソースのBSDオペレーティングシステムとなり、単純に寛容にライセンスされたBSDシステムのインストール数の4分の3以上を占めていた。
FreeBSDはLinuxと似ているが、 範囲とライセンスに2つの大きな違いがある。すなわち、Linuxはカーネルとデバイスドライバのみを提供し、システムソフトウェアをサードパーティーに頼っているのに対し、FreeBSDはカーネル 、 デバイスドライバ 、 ユーザーランドユーティリティ、およびドキュメントといった完全なシステムを維持している。FreeBSDのソースコードは通常、寛容なBSDライセンスでリリースされており、Linuxで使われているコピーレフトのGPLとは対照的である。
FreeBSDプロジェクトには、ベースディストリビューションに含まれるすべてのソフトウェアを監督するセキュリティチームが含まれている。広範囲のサードパーティー製アプリケーションを追加するには、 pkgパッケージ管理システムやFreeBSD Portsを使ったり、ソースコードをコンパイルしたりしてインストールすることができる。
系譜的にはUNIX本流ともいえるOSであり、過去にはHotmailなどのサーバとして利用されていた実績を有するが、現在では多くがLinuxに置き換えられている。現在の利用状況に関しては、デスクトップOSのシェアは0.01%以下で計測不能でありhttps://news.mynavi.jp/techplus/article/20200803-1197975/、サーバOSのシェアは0.1%程度とhttps://w3techs.com/technologies/details/os-bsd、泡沫ともいえる厳しい状況が続いている。一方でNetflix社のようにFreeBSDサーバを積極的に活用し、1台あたり400Gbpsという規模のコンテンツ配信を行っているところもある。
特徴
FreeBSDの開発者達は、Webサイトにて安定していて高速・高性能でなおかつ安全、先進的な機能や多くのセキュリティ機能を提供していると語っていた。FreeBSD jail等の機能もレンタルサーバ等に適したシステムであるといえる。Linuxと異なりカーネルとユーザランドを含めて一つのOSであり、そしてOS側にGPLのものを含まないようにしていることも特徴の一つである。そして、堅牢性の高いBSDカーネルの設計が最大の特徴として認知されている。
OSとしての特性 カーネルの高負荷耐性が高く、負荷が増大しても安定して動作する特徴がある。何千ものユーザーからの同時アクセスにもすばやく応答するAbout FreeBSD。 デスクトップ環境 初期状態でツールが一通り揃っているLinuxと違い、ガイダンスに沿って普通にインストールした状態では最小の構成に留められており、CUIからしか操作を行えない。デスクトップ環境を揃えるにはX Window SystemとLightDMまたはSDDMといったXディスプレイマネージャやLuminaのほか、日本語フォントや日本語入力環境などソフトウェアの追加インストールと設定の作業は必須である。GUI経由の設定よりも手作業で /etc/rc.conf などの設定ファイルを直接書き換えて設定する事が多く、若干UNIX熟練者向きであるとされる。しかし、サーバ向けとして見た場合には、このシンプルなOSの構成は安定性に大きく寄与していると言える。 最適化 ソースコードからコンパイルし直すことで、OS全体を特定のCPUに対して最適化する事が可能で、最新のLinuxが動作しないパソコンでも最新版のFreeBSDを実用的な速度で動作させることが可能である。 旧世代ハードウェアのサポート ISAバスの拡張カード等、旧世代ハードウェアのドライバが豊富に含まれており、最新機種のみならず、数世代以上前のコンピュータでも動作させることが可能である。ただし、性能面での制約はより厳しいものとなる グラフィックスデバイスのサポート デスクトップ環境としてみた場合、2D限定あるいは3D機能の一部はX.Org Serverのドライバが多くのビデオカードに対応しており、LuminaのほかXfce、GNOME、KDE等のデスクトップ環境を使うことができる。フリーのドライバを使う限りでは多少の対応状況の違いはあるもののLinuxとほぼ同様の環境となる。NVIDIAのビデオカードであればメーカーのドライバがサポートされていてOpenGLで完全な3Dハードウェアアクセラレーションが動作する。 他のプラットフォームのエミュレーション カーネルレベルでのLinuxバイナリ互換機能(カーネル2.6.16相当)や、アプリケーションレベルではWineによるWindows互換環境等を用いてネイティブでないソフトウェアも使うことができる。
システム要件 以下は、amd64アーキテクチャにおける要件である。
最小構成 amd64互換プロセッサ 96MBのRAM 1.5GBのハードドライブ空き容量 ネットワークカード
推奨される構成 AMD Athlon 64、AMD Opteron、マルチコアのIntel XeonおよびIntel Core 2以降のプロセッサ rEFIndをインストールするためのEFIシステムパーティション デスクトップ環境をインストールする場合は2GB - 4GBのRAMが必要 デスクトップ環境をインストールする場合は8GBのハードドライブ空き容量が必要 3Dアクセラレーションビデオカード ネットワークカード サウンドカード
歴史 1991年、ウィリアム・ジョリッツによって4.3BSD Net/2をベースとしたOS、386BSDが発表された。
しかし公開後の開発が停滞したため、386BSDのユーザらは「Unofficial 386BSD Patchkit」を製作し、バグの対応などを行っていた。その後386BSDは、ほぼ1年にわたって放っておかれ、やがてパッチキットの量は膨大になってしまった。
そこで、386BSDのユーザらは「386BSDの開発の手助けのため」、パッチキットを適用した状態の「クリーンナップ」スナップショットの製作プロジェクトを進めた。しかし、Jolitzがこのプロジェクトの受け入れを拒否したことにより、プロジェクトは路線変更を余儀なくされた。結局、パッチキットの最後の取りまとめ役であったNate Williams、Rod Grimes、ジョーダン・ハバードらは、自分達で新しいOSの開発を行う事を決意し、1993年にFreeBSDプロジェクトをスタートさせた。「FreeBSD」という名前はDavid Greenmanによって考案されたもので、386BSDの最初の単語 "Three" をもじって "Free" にした命名である。1993年6月19日、ジョーダン・ハバード、Rod GrimesおよびDavid Greenmanは、FreeBSDの開発開始をアナウンスした。
FreeBSDは4.3BSD Net/2をベースに開発が行われ、1993年12月には最初のリリースであるFreeBSD 1.0が、そして、1994年5月にはFreeBSD 1.1がリリースされた。
1994年1月、当時UNIXのソースコードの権利をもっていたノベルとカリフォルニア大学バークレー校との長期に渡った訴訟の和解が成立し、4.3BSD Net/2にUNIXのライセンスに抵触する部分があることが正式に認められた。そのため、FreeBSDはそのまま開発を続けることが不可能となり、1994年7月にリリースされたFreeBSD 1.1.5.1を最後に4.3BSD Net/2をベースにした開発を停止した。
FreeBSDプロジェクトは、UNIXのライセンスに抵触していないことが公式に宣言された4.4BSD-Liteを基にしてFreeBSDの開発を再開した。再開後の最初のリリースであるFreeBSD 2.0は1994年11月に発表され、その後、FreeBSDは順調に発展を続けている。
X Window Systemについては、当初XFree86を標準として採用していたが、FreeBSD 5.3からはX.Orgを標準とするように移行した。
パッケージ管理 FreeBSDのパッケージ管理システムは、ビルド済みパッケージをインストールするpackage, pkg(8)とソースをビルドするスタイルのportsがある。OS以外でpackageのインストールしたものは原則として「/usr/local」以下と「/var/db/pkg」以下に入る。つまりOS部分とほぼ分離されているので明示的な管理やバックアップもしやすいが 基本的にライブラリを共用する発想で構成されているのでWindows等でアプリごとにライブラリを用意することに慣れている人には使い辛いと感じることもある。7系から8系等、メジャーバージョンアップの際には使用ライブラリの互換性がなくなるが一部(usbを使うものなど)を除いて「compat7x」を入れることにより動作する。 package packageはビルド済みのバイナリをシステムにインストールする仕組みでportsからインストールされたものも含めてバージョンやファイル構成が記録される。
サーバは本家の他日本など各地にある。自分でもpackageを作る事が出来るので複数台同一環境のPCを管理している場合にも使うことができる。
単独のpackageの個別インストールもできるが、「pkg_add -r」コマンドで上位にあるpackageを指定することにより依存packageもインストールされる。しかしpackageとPCのPerl等依存ツールやライブラリのバージョンが異なる場合、手動で修正が必要である等の問題があったり、RELEASE版では最新のpackageを取得するために環境変数「PACKAGESITE」を指定しなくてはいけない他、Web上の情報では「FreeBSDはビルドするのが当たり前」という風潮がかつては多かったため新規インストール以外にはあまり使われないように見受けられる。基本的にはports更新後一週間後程度にはstable版に最新のpackageがアップロードされているようだ。packageのバージョンアップ用のサポートツールとしてpkg_replace等がある。
ports portsは半自動的にソースコードからpackageのビルド及びインストールを行う方法である。特殊なパッチを当てる当てないの選択肢ダイアログ等が表示される場合もあるが、基本的にはソースコードのダウンロードからコンパイル、package生成、packageインストールまでの一連の流れを自動的に行うことができる。
ただ、実際にはシェルスクリプトだけのものやフォント、NVIDIA等メーカー品バイナリやJava等ビルド不要のものも多い。packageに比べると作業領域を明示的に指定できる長所がある。
基本的には「/usr/ports」に置かれる。portsの最新情報への更新は「portsnap」というコマンドを用いる事で最小限の更新だけで済ませられる(あるいは同portsツリーにあるdevel/githttps://www.freshports.org/devel/gitないしnet/gituphttps://www.freshports.org/net/gitupを用いてportsツリーを更新することも可能)。portsに登録されているソフトウェアが新バージョンへ更新した時に一時的にビルドできなくなるなどの問題が発生することもあるので、Perl等の重要なportsの更新時には1週間程度様子を見る必要がある。
portsに登録されているソフトウェアは2022年1月14日の時点で46,811種https://www.freshports.org/categories.php 右下のStatisticsが登録されており日々増加している。そのメンテナンス状況はメンテナと呼ばれる管理者の能力や意欲に左右される面がある。そのため、常時メンテナンスされて高い品質を維持しているportsも多いが、逆にソースファイルのサイトが閉じていたり、ビルドできなかったりあるいは古いバージョンのまま放置されていたりするものがあるという問題点も指摘されている。
日本人メンテナの活動により、日本語環境に関するportsは他言語に比べ比較的良く整備されており、特に日本語版LaTeXは完全な環境が容易かつ安定してインストールできることは特徴的である。
無駄なportsを増やさないために「/etc/portsnap.conf」で使わないカテゴリを指定できるがあくまでディレクトリ単位でのカテゴリ指定しかできない。安直にメタポートと呼ばれるものをビルドしようとすると依存するものを全てビルドしてしまうのでファイル構成を把握したらベーシックなライブラリから更新するとストレージ使用効率が良い。
portsからインストールしたものは、たとえpackage生成を行わないように指定したとしても、packageからインストールしたものと同等に扱われる。サポートツールとしてpkg_replaceの他portmasterとruby依存のportupgrade等が使われる。pkg_addに起因するportの依存記述には問題がありしばしインストールの妨げになることがある。
pkg pkg(8)は、FreeBSD用の次世代のパッケージ管理システム pkgng として開発されてきたものである。従来のバイナリベースパッケージ管理システムである package よりも、手軽なバイナリアップデート、リモートパッケージ検索、依存関係の管理等の機能が強化されている。pkgは、これまでのものとはパッケージのデータベースの管理方法が異なるため現時点ではFreeBSD 9.x までのバージョンでは、pkg(8)の使用がデフォルト設定にはなっておらず、手動で pkg 管理システムに移行しなければならない。FreeBSD 10.0Rからデフォルトのパッケージ管理システムとして採用されている。
OSのバージョン FreeBSDでは安定版であるFreeBSD-RELEASEの他FreeBSD-CURRENTとFreeBSD-STABLEの2つの開発ブランチが存在する。
CURRENTはまさに最新のFreeBSDのバージョンの開発ブランチで、作業進行中のソースがならび、開発途上のソフトウェアや過渡的な機能などが含まれている。しかし、これがリリース版に採用されるとは限らない。
STABLEは主に開発が終わったCURRENT開発ブランチに対して、分枝されてリリース版(安定版)を作成する開発ブランチである。こちらに移ってからは全ての修正はこの開発ブランチで行われる。1つのバージョン系列の開発が終わるとこのブランチからも外れ、以後一定期間は必要に応じてセキュリティアップデート等の修正が行われる。修正はパッチをあてることで行われ、8.1-RELEASE-p2などと最後尾に修正が行われた回数(pはpatch levelのこと)が示される。
いったんSTABLEとして扱われると、1つ上の開発バージョンがCURRENTとして扱われることになる。例外として、FreeBSD 5系では多くの改善や機能追加が行われたために、5.0 - 5.2の間はリリース版が出ているのにもかかわらずSTABLEとして扱われない状態が続いていたが、6.0がリリースされてからは元の体制に戻った。
バージョン管理 FreeBSDのRELEASE版及びSTABLE版、CURRENT版は、Githttps://git-scm.com/を使ってソースコードレベルでOSのバージョン管理を行う。
ソースコードの管理は、当初はConcurrent Versions Systemが採用され、更新にはかつては「csup」というコマンドが用いられたが(csupはCVSupの主要な機能をC言語で再実装したものである。これは、CVSupがプログラム言語として一般的でないModula-3で実装されており、これが理由でcsupはベースシステムに含まれるがCVSupはportsから導入する)、cvsupによる配布は2013年2月一杯で終了した。以降2020年12月まではApache Subversionが用いられていたが、現在2022年1月15日時点ではGitへ移行しているhttps://www.freebsd.org/ja/developers/cvs/。
/usr/src以下に展開されたソースコードをmakeすることにより、メジャーバージョンの更新も含めてOS全体のバージョンアップができる。
バイナリで配布されたRELEASE版に対しては「freebsd-update」というコマンドが用いられ定期的なセキュリティパッチ等のバージョンアップができる。GENERICカーネルであればカーネルのアップデートも可能である。通常はセキュリティパッチが入るとカーネルの名称に「p2」等とバージョンがつくがカーネル以外だけの更新の場合カーネル名称は変わらない。
セキュリティ対応と保証期間 FreeBSDのSTABLE版及びRELEASE版については、リリース後一定期間、セキュリティに関する問題が発生した場合に必要なアドバイザリ及びアップデートがリリースされる保証期間が設けられる。保証期間については以下の3つの区分が存在するSupported FreeBSD Releases - FreeBSD Security Information。CURRENT版は開発版の扱いのため、セキュリティアップデートやアドバイザリは提供されない。
Early Adopter CURRENT版から分岐した最初のRELEASE版に適用されるもの。ただし2012年現在適用例はない。保証期間はリリース後6ヶ月。 Normal 通常のRELEASE版でSTABLE版から分岐したものに適用されるもの。保証期間はリリース後1年。 Extended 原則として、メジャーバージョンに対して2番目以降のRELEASE版及びそれに対応するSTABLE版に適用されるもの。保証期間はリリース後2年。
ただし実際には、各RELEASE版に対しNormal及びExtendedのどちらを選択するか、その時点でのRELEASE版のコード品質等を考慮して個別に定められることが多く、時には「古いRELEASEの方が新しいRELEASEよりも保証期間が長い」という逆転現象が起こることがある。例:8.1-RELEASEの保証期間が2012年7月末までなのに対し、8.2-RELEASEの保証期間は2012年2月末まで。過去には7.1-RELEASEと7.2-RELEASEの間でも同様の逆転現象が発生した。ただし8.2-RELEASEの保守終了予定日は8.1-RELEASE同様2012年7月末まで延長されている。このため、特にサーバ等で長期に運用する予定の機器では、保証期間の終了時期を踏まえたバージョン選択を行う必要がある。
最新のバージョン 現在、セキュリティアップデートなどがサポートされている安定リリース版、及び開発ブランチは以下の通りである。 RELEASE(リリース版): FreeBSD 15.1-RELEASE(2026年6月16日)https://www.freebsd.org/releases/15.1R/announce/ FreeBSD 15.1-RELEASE Announcement FreeBSD 14.5-RELEASE(2026年9月8日)https://www.freebsd.org/releases/14.5R/announce/ FreeBSD 14.3-RELEASE Announcement
バージョンごとの特徴 FreeBSD 1 「1.0-RELEASE」は、4.3BSD Net/2を基にして1993年11月に開発された。
4.3BSD Net/2にUNIXのライセンスに抵触する部分があるとして、1994年7月5日にリリースされた「1.1.5.1-RELEASE」を最後に4.3BSD Net/2を基にした開発を停止。
FreeBSD 2 「2.0-RELEASE」はUNIXのライセンスに抵触していないことが公式に宣言された4.4BSD-Liteを基にして1994年11月22日に発表された。バージョン2の最終版の「2.2.8-RELEASE」は1998年11月29日に発表された。
「2.0-RELEASE」は、AT&T由来のUNIXソースコードの著作権者ノベルの法的請求権から(将来に渡って)公的に解放された最初のFreeBSDのバージョンであるBerkeley Software Distribution#4.4BSDと派生。インターネットサーバ拡大期の始まりにおいて、広く使われた最初のバージョンでもある。
FreeBSD 3 「3.0-RELEASE」は1998年10月16日に発表された。バージョン3の最終版の「3.5-RELEASE」は2000年6月24日に発表された。
「3.0-RELEASE」はジャイアントロックを用いてSMPシステムをサポートできる最初のブランチである。「3.1-RELEASE」からはUSBをサポートし、「3.2-RELEASE」からギガビット・イーサネットカードをサポートした。
FreeBSD 4 「4.0-RELEASE」は2000年3月13日に発表された。2005年1月25日に出た最終版の「4.11-RELEASE」は2007年1月31日までサポートされていた。
バージョン4は、その安定性を賞賛され、最初のインターネット・バブルの時期にプロバイダとホスティングサーバから好まれたオペレーティングシステムであり、Unix系では最も安定した高いパフォーマンスのオペレーティングシステムの一つと広く見なされている英語版:「FreeBSD」の記事の記述より。バージョン4の新機能では、「4.1-RELEASE」より、後にNetBSDやOpenBSDのシステムの一部となるkqueue(2)のシステムコールを導入した*BSD で kqueue・kevent を使ってみよう - X68000.qed.net。
FreeBSD 5 「5.0-RELEASE」は2003年1月14日にCURRENT(最新開発版)として発表された。バージョン5の最初の安定版のリリースは、2004年11月6日に発表された「5.3-RELEASE」である。バージョン5の最終安定版は2006年5月25日に出た「5.5-RELEASE」であった。
バージョン5の最初のブランチとして登場した「5.0-RELEASE」は、先進的なマルチプロセッサとアプリケーションスレッディング、UltraSPARCとIA-64のプラットフォーム対応等のサポートといった注目度の高い機能を手広く先取りしていた。
カーネルロック機構の変更 バージョン5の最大のアーキテクチャに関する開発は、SMPを改善させる為に低レベルのカーネルロック機構を大きく変更させた点であった。これによって、ジャイアントロックからカーネルの大部分のリソースが開放された。複数のプロセスを同時にカーネルモードで実行できるようになった。 KSE KSE(カーネルスケジュールエンティティ、"Kernel Scheduled Entities")は、1 個のプロセスが複数のカーネルレベルスレッドを持てるようにするための機構であるFreeBSD 5.0-RELEASE 初期利用者のための手引き。原理的にKSEと同様に"M:N" モデルを用いる、NetBSDに実装されたScheduler activationsに似ている。KSEは「5.3-RELEASE」から安定版の実装が始まり、「7.0-RELEASE」で1個のカーネルスレッドを1個のユーザーランドスレッドが占有して利用する1:1スレッドの実装に置き換えられるまでFreeBSDのデフォルトのスレッド機構だった。 GEOM Poul-Henning Kampの貢献によって作られた、ディスクI/O要求を変換するモジュール型フレームワークであるGEOM を実装することで、I/O層のブロック(記録単位)をかなり変更できる。GEOMは、ミラーリング (gmirror) FreeBSD/GEOM - 情報科学研究室 - 秋田大学と暗号化 (GBDEとGELI) 16.13. ディスクパーティションの暗号化などの機能の多くを簡単に作成可能とする。このGEOMの開発はDARPAによる支援を受けて作成されている。
FreeBSD 6 「6.0-RELEASE」は2005年11月4日にリリースされた。バージョン6の最終版の「6.4-RELEASE」は2008年11月11日にリリースされた。これらのバージョンは、SMPと先進的なIEEE 802.11の機能性の更なる開発の他に下記のようなものがある。
スレッド最適化 VFSのマルチプロセッサセーフ (MPSAFE) が有効となり、ジャイアントロックが最小限まで減らされたシステム旅譚 - FreeBSD 6.0-RELEASEの新機能と変更点を見る。
著しいネットワークスタックのパフォーマンス強化 libthrライブラリのlibc_rのデフォルトスタックサイズ が増やされ、パフォーマンス性を高めた。32ビットプラットフォームでは、メインスレッドはデフォルトで2MBのスタックを受け取り他のスレッドではデフォルトで1MBのスタックを受け取る(64ビットプラットフォームでのデフォルトスタックサイズ は、それぞれ4MBと2MBとなる)。
OpenBSM TrustedBSDTrustedBSD - Lavender PukiWikiプロジェクトによって作成されBSDライセンスの下でリリースされたセキュリティイベントの監査用のOpenBSMOpenBSM: Open Source Basic Security Module (BSM) Audit Implementationと呼ばれる基本セキュリティモジュール (BSM) 監査Next: BSM 監査の有効化と使用 - Oracle DocumentationOracleによるSolaris OSでのBSM監査の説明でFreeBSDではないが、用語の解説はちゃんとされています。の実装をした。これはAppleのオープンソースのDarwinに見出したBSM実装に基づいたものである。
その他、プリエンプティブカーネル(タスクの置き換え)とハードウェアパフォーマンス測定ドライバ (HWPMC) FreeBSD/pc98 6.0-RELEASE リリースノートのサポート等が挙げられる。
FreeBSD 7 「7.0-RELEASE」は2008年2月27日にリリースされた。バージョン7の最終版の「7.4-RELEASE」は2011年2月24日にリリースされた。
新機能は下記の通り多彩に渡る。 SCTP UFSのジャーナリング サン・マイクロシステムズのZFSファイルシステムの実験的な移植 ARMアーキテクチャへの改良されたサポート jemalloc、Firefox3に移植された並列計算に最適化されたmallocjemallocとかLD_PRELOADについて調べてみた - As a Futurist... ネットワーク関連やオーディオの最適化やSMPのパフォーマンス改善 GCC4.2.1、X.Org 7.3、KDE 3.5.8、GNOME2.20.2、BIND9.4.2。
ベンチマークは、LinuxだけでなくFreeBSDの以前のバージョンに比べても著しい速度の向上を示している。
ULEスケジューラ