いくつかの背景:
最近、インストールスクリプトを使用してUbuntuをインストールし、Ubuntu rootfsをArch rootfsで上書きする奇妙な方法でChromebookにArch Linuxをインストールしました。このメカニズムが何であるかよくわかりません(下の図を参照)。https://wiki.archlinux.org/index.php/Acer_C7_Chromebook)。
すべてのLinuxディストリビューションに共通のrootfsでrootを指定する前に実行されるLinuxの一部ですか(これが最初のブートがArchとUbuntuの両方で機能する理由です)。それとも、より一般的には、すべてのLinuxディストリビューションに共通して使用されるソフトウェア、つまりLinuxディストリビューションを定義するソフトウェアは何ですか?
答え1
質問#1:またはより一般的には、すべてのLinuxディストリビューションで共通に使用されるソフトウェア、つまりLinuxディストリビューションを定義するソフトウェアは何ですか?
GNU / Linuxディストリビューションについて話している場合は、ディストリビューション全体でユーザー領域がほぼ同じであると推測できます。
GNU Coreutils、GNU Binutils、GNU Bash、GNU Compiler Collectionなどを使用せずに実行することは考えられません。
今、あなたが望むものがLinuxディストリビューションを構成する要素の定義であれば、次のような文で表現してみてください。これはLinuxカーネルであり、ユーザースペースがあります。このカーネルは、ユーザーに役立つカーネル上で実行されるソフトウェアのセットです。。
ほとんどのLinuxディストリビューションまた、一種のソフトウェア管理システムを使用してください。たとえば、ソフトウェアのインストールと設定を簡素化するために、(Debian のようなバイナリパッケージの管理や Gentoo のようなソースパッケージの管理による)一部のディストリビューション専用ソフトウェアdebconf
、管理ツール(DebianやOpenSuseなどが考えられるyast
)のようなものです。もっと明確な答えが必要な場合は、ぜひご覧ください。最初からLinux
Q#2:rootfsでchrootする前に実行されているLinuxの一部は、すべてのLinuxディストリビューションに共通です(これが最初のブートがArchとUbuntuの両方で機能する理由です)。
はい、いいえ。ほとんどのディストリビューションでは、次の手順を少し変更したバージョンを使用していますが、技術の選択は部分的に異なる場合があります。たとえば、さまざまなブートローダ(GRUB、Liloなど)があります。
Wikipedia記事のタイトルから抜粋:Linuxブートプロセス
- BIOSはハードウェアプラットフォーム固有の起動操作を実行します。
- ハードウェアが正しく認識されブートされると、BIOSは指定されたブートデバイスからLinuxブートローダの手順1を含むパーティションブートコードをロードして実行します。ステップ1では、ステップ2(ほとんどのブートローダコード)をロードします。一部のローダーはこれを達成するために中間段階(ステップ1.5と呼ばれる)を使用するかもしれません。最新の大型ディスクは、追加のコードがなければ完全に読み取れないからです。
- ブートローダは通常、ユーザーに可能なブートオプションメニューを提供します。次に、オペレーティングシステムをロードしてメモリに解凍し、start_kernel()を呼び出す前に、基本ハードウェアやメモリページングなどのシステム機能を設定します。
- その後、start_kernel()は、アイドルプロセスとスケジューラプロセスとInitプロセス(ユーザースペースで実行されます)をそれぞれ作成する前に、ほとんどのシステム設定(割り込み、残りのメモリ管理、デバイスの初期化、ドライバなど)を実行します。
- Initプロセスは、必要に応じてスクリプトを実行し、オペレーティングシステムではなくすべてのサービスと構造を設定してユーザーエクスペリエンスを作成し、ユーザーにログイン画面を表示します。
詳しくは
明らかな複雑さ(第一段階ブートローダを第二段階と呼ぶ)は、PCの歴史に関連しています。 PCの歴史は、IBMや他の企業がさまざまなサブシステムの設計と連携する方法を標準化するにつれて、すべてがしっかりと確立されています。
もう1つの複雑さは、さまざまなコンポーネントがモジュール式で交換可能なLinuxの性質に由来します。このモジュラー設計はコストがかかり、ここでアーキテクチャの過度のエンジニアリングを見ることができます。 Linuxはさまざまなハードウェアプラットフォームで起動でき、さまざまなファイルシステムをサポートできるため、これは部分的にこれらすべての選択の結果です。