他人の Linux ディストリビューションをインストールするのではなく、独自の Linux ディストリビューションをフォークする 2 つの理由 (そしてそうしない 1 つの理由)
ほとんどの人は、単純に Linux ディストリビューションをインストールすることから始めて、それを調整するのに数週間を費やします。しかし、独自のフォークを構築し、個人使用のためにディストリビューションを動作させると、すべてが逆転します。つまり、自分の選択を最初からシステムに組み込むことになります。おそらくこれが、真の手間のかからないゼロセットアップ インストールを実現する唯一の方法です。
最新のツールにより、このプロセスはこれまでよりもはるかに簡単になりましたが、多くの人が最初から過小評価している重要な取り組みが伴います。
好みやカスタマイズを思いのままに
何を追加できないかは誰も教えてくれません
すべての熱心な Linux ユーザーは、独自のデジタル儀式を開発します。新規インストール後のルーチンは常に同じです。信頼できるリポジトリを追加し、必須パッケージを投入し、デフォルト設定を交換し、ハードウェアが完全に動作するまでカーネル パラメータを微調整します。
ディストリビューションのフォークにはその儀式全体が必要であり、それがスタートラインとなります。システムの内容を正確に定義します は コードの 1 行が実行される前に。その結果、端末を一つずつ作業するのに何時間も費やすことなく、箱から出してすぐに希望通りに動作するオペレーティング システムが実現します。
そして、これを行うためのツールは大幅に成熟しました。プロジェクトにより、開発者はスクリプト定義からオペレーティング システム全体を構築できるようになりました。一部のツールを使用すると、わずかなコード行でカスタム OS を定義でき、基本システムが更新されるたびに自動的に再構築できます。マシン全体を単一の反復可能な設計図のように扱うこの機能は、非常に強力です。
これを行う最大の理由は、実際にすべてのハードウェアの出発点を確保できるようにするためです。ラップトップ、デスクトップ ワークステーション、およびホーム サーバーを管理している場合、パーソナル フォークにより、これら 3 つすべてが同一のベースラインから開始されることが保証されます。これがないと、システムは何年にもわたる手動の特殊な調整によって「バラバラ」になる傾向があります。確かに、まだ疎遠になるかもしれませんが、振り出しに戻るほうが簡単です。
さらに、フォークを使用すると、上流のメンテナが決して触れないような機能、つまり、所有する知られていないハードウェア用のパッチを適用したカスタム ドライバー、特定のデフォルト テーマ、ワークフローに合わせて完全に構築されたプリインストールされたスクリプト、独自のマシンに最適化されたカーネルなどを出荷することができます。お気に入りの廃止された Linux ディストリビューションにそれを組み込んでみることもできます。
また、これを Linux 全般に関するちょっとしたレッスンとして捉えることもできます。言ってみれば、教育的な経験です。ディストリビューションを組み立てると、ブート プロセス、パッケージ マネージャー、およびコア システム コンポーネントがどのように組み合わされるかを深く理解する必要があります。 OS を不可解なブラック ボックスとして見るのをやめ、一連の意図的で構造的な決定として考えるようになります。そして、それらの決定はすべて自分のものです。私に言わせれば、ちょっと詩的ですね。
必要のないものを取り除く
小規模なシステムは高速であり、露出が少なくなります。
主流のディストリビューションは一般向けに構築されていますが、これは通常、特定のユーザー向けに構築されていないことを意味します。デフォルトのデスクトップ インストールでは、所有していないプリンタ、話せない言語から、接続すらされない特殊なハードウェアやバックグラウンド サービスに至るまで、あらゆるものに対応する必要があります。各コンポーネントは単独では問題ありませんが、これらを組み合わせると、単一のユーザーが実際に使用することのない膨大な量の荷物を運ぶシステムが作成されます。
フォークすると、その逆のことができます。大規模で肥大化したインストールからパッケージを削除して何も壊れないことを祈るのではなく、外科的に最小限のベースを定義し、本当に必要なものだけを追加します。
その結果として得られる効率は、しばしば驚くべきものになります。これらの無駄のないビルドは高速であり、さらに重要なことに、より安全です。
インストールされているすべてのパッケージは脆弱性を含む可能性のあるコードであり、実行中のすべてのサービスは潜在的なエントリ ポイントです。使用していないソフトウェアを削除すると、ファイアウォール ルールでは不可能な方法で攻撃対象領域が減少します。また、システムの監査もはるかに簡単になります。厳選されたパッケージの短いリストは、実際に読んで理解できるものです。可動部分が少ないということは、ログが静かになり、依存関係が明確になり、トラブルシューティング時の頭痛の種が少なくなるということを意味します。
隠れたコスト: メンテナンスとセキュリティ
すべてのフォークは本質的に、あなた自身のチームを雇ったことを意味します
私が今述べたことはすべて問題なく、素晴らしいことですが、この記事を最初に開いたときには考えもしなかったかもしれない大きな欠点があります。それはセキュリティです。 Ubuntu または Fedora をインストールすると、大規模な専門開発者チームの恩恵を受けることができます。セキュリティ スタッフは脆弱性を追跡し、パッケージ メンテナは修正をバックポートし、リリース エンジニアはアップグレードが届くまでに膨大な時間を費やしてアップグレードをテストします。
そして、その膨大な量の目に見えない労働がシステムの稼働と安全を維持するものであり、そのすべての作業はセキュリティ更新プログラムの形でコンピューターにダウンロードされます。
したがって、分岐した瞬間に、その責任の多くが直接あなたの肩にのしかかります。つまり、あなたは 1 人の開発チームを雇用していることになります。
どれだけの仕事に取り組むかは、どこまで逸脱するかによって決まります。主要なセキュリティ更新プログラムを自動的に取り込むシステムなど、確立されたベースの上に薄い層を構築すると、最小限の労力でその安全性の多くを継承できます。しかし、手動でパッチを適用したすべてのパッケージ、古いバージョンにピン留めしたすべてのコンポーネントは、元の開発者が対象範囲を保証しなくなったものです。
深刻な脆弱性が発生した場合、あなた以外の誰もカスタム カーネルを再構築したり、ニッチなライブラリを変更したりすることはありません。そして攻撃者は、愛好家が問題を解決するために自由な週末を見つけるのを待っているわけではありません。
メンテナンスの負担には、依存関係の管理も含まれます。上流のディストリビューションは、構成フォーマットの書き換え、デフォルトの変更、場合によってはサブシステム全体の置き換えなど、常に変化します。これらの変更はそれぞれ、カスタム フォークが依存している微妙な前提を破る可能性があり、どこが壊れたのかを発見できるのは、ビルドが失敗した場合、または最悪の場合、ビルドが成功して結果のシステムが起動しなくなった場合のみです。
結論
Linux ディストリビューションをフォークすると、ニーズに合わせて完全にカスタマイズされたシステムが得られます。これは、市販のものよりも効率的で一貫性のあるシステムです。ただし、その制御には代償が伴います。上流チームが通常処理するセキュリティとメンテナンスの作業をすべて吸収することになります。したがって、フォークは誰にでも適しているわけではありませんが、ディストリビューションにコミットする準備ができている場合は、先に進んでください。
このテーマについてさらに詳しく知りたい方は以下をご覧ください