オペレーティングシステムへのルートリングはどのように機能しますか?

オペレーティングシステムへのルートリングはどのように機能しますか?

initramfsイメージを手動で構築したり、パーティションにgrubをインストールしたり、破損したインストールを修復するときにLive CDからOSにルートを移動するだけで、オンラインで多くの例を見ることができます。

今、chroot自体の概念は理解するのが難しくありません。ルートを指定したディレクトリに変更し、そのルートを使用してシェルを起動するだけです。必要に応じて環境変数を設定することもできます。

私を混乱させることは、実際のchrootを実行する前に進行する準備、特に仮想ファイルシステムのマウントです。

次の例を見てください。

まず/rootパーティションをマウントします。

$ mount -t ext4 /dev/sda5 /mnt/ubuntu

次に、仮想ファイルシステムをマウントします。

$ mount -t proc none /mnt/ubuntu/proc
$ mount -o bind /dev /mnt/ubuntu/dev
$ mount -o bind /sys /mnt/ubuntu/sys

これが私を混乱させることです。この仮想ファイルシステムはLiveCD用ですか?ルートを変更したいオペレーティングシステムでどのように機能しますか?彼らは他のオペレーティングシステムに属します。

たとえば、回答以前の質問に対してインストールに上記のコマンドが必要なのは、update-initramfs カーネルイメージを作成する前にオペレーティングシステムに関する情報が必要なためです。それでは、ここでどのようにこれが起こりますか?カーネルイメージをビルドしたOSではなく、LiveCDからファイルシステムをマウントしています。したがって、ターゲットオペレーティングシステムの情報ではなく、LiveCDの情報を使用します。 これはLiveCD用のカーネルイメージを作成するのと同じです。理想的なものは何ですか? (間違っている場合は訂正してください)

そしてなぜ必要ですか?ただインストールするのではなく、バンドルでインストールするのはなぜですか?

これまで、この例では通常、上記の手順を実行した後に実際のchrootコマンドが実行されます。

$ chroot /mnt

これまで、上記の問題の明確な説明が見つかりませんでした。誰かが素人の言葉で説明できることを願っています。

答え1

/proc実行中のカーネルへのインターフェースであり、/sys実際にインストールされているオペレーティングシステムとは関係ありません。/devとにかくすべて同じです。

ほとんどのプログラムにはこれらのディレクトリが必要です。ただし、事前に準備する必要はありませんchrootchroot純粋なルートボリュームに移動して、そこから残りをインストールできます(OSが起動するときと同じように)。

関連情報