起動時にLinuxまたはUnixで「/」をマウントする方法は?

起動時にLinuxまたはUnixで「/」をマウントする方法は?

特定のパスにデバイスをインストールできます。たとえば、「/dev/sda1」は「/home/user」にマウントできます。私が理解していないのは、起動時に「/」がマウントされる方法と場所です。誰でもこれを説明するのに役立ちますか?

答え1

Unix システムの起動中に、カーネルは通常の操作中に何もしない何らかの操作を実行します。その一つは、ディレクトリにファイルシステムをマウントすることです。/これは、マウントがmountシステムコールによってトリガーされず、ターゲットディレクトリが既存のディレクトリではないため、通常のマウント操作とは大きく異なります。もう一つPID 1でプログラムを実行する、これは通常の作業とは異なります。既存のプロセスの複製

この「魔法の」ルートディレクトリをマウントする方法は、Unixのバリエーションによって大きく異なります。カーネルは、コンパイル時の設定、カーネルイメージのランタイム設定、事前定義されたメモリ位置のランタイム設定、コマンドライン引数など、さまざまな方法で指定できる設定パラメータに基づいてマウントするデバイスを選択します。どのように動作するか、お使いのコンピュータでこれを実行するには、Unixバリアントに関するドキュメントを確認し、お使いのコンピュータがどのように構成されているかを理解する必要があります。

仕組みを理解するために、最新のLinuxカーネルの仕組みの概要を見てみましょう。 Linuxは長い歴史と様々なユースケースを持っているので、これは最も簡単な例ではありません。

  • /Linuxは、RAMに保存されているファイルで構成されたパスに追加された「特殊」ファイルシステムから起動できます。この特別なファイルシステムファイルシステムの初期化;rootfs ファイルシステムタイプのインスタンスです。 initramfsは、アーキテクチャ依存プロトコルを介してブートローダによって配信されたコンテンツで埋められ、ブートローダがメモリにロードしたカーネルイメージに直接コンパイルされます。
  • あるいは、Linuxは、/カーネルの初期化コードによって認識される制限された(しかしより大きい)ボリュームタイプのセットの一部であるデバイスをマウントすることもできます。これらのデバイスタイプには、汎用タイプディスク(ATA、USBなどを含むSCSIなど)の一般タイプパーティション内のすべてのファイルシステム、RAMディスクとNFSマウントが含まれます。
  • 選択したパスに応じて、初期ルートファイルシステムは後で非表示にするか、別のファイルシステムに置き換えることができます。シャドウイングは、ほとんどのデスクトップシステムとサーバーシステムが動作する方法であるinitramfsで発生します(一方、組み込みシステムにはハードコーディングされたルートファイルシステムがあることがよくあります)。交換は何が起こるのか初期化プログラム、特殊なRAMディスクです。 initramfs または initrd の操作は、通常のジョブで使用する「本当の」ルートファイルシステムを提供するドライバーをロードすることです。

答え2

これはbootup(7)Ubuntuシステムのマニュアルから得られたものです。

システムの起動にはさまざまなコンポーネントが含まれます。電源が投入されるとすぐに、システムBIOSは最小限のハードウェア初期化を実行し、永続ストレージに保存されているブートローダに制御を転送します。その後、このブートローダはディスク(またはネットワーク)からオペレーティングシステムカーネルを呼び出します。 Linuxでは、カーネルは(オプションで)ルートファイルシステムを見つけることinitrdによって生成されたものなどの初期RAMディスクイメージ()を抽出して実行します(おそらくこの目的のために)。ルートファイルシステムを見つけてマウントすると、オペレーティングシステムイメージに保存されているホストシステム管理者(たとえば)に制御が渡されます。仕事を担当します。提供する。dracut(8)systemd(1)initrdsystemd(1)

man bootこれを読んでも答えが見つからなくても、bootup(7)マニュアルの下部にある「参照:」を見ることもできます。

好奇心でマニュアルを確認してみましたinitrd

最初のブートフェーズでは、カーネルはブートされ、/dev/initrdコンテンツ(たとえばブートローダによって初期化されたRAMディスク)から初期ルートファイルシステムをマウントします。 2番目のステップでは、最初のルートデバイスのコンテンツから追加のドライバまたは他のモジュールがロードされます。アドインモジュールをロードした後、新しいルートファイルシステム(つまり、通常のルートファイルシステム)が別のデバイスにインストールされます。

「Unix」について言及したので、OpenBSDのドキュメントをお知らせします。ステップ1システムブートそしてセカンドステージブートローダまた。

関連情報