这些命令是做什么用的?


10

昨天,我必须安装带有Grub覆盖的Windows。

好吧,这不是我第一次修复Grub,所以我使用LiveCD,安装了根分区(我没有启动,只有/and home),然后运行了grub-install --root-directory=/mnt/ /dev/sda。但是,它没有用。

在谷歌搜索了一段时间之后,我发现了一个教程,其中不仅安装了Linux分区,而且还做了mount --bind /mnt/dev /devmount --bind /mnt/proc /proc/。在那之后chroot/mnt再安装蛴螬,以及使用这种方法,它的工作。

这些mount --bind命令是做什么用的?我熟悉--bind used(手册页)的用法,但不知道为什么在此示例中使用了它。

Answers:


10

procsys内核时没有运行,则不复存在-由运行内核提供的文件系统。这意味着当您切换到另一个操作系统时,这些文件系统不存在。许多程序希望它们存在,以便它们可以运行,例如,它们可能需要有关正在运行的系统的信息,或者想要修改内核处理某些事物的方式。通常,只需提供/proc/sys从当前内核提供这些程序即可正常工作就足够了。

一个符号链接是不够的,因为chrooting的行为会使使用的文件路径无效。在Linux中,您也不能硬链接目录(...,由提供的mkdir除外)。这意味着必须使用第三个选项将这些文件系统镜像到chroot环境-绑定安装。绑定安装由内核直接提供,并在chroot中按预期工作。


proc并且sys可以安装在多个位置,因此--bind不需要(只需安装两次)。但是/dev/由udev管理,而不是内部内核。
Maciej Piechotka,

@MaciejPiechotka我从来没有提到过/ dev,因为这不是问题所在,但是不必由udev来管理。
克里斯·

我更指proc,并sys为文件系统可以是双支承(mount -t proc none /mnt/proc),这样你就不必需要mount --bind他们。dev通常由用户空间(无论是udev,busybox还是其他任何东西)管理,因此您需要这样做。无论如何,次要点。
Maciej Piechotka,

0

--bind选项将使安装点显示在chroot-ed环境中。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.