少しコンテキスト:
最近、インストールスクリプトを使用してUbuntuをインストールし、UbunturootfsをArchrootfsで上書きするという奇妙なハックを通じて、ArchLinuxをChromebookにインストールしました。この背後にあるメカニズムがわかりません(次のように: https://wiki.archlinux.org/index.php/Acer_C7_Chromebook )。
Rootfsにchrootする前に実行されるLinuxの部分は、すべてのLinuxディストリビューションに共通ですか(そのため、最初の起動はArchとUbuntuの両方で機能しました)?または、より一般的には、すべてのLinuxディストリビューションに共通するソフトウェアは何ですか?つまり、Linuxディストリビューションを定義しますか?
Q#1:または、より一般的には、すべてのLinuxディストリビューションに共通するソフトウェアは何ですか?つまり、Linuxディストリビューションを定義しますか?
GNU/Linuxディストリビューションについて話している場合、ユーザーランドはディストリビューション間でほぼ同じであると確信できます。
GNU Coreutils、GNU Binutils、GNU Bash、GNUコンパイラコレクションなどを使用せずに逃げることはできません。 。
ここで、Linuxディストリビューションの構成要素の定義だけが必要な場合は、一文でそれがLinuxカーネルであり、ユーザーランド、つまり上で実行するソフトウェアのセットです。あなたに役立つようにするためのそのカーネルの。
ほとんどのLinuxディストリビューションは、ソフトウェアのインストールと構成を容易にするために、ある種のソフトウェア管理システムも使用しています(Debianのようなバイナリパッケージ管理によるものか、 Gentooのようなソースパッケージ管理)、そして時々、いくつかのディストリビューション固有のソフトウェア、例えば管理ツール(私はdebconf
を考えることができますDebian、またはOpenSuseの場合はyast
など)。 より明確な答えが必要な場合は、間違いなく Linux From Scratchを参照してください。
Q#2:rootfsにchrootする前に実行されるLinuxの部分は、すべてのLinuxディストリビューションに共通ですか(そのため、最初の起動はArchとUbuntuの両方で機能しました)?
はいといいえ。ほとんどのディストリビューションは、以下の手順のわずかに変更されたバージョンを使用しますが、異なる部分のテクノロジーの選択は異なる場合があります。たとえば、さまざまなブートローダー(GRUB、Liloなど)。
ウィキペディアの記事からの抜粋: Linuxスタートアッププロセス
- BIOSは、ハードウェアプラットフォーム固有の起動タスクを実行します
- ハードウェアが認識されて正しく起動されると、BIOSは、Linuxブートローダーのフェーズ1を含む指定されたブートデバイスからパーティションブートコードをロードして実行します。フェーズ1はフェーズ2(ブートローダーコードの大部分)をロードします。一部のローダーは、これを実現するために中間フェーズ(フェーズ1.5と呼ばれる)を使用する場合があります。これは、最近の大きなディスクは、追加のコードがないと完全に読み取れない場合があるためです。
- ブートローダーは、多くの場合、可能なブートオプションのメニューをユーザーに提示します。次に、start_kernel()を呼び出す前に、メモリに解凍するオペレーティングシステムをロードし、重要なハードウェアやメモリページングなどのシステム関数を設定します。
- 次に、start_kernel()は、システムセットアップの大部分(割り込み、残りのメモリ管理、デバイスの初期化、ドライバーなど)を実行してから、アイドルプロセスとスケジューラー、およびInitプロセス(ユーザースペースで実行)を個別に生成します。
- Initプロセスは、ユーザー環境を作成できるようにするために、すべての非オペレーティングシステムサービスと構造をセットアップするスクリプトを必要に応じて実行し、ユーザーにログイン画面を表示します。
見た目の複雑さの多く(フェーズ2を呼び出すフェーズ1ブートローダー)は、PCが成長した歴史と関係があり、IBMやその他の企業がさまざまなサブシステムの設計と、それらがどのように連携するかを標準化するにつれて、物事はボルトで固定されました。
もう1つの複雑さは、さまざまなコンポーネントがモジュール式で交換可能であるLinuxの性質に起因します。このモジュラー設計には価格が伴います。これは、アーキテクチャの過剰設計で見られます。 Linuxは多数のハードウェアプラットフォームで起動でき、さまざまなファイルシステムをサポートしているため、これは部分的にこれらすべての選択の結果であることに注意してください。