昨天我必须安装一个带有 Grub 覆盖的 Windows。
好吧,这不是我第一次修复 Grub,所以我使用 LiveCD,安装根分区(我没有启动,只有/
和home
)并运行grub-install --root-directory=/mnt/ /dev/sda
。然而,这并没有奏效。
经过谷歌搜索一段时间后,我发现了一个教程,其中他不仅安装了 Linux 分区,还安装了mount --bind /mnt/dev /dev
和mount --bind /mnt/proc /proc/
。然后chroot
安装/mnt
Grub,用这个方法,就成功了。
命令的用途是什么mount --bind
?我熟悉--bind used
(手册页)的用法,但我不知道为什么在这个示例中使用它。
答案1
proc
文件sys
系统由正在运行的内核提供——当内核不运行时,它们就不再存在。这意味着当您 chroot 到另一个操作系统时,这些文件系统不存在。许多程序期望它们存在以便它们能够运行,例如,它们可能需要有关正在运行的系统的信息,或者想要修改内核处理某些内容的方式。通常,只需提供当前内核即可使这些程序按预期工作/proc
。/sys
符号链接是不够的,因为 chroot 操作会使所使用的文件路径无效。在 Linux 中,您也不能硬链接目录(除了.
和..
,由 提供mkdir
)。这意味着必须使用第三个选项将这些文件系统镜像到 chroot 环境——绑定安装。绑定挂载由内核直接提供,并在 chroot 中按预期工作。
答案2
该--bind
选项将允许安装点显示在chroot
-ed 环境中。