Windows system >> Windowsの知識 >  >> Linuxシステムチュートリアル >> Linuxチュートリアル >> Linuxの起動時にrootfsをマウントする方法はいくつかあります

Linuxの起動時にrootfsをマウントする方法はいくつかあります

  

Linuxの起動時にrootファイルシステムをマウントするプロセスについて多くの質問がありましたが、今日はShuimu Essenceエリアで役に立つ情報が見つかりました。 > 1。 Linuxの起動時には、一連の初期化の後、initプロセスの最後の実行に備えてルートファイルシステムをマウントする必要があります。ルートファイルシステムをマウントするには、いくつかの方法があります。またはパーティション上の同様のデバイス)では、カーネルはコマンドラインパラメータ(root = /dev /xxx)に従って直接マウントします。これは問題です。ルートファイルシステム自体が存在しない場合、カーネルは/dev /xxxに従って対応するデバイスをどのように見つけますか?注:ルートファイルシステムと他のファイルシステムのマウントモードは異なり、カーネルはデバイスの名前を直接解析してデバイスのマスターとスレーブのデバイス番号を取得してから、対応するデバイスドライバにアクセスします。そのため、init /main.cには、(hda、hdab、sda、sdb、nfs、ram、mtdblock……などの)root_dev_nameの長い文字列があり、それを通してデバイス名に基づいてデバイス番号を取得できます。ブートローダまたはカーネル(root = /dev /xxx)に設定されたブートパラメータは単なるコード名であり、デバイスファイルは必ずしも実際のルートファイルシステムに存在するわけではありません。

2)フロッピーディスクドライブなどの遅いデバイスからルートファイルシステムをロードするカーネルがramdiskをサポートしている場合、ルートファイルシステムがマウントされると、カーネルはフロッピーディスクからマウントする必要があると判断します(fdx)(root = /dev /fd0)。 )、一般的にはデバイスram0に対応するRAMディスクにファイルシステムイメージを自動的にコピーしてから、ram0にルートファイルシステムをマウントします。ソースコードから、コンパイル時にカーネルがRAMディスクをサポートしておらず、起動パラメータがroot = /dev /fd0である場合、システムはフロッピーディスクに直接マウントされます。ただし、速度は遅く、理論的には可能です。そうではありませんか?)

3)起動時にinitrdを使用してルートファイルシステムをマウントします。 ramdiskとinitrdの2つの概念に注意してください。実際、ramdiskはハードディスク操作と同様にramに実装された単なるブロックデバイスですが、読み書き速度が速いので、システムの稼働中はいつでも使用できます。 Initrd(ブートローダー初期化RAMディスク)は、起動プロセスで使用されるメカニズムであると言えます、具体的な実装プロセスもラムディスク技術を使用しています。 Linuxをロードする直前に、ブートローダは比較的小さなルートファイルシステムイメージをメモリ内の指定された場所にロードし、このメモリをinitrdと呼びます(ここではramdiskではなくinitrdが占有するメモリですが、違いに注意してください)。その後、ブートローダは引数を渡すことでinitrdの開始アドレスとサイズをカーネルに伝え(カーネルでこれらのパラメータをコンパイルすることもできます)、ブートフェーズ中に一時的にinitrdを使ってルートファイルシステムをマウントすることができます。 initrdの当初の目的は、カーネルの起動を2段​​階に分けることです。最低限の基本的な起動コードをカーネル内に保持し、initrd内のさまざまなハードウェアデバイスのサポートをモジュールとして追加することです。必要なモジュールは、initrdが起動時にマウントされているルートファイルシステムからロードできます。利点の1つは、カーネルを変更せずにinitrdの内容を変更することで、さまざまなハードウェアを柔軟にサポートできることです。ブートプロセスの最後に、ルートファイルシステムを他のデバイスに再マウントすることができますが、再マウントすることができます(これは多くの組み込みシステムの場合です)。ブートローダは、ルートファイルシステムのイメージをメモリの指定された場所にロードし、関連するパラメータをカーネルに渡しますカーネルの起動時に、initrdの内容がRAMディスク(ram0)にコピーされ、initrdが占有するメモリが使用されます。リリース、ルートファイルシステムをram0にマウントする。このプロセスからわかるように、カーネルはRAMディスクとinitrdの両方をサポートする必要があります(このニーズはカーネルにプログラムされており、モジュールとして使用することはできません)。

2。組み込みシステムのルートファイルシステムの実装方法:カーネルとルートファイルシステムはフラッシュシステムに格納されているため、一般的にlinuxによって開始されたinitrdのメカニズムを使用することができます。具体的なプロセスは比較的はっきりしていますが、起動パラメータにroot = /dev /ram0を渡すことで、initrdによってマウントされたルートファイルシステムは切り替えられなくなります。仮想アドレスとしてinitrdの開始アドレスパラメータもあります。これはブートローダで使用される物理アドレスに対応する必要があります。
zh-CN"],null,[1],zh-TW"]]]

Copyright © Windowsの知識 All Rights Reserved