LinuxユーザーのためのFreeBSDの比較紹介
序章
FreeBSDは、フリーでオープンソースのUnixライクなオペレーティングシステムであり、人気のあるサーバープラットフォームです。 FreeBSDやその他のBSDベースのシステムは、Linuxのようなシステムと多くの共通点がありますが、これら2つのファミリが重要な点で分岐している点があります。
このガイドでは、FreeBSDとLinuxのいくつかの共通点について簡単に説明してから、それらの重要な違いについてさらに詳しく説明します。 以下のポイントの多くは、BSD派生システムのより大きなファミリーに正確に適用できますが、私たちの焦点の結果として、ファミリーの代表として主にFreeBSDに言及します。
FreeBSDとLinuxが共有する特徴
FreeBSDとLinuxが異なる分野を検討する前に、これらのシステムに共通していることについて大まかに説明しましょう。
各ファミリが採用する特定のライセンスは異なりますが(これについては後で説明します)、これらのシステムファミリはどちらも無料でオープンソースです。 ユーザーは必要に応じてソースを表示および変更でき、開発はオープンで行われます。
FreeBSDとLinuxベースのディストリビューションはどちらも本質的にUnixライクです。 FreeBSDは過去のUnixシステムに密接なルーツを持っていますが、LinuxはオープンなUnixライクな代替手段としてゼロから作成されました。 この関連付けは、システムの設計、コンポーネントの相互運用方法、およびシステムの外観と達成度に関する一般的な期待に関する決定を通知します。
一般的なUnixライクな動作は、主に両方のファミリがほとんどPOSIX準拠である結果です。 システムの全体的な感触とデザインはかなり標準化されており、同様のパターンを使用しています。 ファイルシステム階層も同様に分割され、シェル環境は両方のシステムの主要な対話方法であり、プログラミングAPIは同様の機能を共有します。
これらの考慮事項により、FreeBSDおよびLinuxディストリビューションは、同じツールやアプリケーションの多くを共有することができます。 これらのプログラムのバージョンやフレーバーがシステム間で異なる場合もありますが、アプリケーションは、Unixライクでないシステムよりも簡単に移植できます。
これらの点を念頭に置いて、次に、これら2つのオペレーティングシステムファミリが異なる領域について説明します。 うまくいけば、これらの共通点が、それらの違いに関する情報をより正確に消化するのに役立つでしょう。
ライセンスの違い
FreeBSDシステムとLinuxシステムの最も基本的な違いの1つは、ライセンスの問題です。
Linuxカーネル、GNUベースのアプリケーション、およびLinuxの世界で生まれた多くのソフトウェアは、何らかの形式のGPLまたはGNU GeneralPublicLicenseの下でライセンスされています。 このライセンスは、「コピーレフト」ライセンスと呼ばれることがよくあります。これは、派生物がそのライセンスを維持することを要求しながら、ソースコードを自由に表示、配布、および変更できるライセンスの形式です。
一方、FreeBSDは、カーネルやFreeBSD寄稿者によって作成されたツールを含め、BSDライセンスの下でソフトウェアのライセンスを取得します。 このライセンスタイプは、ライセンス条項を維持するために派生物を必要としないという点で、GPLよりも寛容です。 これが意味することは、誰でも、または組織が、変更を提供したり、作成している作業のソースをリリースしたりすることなく、プログラムを使用、配布、または変更できるということです。 唯一の要件は、元の著作権とBSDライセンスのコピーが派生物のソースコードまたはドキュメント(リリース方法に応じて)に含まれていること、および責任を制限する提供された免責事項が含まれていることです。 メインライセンスは非常に短く、ここにあります。
これらのライセンスタイプのそれぞれの魅力は、哲学とユーザーのニーズにほぼ完全に依存しています。 GPLライセンスは、他のすべての考慮事項よりも共有とオープンエコシステムを促進します。 プロプライエタリソフトウェアは、GPLベースのソフトウェアに依存しないように非常に注意する必要があります。 一方、BSDライセンスのソフトウェアは、プロプライエタリなクローズドソースアプリケーションに自由に組み込むことができます。 これにより、ソフトウェアを直接販売してソースを保持できるため、ソフトウェアの収益化を望んでいる多くの企業や個人にとってより魅力的なものになります。
開発者は、一方のライセンス哲学を他方よりも好む傾向がありますが、それぞれに利点があります。 これらのシステムのライセンスを理解することは、それらの開発に入る選択と哲学のいくつかを理解し始めるのに役立ちます。
FreeBSD系統とその意味
FreeBSDシステムとLinuxシステムのもう1つの重要な違いは、各システムの系統と歴史です。 上記のライセンスの違いに加えて、これはおそらく各キャンプが遵守している哲学の最大の影響力です。
Linuxは、ヘルシンキ大学で使用していた教育指向の制限付きMINIXシステムを置き換える手段として、LinusTorvaldsによって開発されたカーネルです。 Linuxカーネル上に構築されたオペレーティングシステムは、以前のUnix OSから直接派生したものではありませんが、他のコンポーネントと組み合わせると、多くはGNUスイートからのものであり、多くのUnixライクなプロパティを備えています。 Linuxは、継承された設計上の選択やレガシーの考慮事項の一部なしでゼロから開始されたため、Unixと密接に関係しているシステムとは大幅に異なる可能性があります。
FreeBSDは、Unixの伝統と多くの直接的なつながりがあります。 BSD(Berkeley Software Distribution)は、カリフォルニア大学バークレー校で作成されたUnixのディストリビューションであり、AT&TのUnixオペレーティングシステムの機能セットを拡張し、同意できるライセンス条項がありました。 その後、ユーザーがBSDを使用するためにAT&Tライセンスを取得する必要がないように、元のAT&Tオペレーティングシステムを可能な限りオープンソースの代替オペレーティングシステムに置き換えることを試みることが決定されました。 最終的に、元のAT&T UnixのすべてのコンポーネントはBSDライセンスの下で書き直され、386BSDとしてi386アーキテクチャに移植されました。 FreeBSDは、すでに存在していた作業を維持、改善、および最新化するためにこのベースから分岐し、最終的にはライセンスの問題のためにBSD-Liteと呼ばれる不完全なリリースに基づいてリベースされました。
派生の長くて多段階のプロセスを通して、FreeBSDはライセンスの面で邪魔になりませんでしたが、その過去との密接な関係を維持しました。 システムの作成に取り組んでいる開発者は、Unixのやり方に投資し続けています。おそらく、FreeBSDは常にUnixのオープンライセンスクローンとして動作することを意図していたからです。 これらのルーツは、今後の開発の方向性に影響を与えており、これから説明するいくつかの選択の背後にある理由です。
追加のソフトウェアからのコアオペレーティングシステムの分離
FreeBSDディストリビューションとLinuxディストリビューションの開発努力とシステム設計の主な違いは、システムの範囲です。 FreeBSDチームは、カーネルとベースオペレーティングシステムをまとまりのあるユニットとして開発しますが、Linuxは技術的にはカーネルのみを参照し、他のコンポーネントはさまざまなソースから提供されます。
これは小さな違いのように見えるかもしれませんが、実際には各システムとの対話および管理方法に影響を与えます。 Linuxでは、ディストリビューションはパッケージの選択されたグループをバンドルして、それらがうまく相互運用できるようにする場合があります。 ただし、ほとんどのコンポーネントはさまざまなソースから提供され、ディストリビューションの開発者とメンテナは、正しく機能するシステムにコンポーネントを成形する必要があります。
この意味で、必須コンポーネントは、ディストリビューションのリポジトリから入手できるオプションのパッケージと大差ありません。 ディストリビューションのパッケージ管理ツールは、これらのコンポーネントをまったく同じ方法で追跡および管理するために使用されます。 ディストリビューションは、特定のパッケージを担当するチームに基づいて異なるリポジトリを維持する場合があるため、コア開発チームは利用可能なソフトウェアのサブセットについてのみ心配する必要がありますが、これは組織と焦点の違いであり、通常、ソフトウェアの違いにはなりません。ユーザーの視点からの管理。
対照的に、FreeBSDはコアオペレーティングシステム全体を維持しています。 カーネルとソフトウェアのコレクションは、その多くがFreeBSD開発者自身によって作成されており、1つのユニットとして維持されています。 このコアコレクションの一部であるコンポーネントは、ある意味でモノリシックなソフトウェアセットであるため、交換するのは簡単ではありません。 これにより、FreeBSDチームはメインオペレーティングシステムを非常に厳密に管理できるようになり、緊密な統合とより予測可能性が確保されます。
コアオペレーティングシステムに含まれているソフトウェアは、オプションの追加機能として提供されているコンポーネントとは完全に別のものと見なされます。 FreeBSDは、Linuxディストリビューションと同じように、オプションのソフトウェアの大規模なコレクションを提供しますが、これは個別に管理されます。 コアシステムは独立して単一ユニットとして更新され、オプションのソフトウェアは個別に更新できます。
リリースの形成方法
ほとんどのLinuxリリースは、さまざまなソースからソフトウェアを収集し、必要に応じて変更した結果です。 ディストリビューションメンテナは、インストールメディアに含めるコンポーネント、ディストリビューションメンテナンスリポジトリに含めるコンポーネントなどを決定します。 コンポーネントを一緒にテストした後、テストされたソフトウェアを含むリリースが作成されます。
前のセクションでは、次のことを学びました。
- FreeBSDオペレーティングシステムの大部分は、FreeBSDチームによって開発されています。
- 基本オペレーティングシステムは、生成されるメイン出力です。
- 基本ソフトウェアは、まとまりのある全体と見なされます。
これらの品質により、ソフトウェアをリリースするためのアプローチは、ほとんどのLinuxディストリビューションとは異なります。 FreeBSDはオペレーティングシステムレベルで物事を整理するので、すべての基本コンポーネントは単一のソースコードリポジトリ内に維持されます。 これにはいくつかの重要な意味があります。
まず、これらのツールはすべて単一のリポジトリで連携して開発されているため、リポジトリのブランチの1つのリビジョンを選択するだけでリリースが形成されます。 これは、組織化されたコードベースから安定したポイントが選択されるという点で、ほとんどのソフトウェアがリリースされる方法と似ています。
基本オペレーティングシステムはすべてアクティブなバージョン管理下にあるため、これは、ユーザーがシステムコンポーネントのテストの程度に応じて、さまざまなブランチまたは安定性のレベルを「追跡」できることも意味します。 ユーザーは、開発者が変更を制裁してシステムに適用するのを待つ必要はありません。
これは、特定のLinuxディストリビューションの安定性によって編成されたさまざまなリポジトリを追跡しているユーザーにいくぶん似ています。 Linuxでは、パッケージリポジトリを追跡しますが、FreeBSDでは、一元化されたソースリポジトリのブランチを追跡できます。
ソフトウェアの違いとシステム設計
ここで説明する残りの違いは、ソフトウェア自体とシステムの一般的な品質に関連します。
サポートされているパッケージとソースのインストール
ユーザーの観点から見たFreeBSDとほとんどのLinuxディストリビューションの主な違いの1つは、パッケージソフトウェアとソースインストールソフトウェアの両方の可用性とサポートです。
ほとんどのLinuxディストリビューションは、ディストリビューションがサポートするソフトウェアのコンパイル済みバイナリパッケージのみを提供しますが、FreeBSDには、ビルド済みパッケージと、ソースからコンパイルおよびインストールするためのビルドシステムの両方が含まれています。 ほとんどのソフトウェアでは、これにより、適切なデフォルトでビルドされたプリコンパイル済みパッケージと、自分でビルドしてコンパイルプロセス中にソフトウェアをカスタマイズする機能のどちらかを選択できます。 FreeBSDは、「ポート」と呼ばれるシステムを介してこれを行います。
FreeBSDポートシステムは、FreeBSDが構築方法を知っているソフトウェアのコレクションです。 このソフトウェアを表す組織化された階層は、/usr/ports
ディレクトリ内で利用でき、ユーザーは各アプリケーションのディレクトリにドリルダウンできます。 これらのディレクトリには、ソースファイルを入手できる場所を指定するいくつかのファイルと、FreeBSDで正しく動作するようにソースに適切にパッチを適用する方法に関するコンパイラへの指示が含まれています。
ソフトウェアのパッケージ化されたバージョンは実際にはportsシステムから作成されており、FreeBSDは便利なパッケージを備えたソースファーストのディストリビューションになっています。 システムは、ソースで構築されたソフトウェアと事前にパッケージ化されたソフトウェアの両方で構成でき、ソフトウェア管理システムは、これら2つのインストール方法の組み合わせを適切に処理できます。
バニラ対カスタマイズされたソフトウェア
より人気のあるLinuxディストリビューションのいくつかに精通しているユーザーには少し奇妙に思えるかもしれませんが、FreeBSDは通常、可能な限り変更されていないアップストリームソフトウェアを提供することを選択します。
多くのLinuxディストリビューションは、他のコンポーネントとの接続を容易にし、管理を容易にするためにソフトウェアに変更を加えています。 この傾向の良い例は、サーバー構成をよりモジュール化するための一般的なWebサーバー構成階層の再構築です。
多くのユーザーはこれらの変更が役立つと感じていますが、このアプローチには欠点もあります。 変更を加える際の問題の1つは、ユーザーにとってどのアプローチが最も効果的かを知っていることを前提としていることです。 また、ソフトウェアはアップストリームの規則とは異なるため、他のプラットフォームからのユーザーにとっては予測不可能なものになります。
FreeBSDのメンテナは、パッチを使ってソフトウェアを do 変更することがよくありますが、これらは一般に、一部のLinuxディストリビューションのパッケージ選択よりも保守的な変更です。 一般に、FreeBSDエコシステムでのソフトウェアへの変更は、ソフトウェアをFreeBSD環境で正しくビルドおよび実行するために必要なものであり、いくつかの合理的なデフォルトを定義するために必要なものです。 通常、ファイルシステムに配置される構成ファイルは大幅に変更されないため、コンポーネントを相互に通信させるために追加の作業が必要になる場合があります。
一般的なツールのFreeBSDフレーバー
Linuxユーザーに混乱を引き起こす可能性のあるFreeBSDシステムのもう1つの側面は、Linuxシステムとは少し異なる動作をする使い慣れたツールの可用性です。
FreeBSDチームは、多数の一般的なツールの独自のバージョンを維持しています。 Linuxシステムにあるツールの多くはGNUスイートのものですが、FreeBSDはオペレーティングシステム用に独自のバリアントをロールすることがよくあります。
この決定にはいくつかの理由があります。 FreeBSDはコアオペレーティングシステムの開発と保守を担当しているため、これらのアプリケーションの開発を管理し、BSDライセンスの下に置くことは不可欠または有用です。 これらのツールの一部は、一般に下位互換性が低い傾向があるGNUスイートとは異なり、それらが派生したBSDおよびUnixツールとも密接な機能的関係があります。
これらの違いは、多くの場合、コマンドのオプションと構文に現れます。 Linuxマシンで特定の方法でコマンドを実行することに慣れているかもしれませんが、FreeBSDサーバーでは同じように機能しない場合があります。 FreeBSDバリアントのオプションに慣れるためには、コマンドのman
ページを常にチェックすることが重要です。
標準シェル
混乱を引き起こす可能性のある関連する点は、FreeBSDのデフォルトのシェルがbash
ではないということです。 代わりに、FreeBSDはデフォルトのシェルとしてtcsh
を使用します。
このシェルは、BSD用に開発されたCシェルであるcsh
の改良版です。 bash
シェルはGNUコンポーネントであるため、FreeBSDのデフォルトとしては不適切な選択です。 どちらのシェルも通常、コマンドラインで同じように機能しますが、tcsh
ではスクリプトを実行しないでください。 基本的なBourneシェルsh
を使用すると、信頼性が高くなり、tcsh
およびcsh
スクリプトに関連する十分に文書化された落とし穴の一部を回避できます。
その環境でより快適であれば、シェルをbash
に変更するのは非常に簡単であることも注目に値します。
より階層化されたファイルシステム
FreeBSDは、基本オペレーティングシステムと、その層の上にインストールできるオプションのコンポーネントまたはポートを区別することを何度か述べました。
これは、FreeBSDがファイル構造内のコンポーネントを編成する方法に影響を及ぼします。 Linuxでは、実行可能ファイルは通常、目的とコア機能にとってどれほど重要であるかに応じて、/bin
、/sbin
、/usr/sbin
、または/usr/bin
ディレクトリに配置されます。 。 FreeBSDはこれらの違いを認識しますが、基本システムの一部としてインストールされたコンポーネントとポートとしてインストールされたコンポーネントの間に別のレベルの分離を課します。 基本システムソフトウェアは、上記のディレクトリの1つにあります。 ポートまたはパッケージとしてインストールされるプログラムはすべて、/usr/local/bin
または/usr/local/sbin
内に配置されます。
/usr/local
ディレクトリには、/
または/usr
ディレクトリにある構造をほぼ反映したディレクトリ構造が含まれています。 これは、ポートシステムを介してインストールされるソフトウェアのメインルートディレクトリです。 ポートのほとんどすべての構成は/usr/local/etc
にあるファイルを介して行われ、基本システム構成は通常どおり/etc
に保持されます。 これにより、アプリケーションがベースシステムポートの一部であるかどうかを簡単に認識でき、ファイルシステムをクリーンに保つことができます。
最終的な考え
FreeBSDとLinuxには多くの共通点がありますが、Linuxのバックグラウンドを持っている場合は、それらの違いを認識して理解することが重要です。 それらの経路が分岐する場合、両方のシステムにはそれぞれの利点があり、どちらの陣営の支持者も、行われた選択の理由を指摘することができます。
Linuxレンズを通して見ることを主張する代わりにFreeBSDをそれ自身のオペレーティングシステムとして扱うことはあなたがOSとの戦いを避けるのを助け、そして一般により良い経験をもたらすでしょう。 これまでに、前進する際に注意すべき違いをかなりよく理解していることを願っています。
FreeBSDサーバーを初めて実行する場合は、次のステップとして、FreeBSDの使用を開始するためのガイドを参照してください。