Для чого ці команди?


10

Вчора мені довелося встановити Windows із її перекриттям Grub.

Ну, це не перший раз, коли мені довелося виправити Grub, тому я використав LiveCD, змонтував кореневий розділ (у мене немає завантаження, просто /і home) і запустив grub-install --root-directory=/mnt/ /dev/sda. Однак це не спрацювало.

Після деякого часу в Googling я знайшов підручник, в якому замість того, щоб просто монтувати розділ Linux, він також робив mount --bind /mnt/dev /devі mount --bind /mnt/proc /proc/. Після цього chrootдо /mntі потім встановив Grub, і за допомогою цього методу він працював.

Для чого потрібні mount --bindкоманди? Я знайомий із використанням --bind used(man page), але не знаю, чому це було використано на цьому прикладі.

Відповіді:


10

procа sysфайлові системи забезпечуються запущеним ядром - коли ядро ​​не працює, вони перестають існувати. Це означає, що при хроноване в іншу операційну систему цих файлових систем немає. Багато програм очікують їх існування, щоб вони могли функціонувати, наприклад, їм може знадобитися інформація про працюючу систему або хочуть змінити спосіб, яким ядро ​​щось обробляє. Часто достатньо просто передбачити /procта /sysз поточного ядра, щоб ці програми працювали так, як очікувалося.

Симпосилання не буде достатньою, оскільки акт хронування призведе до недійсності використаних шляхів до файлу. В Linux ви також не можете жорстко зв’язувати каталоги (крім .та .., як це передбачено mkdir). Це означає, що для дзеркального відображення цих файлових систем слід застосовувати третій варіант у хронізованому середовищі - прив'язувати монтаж. Зв’язування забезпечується ядром безпосередньо і працює, як очікувалося, у 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навколишньому середовищі.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.