FreeBSD

出典: Wikipedio


Template:Infobox OS

FreeBSD(フリービーエスディー)は、UNIXライクオープンソースオペレーティングシステムである。

NetBSDOpenBSD と同じくBSDの子孫の1つ。

近代的なオープンソースBSDとしては NetBSD に次いで古く、1993年12月に最初の公式リリースである 1.0 が公開された。

目次

特徴

FreeBSDの開発者達は、Webサイトにて、安定していて高速・高性能でなおかつ安全、先進的な機能や多くのセキュリティ機能を提供していると語っていた。FreeBSD jail等の機能もレンタルサーバー等に適したシステムであるといえる。Linuxと異なりカーネルとユーザランドを含めて一つのOSであり、そしてOS側にGPLライセンスのものを含まないようにしていることも特徴の一つである。かつては自分の環境に合わせてカーネルを再ビルドする方法が主流であったがgenericカーネルに必要に応じてカーネルモジュールを追加する形で運用することが多い。

デスクトップ環境としてみた場合、2D限定あるいは3D機能の一部はxorgのドライバが多くのビデオカードに対応しておりxfcegnomekde等のデスクトップ環境を使うことができる(フリーのドライバを使う限りでは多少の対応状況の違いはあるもののLINUXとほぼ同様の環境となる)。NVIDIAのビデオカードであればメーカーのドライバがサポートされていてOpenGLで完全な3Dハードウェアアクセラレーションが動作する。

カーネルレベルでのLINUXバイナリ互換機能(カーネル2.6.16相当)や、アプリケーションレベルではwineによるWINDOWS互換環境等を用いてネイティブでないソフトウェアも使うことができる。

歴史

1991年William Jolitzによって4.3BSD Net/2をベースとしたオペレーティングシステム386BSDが発表された。

しかし公開後の開発が停滞したため、386BSDのユーザらは「Unofficial 386BSD Patchkit」を製作し、バグの対応などを行っていた。その後386BSDは、ほぼ1年にわたって放っておかれ、やがてパッチキットの量は膨大になってしまった。

そこで、386BSDのユーザらは「386BSDの開発の手助けのため」、パッチキットを適用させた状態の「クリーンナップ」スナップショットの製作プロジェクトを進めた。しかし、Jolitzがこのプロジェクトの受け入れを拒否したことにより、プロジェクトは路線変更を余儀なくされた。結局、パッチキットの最後の取りまとめ役であったNate Williams、Rod Grimes、ジョーダン・ハバードらは、自分達で新しいオペレーティングシステムの開発を行う事を決意し、1993年にFreeBSDプロジェクトをスタートさせた。ちなみに、「FreeBSD」という名前はDavid Greenmanによって考案されたものである。

FreeBSDは4.3BSD Net/2をベースに開発が行われ、1993年12月には最初のリリースであるFreeBSD 1.0が、そして、1994年5月にはFreeBSD 1.1がリリースされた。

しかしこの後、当時UNIXのソースコードの権利をもっていたNovell社とカリフォルニア大学バークレー校との長期に渡った訴訟の和解が成立し、4.3BSD Net/2UNIXのライセンスに抵触する部分があることが正式に認められた。そのため、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とソースをビルドするスタイルの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に登録されているソフトウェアが新バージョンへ更新した時に一時的にビルドできなくなるなどの問題が発生することもあるので、perl等の重要なportsの更新時には一定期間(1週間程度)様子を見る必要がある。

portsに登録されているソフトウェアは2010年1月11日の時点で21,000を超えるが日々増加している。そのメンテナンス状況はメンテナと呼ばれる管理者の能力や意欲に左右される面がある。そのため、常時メンテナンスされて高い品質を維持しているportsも多いが、逆にソースファイルのサイトが閉じていたり、ビルドできなかったりあるいは古いバージョンのまま放置されていたりするものがあるという問題点も指摘されている。

日本人メンテナの活動により、日本語環境に関するportsは他言語に比べ比較的良く整備されており、特に日本語版LaTeXは完全な環境が容易かつ安定してインストールできることは特徴的である。

無駄なportsを増やさないために「/etc/portsnap.conf」で使わないカテゴリを指定できるがあくまでディレクトリ単位でのカテゴリ指定しかできない。安直にメタポートと呼ばれるものをビルドしようとすると依存するものを全てビルドしてしまうのでファイル構成を把握したらベーシックなライブラリから更新するとストレージ使用効率が良い。

portsからインストールしたものは、たとえpackage生成を行わないように指定したとしても、packageからインストールしたものと同等に扱われる。サポートツールとしてpkg_replaceの他portmasterとruby依存のportupgrade等が使われる。pkg_addに起因するportの依存記述には問題がありしばしインストールの妨げになることがある。

OSのバージョンについて

FreeBSDでは安定版であるFreeBSD-RELEASEの他FreeBSD-CURRENTFreeBSD-STABLEの2つの開発ブランチが存在する。

CURRENTはまさに最新のFreeBSDのバージョンの開発ブランチで、作業進行中のソースがならび、開発途上のソフトウェアや過渡的な機能などが含まれている。しかし、これがリリース版に採用されるとは限らない。

STABLEは主に開発が終わったCURRENT開発ブランチに対して、分枝されてリリース版(安定版)を作成する開発ブランチである。こちらに移ってからは全ての修正はこの開発ブランチで行われる。1つのバージョン系列の開発が終わるとこのブランチからも外れ、以後一定期間は必要に応じてセキュリティアップデート等の修正が行われる。修正はパッチをあてることで行われ、FreeBSD 6.1-RELEASE-p7などと最後尾に修正が行われた回数(pはpatch levelのこと)が示される。

なお、いったんSTABLEとして扱われると、1つ上の開発バージョンがCURRENTとして扱われることになる。例外として、FreeBSD 5系では多くの改善や機能追加が行われたために、5.0~5.2の間はリリース版が出ているのにも関わらずSTABLEとして扱われない状態が続いていたが、6.0がリリースされてからは元の体制に戻った。

バージョン管理

FreeBSDのSTABLE版とCURRENT版は、cvsやsubversionを使ってソースコードレベルでOSのバージョン管理を行う。 ソースコードの更新には「csup」というコマンドが用いられる(本来はcvsupというコマンドが用いられてきたが、cvsupはプログラム製作言語として一般的でないm4で記述されていたため、C++で記述されたCSUPに置き換えられた)。そしてmake worldにより、メジャーバージョンの更新も含めてOS全体のバージョンアップができる。

バイナリで配布されたRELEASE版のgenericカーネルに対しては「freebsd-update」というコマンドが用いられ定期的なセキュリティパッチ等のバージョンアップができる。 通常はセキュリティパッチが入るとカーネルの名称に「p2」等とバージョンがつくがカーネル以外だけの更新の場合カーネル名称は変わらない。

旧来のユーザーはソースからの構築を好む傾向があるが OSがモジュール化され後から好きな機能を追加できる点と 近年のPCのリソースを考えれば、カーネル部分の最適化にはあまりメリットがなく、サーバー等でOSのバイナリ同一性などを考えるとソースから更新したものはRELEASEとはいえないため、 genericカーネルをfreebsd-updateで更新していくことが望ましい。 カーネルのソースコードからの更新であればSTABLE版かCURRENT版を使えば良いわけである。

同一の最適化設定のソースからのカーネル構築でも近年では同一性が失われている。 この原因はライセンス上の問題からOSに最新版のgccを添付できない事にある。この問題に対してclangの導入が検討されているが現時点ではportsでも重要なものの多くがビルドできない状況である。

RELEASE版のバージョンアップにも「freebsd-update」コマンドは使えるため FreeBSD 7.1のRELEASE時等サーバーにアクセスしづらい状況になるくらい多く使われているが、以下の理由などからあまりメリットはない。

  • freebsd-updateの作業内容が不透明かつ長時間に及び、複数台のアップデートには非効率。
  • 元々OSのインストールイメージをコピーすることで、アップデートが可能

最新のバージョン

2009年12月28日現在のリリース版と開発版、およびこの時点でセキュリティアップデートなどのサポートしている安定版は以下の通り。2009年はFreeBSD7系がリリースの対象の中心となる予定。

  • RELEASE(最新リリース):FreeBSD 8.0-RELEASE(2009年11月25日)
  • CURRENT(最新開発版):FreeBSD 9-CURRENT
  • STABLE(安定版):FreeBSD 8.x、FreeBSD 7.x、FreeBSD 6.x

これまでのリリース

掲載しているのはRELEASEのアナウンスがされたバージョンのみ。現在も修正等のサポートが行われているバージョンは斜体でしめしている。

  • 1993年
    • 11月1日 FreeBSD 1.0-RELEASE
  • 1994年
    • 5月6日 FreeBSD 1.1-RELEASE
    • 6月30日 FreeBSD 1.1.5-RELEASE
    • 7月5日 FreeBSD 1.1.5.1-RELEASE
    • 11月22日 FreeBSD 2.0-RELEASE
  • 1995年
    • 6月10日 FreeBSD 2.0.5-RELEASE
    • 11月19日 FreeBSD 2.1-RELEASE
  • 1996年
    • 7月16日 FreeBSD 2.1.5-RELEASE
    • 11月15日 FreeBSD 2.1.6-RELEASE (FreeBSD 2.1.6.1-RELEASEに置き換え)
    • 11月26日 FreeBSD 2.1.6.1-RELEASE
  • 1997年
    • 2月20日 FreeBSD 2.1.7-RELEASE
    • 3月19日 FreeBSD 2.1.7.1-RELEASE
    • 3月16日 FreeBSD 2.2-RELEASE
    • 3月25日 FreeBSD 2.2.1-RELEASE
    • 5月16日 FreeBSD 2.2.2-RELEASE
    • 10月22日 FreeBSD 2.2.5-RELEASE
  • 1998年
    • 3月25日 FreeBSD 2.2.6-RELEASE
    • 7月22日 FreeBSD 2.2.7-RELEASE
    • 10月15日 FreeBSD 3.0-RELEASE
    • 11月30日 FreeBSD 2.2.8-RELEASE
  • 1999年
    • 2月15日 FreeBSD 3.1-RELEASE
    • 5月18日 FreeBSD 3.2-RELEASE
    • 9月17日 FreeBSD 3.3-RELEASE
    • 12月20日 FreeBSD 3.4-RELEASE
  • 2000年
    • 3月13日 FreeBSD 4.0-RELEASE
    • 6月24日 FreeBSD 3.5-RELEASE
    • 7月27日 FreeBSD 4.1-RELEASE
    • 9月27日 FreeBSD 4.1.1-RELEASE
    • 11月22日 FreeBSD 4.2-RELEASE
  • 2001年
    • 4月20日 FreeBSD 4.3-RELEASE
    • 9月29日 FreeBSD 4.4-RELEASE
  • 2002年
    • 1月26日 FreeBSD 4.5-RELEASE
    • 6月15日 FreeBSD 4.6-RELEASE
    • 8月15日 FreeBSD 4.6.2-RELEASE
    • 10月10日 FreeBSD 4.7-RELEASE
  • 2003年
    • 1月19日 FreeBSD 5.0-RELEASE
    • 4月3日 FreeBSD 4.8-RELEASE
    • 6月9日 FreeBSD 5.1-RELEASE
    • 10月28日 FreeBSD 4.9-RELEASE
  • 2004年
    • 1月12日 FreeBSD 5.2-RELEASE
    • 2月25日 FreeBSD 5.2.1-RELEASE
    • 5月27日 FreeBSD 4.10-RELEASE
    • 9月6日 FreeBSD 5.3-RELEASE(5.x系では初めてとなるSTABLEブランチからのリリース)
  • 2005年
    • 1月25日 FreeBSD 4.11-RELEASE(4.x系最後のリリース)
    • 5月9日 FreeBSD 5.4-RELEASE
    • 11月4日 FreeBSD 6.0-RELEASE
  • 2006年
    • 4月1日 FreeBSD 2.2.9-RELEASE(エイプリルフールのネタとしてリリース)
    • 5月9日 FreeBSD 6.1-RELEASE
    • 5月25日 FreeBSD 5.5-RELEASE(5.x系最後のリリース)
  • 2007年
    • 1月15日 FreeBSD 6.2-RELEASE
  • 2008年
    • 1月18日 FreeBSD 6.3-RELEASE
    • 2月26日 FreeBSD 7.0-RELEASE
    • 11月28日 FreeBSD 6.4-RELEASE
  • 2009年
    • 1月5日 FreeBSD 7.1-RELEASE
    • 5月4日 FreeBSD 7.2-RELEASE
    • 11月25日 FreeBSD 8.0-RELEASE
  • 2010年
    • 3月23日 FreeBSD 7.3-RELEASE

対応アーキテクチャ

2009年12月現在、公式サイトにてインストールイメージが配布されているアーキテクチャは以下のとおり。

これ以外にもARMアーキテクチャMIPSアーキテクチャXbox等への移植のためのプロジェクトが存在する。

関連プロジェクト

FreeSBIEプロジェクト

FreeBSDの1CD版(LiveCD版)としてFreeSBIEプロジェクトがある。

使用例

  • 2ちゃんねる - 海外のサーバはすべてFreeBSD。
  • Yahoo! - netcraftによれば、世界各国のYahoo!のサーバOSはFreeBSDとLinuxが使われている。Yahoo! JAPANも各国のYahoo!と同様にサーバOSはFreeBSDで運用されている。
  • さくらインターネット - サービスサーバは創設時から殆どFreeBSDを利用していた。2010年1月現在では、FreeBSD 7.1がメインであるが、各種LinuxディストリビューションやWindows Server 2003がサーバOSとして選択できる他、FreeBSD 6.4サーバを使用できるサービスが一つだけ残されている。
  • netcraft 世界中のサーバの運用状況がわかるサイトとして有名であるが、FreeBSDとLinuxで運用されている。
  • Livedoor - AAA! CAFEがFreeBSDで運用されている。

関連項目

Template:Portal

外部リンク

Template:Commonscat

Template:Unix-like Template:FreeBSDar:فري بي ‌إس ‌دي az:FreeBSD bat-smg:FreeBSD be:FreeBSD be-x-old:FreeBSD bg:FreeBSD bs:FreeBSD ca:FreeBSD cs:FreeBSD cv:FreeBSD da:FreeBSD de:FreeBSD en:FreeBSD eo:FreeBSD es:FreeBSD et:FreeBSD eu:FreeBSD fa:فری بی‌اس‌دی fi:FreeBSD fr:FreeBSD gl:FreeBSD he:FreeBSD hr:FreeBSD hu:FreeBSD id:FreeBSD is:FreeBSD it:FreeBSD ko:FreeBSD lb:FreeBSD lt:FreeBSD lv:FreeBSD ml:ഫ്രീ ബി.എസ്.ഡി. ms:FreeBSD nl:FreeBSD nn:FreeBSD no:FreeBSD pl:FreeBSD pt:FreeBSD ro:FreeBSD ru:FreeBSD sh:FreeBSD simple:FreeBSD sk:FreeBSD sl:FreeBSD sr:FreeBSD sv:FreeBSD th:ฟรีบีเอสดี tr:FreeBSD uk:FreeBSD uz:FreeBSD vi:FreeBSD vls:FreeBSD zh:FreeBSD zh-min-nan:FreeBSD

個人用ツール