Для чего эти команды?

10

Вчера мне пришлось установить Windows с переопределением Grub.

Что ж, это не первый раз, когда мне приходилось исправлять Grub, поэтому я использовал LiveCD, смонтировал корневой раздел (у меня нет boot, только /и 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(man-страницы), но я не знаю, почему он использовался в этом примере.

eez0
источник

Ответы:

10

procи sysфайловые системы предоставляются работающим ядром - когда ядро ​​не работает, они перестают существовать. Это означает, что при переходе в другую операционную систему эти файловые системы отсутствуют. Многие программы ожидают, что они существуют, чтобы они могли функционировать, например, им может потребоваться информация о работающей системе или они хотят изменить способ обработки чего-либо ядром. Часто достаточно просто предоставить /procи /sysиз текущего ядра, чтобы эти программы работали как положено.

Символьная ссылка не будет достаточной, так как акт хроматирования сделает недействительными используемые пути к файлам. В Linux вы также не можете жестко связать каталоги (кроме .и ..как предусмотрено mkdir). Это означает, что для зеркалирования этих файловых систем в изолированную среду необходимо использовать третий вариант - монтирование привязки. Связывание монтируется непосредственно ядром и работает как положено в chroot.

Крис Даун
источник
procи sysможет быть установлен в нескольких местах, поэтому --bindне требуется (монтируйте их только дважды). Однако /dev/управляется udev, а не инсайдерским ядром.
Мацей Пехотка
@MaciejPiechotka Я никогда не упоминал / dev, потому что это не в вопросе, но этим не обязательно должен управлять udev.
Крис Даун
Я имел в виду procи sysфайловые системы, которые могут быть смонтированы дважды ( mount -t proc none /mnt/proc), поэтому они вам не нужны mount --bind. devобычно управляется пользовательским пространством (будь то udev, busybox или что-то еще), поэтому вам нужно это сделать. Незначительная точка в любом случае.
Мацей Пехотка
0

--bindОпция позволит точке монтирования , чтобы показать в chroot-ED среды.

Энтон
источник