À quoi servent ces commandes?

10

Hier, j'ai dû installer Windows avec son remplacement Grub.

Eh bien, ce n'est pas la première fois que je dois réparer Grub, j'ai donc utilisé LiveCD, monté la partition racine (je n'ai pas de démarrage, juste /et home) et j'ai couru grub-install --root-directory=/mnt/ /dev/sda. Cependant, cela n'a pas fonctionné.

Après avoir googlé un moment, j'ai trouvé un tutoriel dans lequel au lieu de simplement monter la partition Linux, il a également fait mount --bind /mnt/dev /devet mount --bind /mnt/proc /proc/. Après cela chrootà /mnt, puis installé Grub, et en utilisant cette méthode, cela a fonctionné.

À quoi servent les mount --bindcommandes? Je connais l'utilisation de --bind used(page de manuel) mais je ne sais pas pourquoi il a été utilisé dans cet exemple.

eez0
la source

Réponses:

10

procet les syssystèmes de fichiers sont fournis par le noyau en cours d'exécution - lorsque le noyau n'est pas en cours d'exécution, ils cessent d'exister. Cela signifie que lorsque vous chrootez dans un autre système d'exploitation, ces systèmes de fichiers ne sont pas présents. De nombreux programmes s'attendent à ce qu'ils existent pour pouvoir fonctionner, par exemple, ils peuvent avoir besoin d'informations sur le système en cours d'exécution ou vouloir modifier la façon dont le noyau gère quelque chose. Il suffit souvent de fournir /procet à /syspartir du noyau actuel que ces programmes fonctionnent comme prévu.

Un lien symbolique ne suffirait pas, car l'acte de chrooter invaliderait les chemins de fichiers utilisés. Sous Linux, vous ne pouvez pas non plus créer de liens physiques entre les répertoires (autres que .et .., comme prévu par mkdir). Cela signifie qu'une troisième option doit être utilisée pour mettre ces systèmes de fichiers en miroir dans l'environnement chrooté - montage de liaison. Un montage de liaison est fourni directement par le noyau et fonctionne comme prévu dans un chroot.

Chris Down
la source
procet syspeut être monté à plusieurs endroits, il --bindn'est donc pas nécessaire (ne les montez que deux fois). Cependant, il /dev/est géré par udev et non par un noyau d'initié.
Maciej Piechotka
@MaciejPiechotka Je n'ai jamais mentionné / dev, car ce n'est pas dans la question, mais cela ne doit pas nécessairement être géré par udev.
Chris Down
Je faisais plutôt référence à procet en systant que systèmes de fichiers qui peuvent être montés en double ( mount -t proc none /mnt/proc) afin que vous n'en ayez pas besoin mount --bind. devest généralement géré par l'espace utilisateur (que ce soit udev, busybox ou autre), vous devez donc le faire. Petit point quand même.
Maciej Piechotka
0

L' --bindoption permettra au point de montage de s'afficher dans un chrootenvironnement -ed.

Anthon
la source