前書き
FreeBSDは、フリーでオープンソースのUnixライクなオペレーティングシステムであり、一般的なサーバープラットフォームです。 FreeBSDや他のBSDベースのシステムはLinuxなどのシステムと多くの共通点を持っていますが、これら2つのファミリが重要な点で異なる点があります。
このガイドでは、FreeBSDとLinuxの重要な違いに関するより広範な議論に進む前に、FreeBSDとLinuxのいくつかの共通点について簡単に説明します。 以下のポイントの多くは、BSD派生システムのより大きなファミリーに正確に適用できますが、焦点の結果として、主にFreeBSDをファミリーの代表として参照します。
FreeBSDとLinuxが共有する特徴
FreeBSDとLinuxが異なる領域の調査を始める前に、これらのシステムに共通するものについて大まかに説明しましょう。
各ファミリが採用する特定のライセンスは異なりますが(これについては後で説明します)、これらのシステムファミリはどちらも無料でオープンソースです。 ユーザーは必要に応じてソースを表示および変更でき、開発は公開で行われます。
FreeBSDとLinuxベースの両方のディストリビューションは、本質的にUnixに似ています。 FreeBSDは過去のUnixシステムに近いルーツを持っていますが、LinuxはUnixのようなオープンな代替としてゼロから作成されました。 この関連付けは、システムの設計に関する決定、コンポーネントの相互運用方法、およびシステムがどのように見えて達成されるべきかについての一般的な期待を通知します。
一般的なUnixライクな動作は、主に両方のファミリがほとんどhttp://en.wikipedia.org/wiki/POSIX[POSIX準拠]であるために発生します。 システムの全体的な感触とデザインはかなり標準化されており、同様のパターンを使用しています。 ファイルシステムの階層も同様に分割され、シェル環境は両方のシステムの相互作用の主要な方法であり、プログラミングAPIも同様の機能を共有しています。
これらの考慮事項により、FreeBSDとLinuxディストリビューションは同じツールとアプリケーションの多くを共有できます。 これらのプログラムのバージョンまたはフレーバーはシステム間で異なることが規定されている場合もありますが、アプリケーションは非Unix系システムよりも簡単に移植できます。
これらの点を念頭に置いて、これら2つのオペレーティングシステムファミリが分岐する領域について説明します。 うまくいけば、これらの共通点が、違いに関する情報をより正確に消化するのに役立つことを願っています。
ライセンスの違い
FreeBSDとLinuxシステムの最も基本的な違いの1つは、ライセンスの問題です。
Linuxカーネル、GNUベースのアプリケーション、およびLinuxの世界を起源とする多くのソフトウェアは、何らかの形式のGPLまたはGNU General Public Licenseの下でライセンスされています。 このライセンスは、しばしば「コピーレフト」ライセンスと呼ばれます。これは、ソースコードを自由に表示、配布、変更できるライセンス形式であり、派生ライセンスはそのライセンスを維持することを要求します。
一方、FreeBSDは、カーネルやFreeBSD貢献者によって作成されたツールを含め、BSDライセンスの下でソフトウェアのライセンスを供与しています。 このライセンスタイプは、ライセンス条項を維持するために二次的作業を必要としないという点で、GPLよりも寛容です。 つまり、変更を貢献したり、作成中の作業のソースをリリースしたりすることなく、あらゆる個人または組織がプログラムを使用、配布、または変更できるということです。 唯一の要件は、元の著作権とBSDライセンスのコピーが派生物のソースコードまたはドキュメント(リリース方法に応じて)に含まれていること、および責任を制限する提供された免責事項が含まれていることです。 メインライセンスは非常に短く、http://choosealicense.com/licenses/bsd-2-clause/ [こちら]にあります。
これらの各ライセンスタイプの魅力は、ほぼ完全に哲学とユーザーのニーズに依存しています。 GPLライセンスは、他のすべての考慮事項よりも共有とオープンなエコシステムを促進します。 独自のソフトウェアは、GPLベースのソフトウェアに依存しないように非常に注意する必要があります。 一方、BSDライセンスソフトウェアは、独自のクローズドソースアプリケーションに自由に組み込むことができます。 これにより、ソフトウェアを直接販売してソースを保持できるため、ソフトウェアの収益化を希望する多くの企業や個人にとってより魅力的になります。
開発者は、あるライセンス哲学を他の哲学より好む傾向がありますが、それぞれに利点があります。 これらのシステムのライセンスを理解することは、それらの開発に入る選択と哲学のいくつかを理解し始めるのに役立ちます。
FreeBSD系統とその意味
FreeBSDとLinuxシステムのもう1つの重要な違いは、各システムの系統と歴史です。 上記で説明したライセンスの違いに加えて、これはおそらく各キャンプが順守している哲学の最大の影響者です。
Linuxは、ヘルシンキ大学で使用していた教育向けでありながら制限的なMINIXシステムを置き換える手段として、Linus Torvaldsによって開発されたカーネルです。 他のコンポーネント(多くはGNUスイートに由来する)と組み合わせると、Linuxカーネル上に構築されたオペレーティングシステムは、以前のUnix OSから直接派生したものではないにもかかわらず、多くの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のオープンライセンスクローンとして動作することを常に意図していたため、Unixの方法に投資し続けています。 これらのルーツは、さらなる開発の方向性に影響を与えており、これが私たちが議論するいくつかの選択の背後にある理由です。
コアオペレーティングシステムと追加のソフトウェアの分離
FreeBSDディストリビューションとLinuxディストリビューションの開発努力とシステム設計に関する重要な違いは、システムの範囲です。 FreeBSDチームはカーネルとベースオペレーティングシステムをまとまりのあるユニットとして開発しますが、Linuxは技術的にカーネルのみを指し、他のコンポーネントはさまざまなソースから提供されます。
これは小さな違いのように思えるかもしれませんが、実際には各システムとの対話方法と管理方法に影響します。 Linuxでは、ディストリビューションは選択されたパッケージのグループを一緒にバンドルし、それらがうまく相互運用できるようにします。 ただし、ほとんどのコンポーネントはさまざまなソースから提供され、ディストリビューションの開発者とメンテナーは、それらを正しく機能するシステムに組み込む必要があります。
この意味で、重要なコンポーネントは、ディストリビューションのリポジトリで利用可能なオプションパッケージとそれほど違いはありません。 ディストリビューションのパッケージ管理ツールを使用して、これらのコンポーネントをまったく同じ方法で追跡および管理します。 ディストリビューションは、特定のパッケージを担当するチームに基づいて異なるリポジトリを維持するため、コア開発チームは使用可能なソフトウェアのサブセットのみを心配する必要がありますが、これは組織的および焦点の違いであり、通常はソフトウェアに違いはありませんユーザーの観点からの管理。
対照的に、FreeBSDはコアオペレーティングシステム全体を管理しています。 カーネルとソフトウェアのコレクションは、その多くがFreeBSD開発者自身によって作成されており、ユニットとして維持されています。 ある意味、モノリシックなソフトウェアのセットであるため、このコアコレクションの一部であるコンポーネントを交換するのは簡単ではありません。 これにより、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のメンテナーはしばしばソフトウェアをパッチで修正しますが、これらは一般的に一部の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はこれらの違いを認識しますが、ベースシステムの一部としてインストールされるコンポーネントとポートとしてインストールされるコンポーネントを別のレベルで分離します。 基本システムソフトウェアは、上記のディレクトリのいずれかにあります。 ポートまたはパッケージとしてインストールされるプログラムはすべて、 `+ / usr / local / bin `または ` / usr / local / sbin +`内に配置されます。
`+ / usr / local `ディレクトリには、ほとんどの場合、 ` / `または ` / usr `ディレクトリにある構造を反映したディレクトリ構造が含まれています。 これは、ポートシステムを介してインストールされるソフトウェアのメインルートディレクトリです。 ポートの設定のほとんどすべては ` / usr / local / etc `にあるファイルを介して行われますが、ベースシステムの設定は通常どおり ` / etc +`に保持されます。 これにより、アプリケーションがベースシステムポートの一部であるかどうかを簡単に認識でき、ファイルシステムをクリーンに保つことができます。
最終的な考え
FreeBSDとLinuxには多くの共通点がありますが、Linuxのバックグラウンドから来ているのであれば、それらの違いを認識して理解することが重要です。 それらの経路が分岐する場合、両方のシステムに利点があり、どちらの陣営からの支持者も、行われた選択の理由を指摘できます。
FreeBSDをLinuxレンズを通して見るのではなく、独自のオペレーティングシステムとして扱うことは、OSとの戦いを避けるのに役立ち、一般的にはより良い体験になります。 これまでに、相違点を十分に理解して、前進する際に注意してください。
FreeBSDサーバーを初めて使用する場合は、https://www.digitalocean.com/community/tutorials/how-to-get-started-with-freebsd-10-1のガイドをご覧ください。 FreeBSDで]。