昨日、Grubオーバーレイを含むWindowsをインストールする必要がありました。
さて、Grubを修正したのは今回が初めてではなかったので、LiveCDを使用してルートパーティションをマウントしてから(起動せずにのみ/
)home
実行しましたgrub-install --root-directory=/mnt/ /dev/sda
。しかし、これはうまくいきませんでした。
しばらくのインターネット検索の最後に、彼はLinuxパーティションをインストールしただけmount --bind /mnt/dev /dev
でなくmount --bind /mnt/proc /proc/
。その後、Grubをchroot
インストールし/mnt
、この方法を使用して成功します。
コマンドの目的は何ですかmount --bind
?私は--bind used
使い方(manページ)に精通していますが、この例ではそれがなぜ使用されたのかわかりません。
答え1
proc
ファイルシステムは、sys
実行中のカーネルによって提供されます。カーネルが実行されていない場合はもう存在しません。つまり、別のオペレーティングシステムにchrootすると、これらのファイルシステムは存在しません。多くのプログラムは実行のために存在を期待しています。たとえば、実行中のシステムに関する情報が必要な場合や、カーネルが何かを処理する方法を変更したいとします。通常、現在のカーネルを提供するだけで、これらのプログラムが期待どおりに機能するようにするのに十分です/proc
。/sys
chroot操作によって使用されるファイルパスが無効になるため、シンボリックリンクでは不十分です。 Linuxでは、ディレクトリをハードリンクすることはできません(提供されているものを.
除く)。これは、これらのファイルシステムが3番目のオプションであるバインドマウントを使用してchroot環境にミラーリングされる必要があることを意味します。バインドマウントはカーネルから直接提供され、chrootで期待どおりに動作します。..
mkdir
答え2
このオプションを使用すると、-ed環境--bind
でマウントポイントを表示できます。chroot