Para que servem esses comandos?

10

Ontem tive que instalar um Windows com sua substituição do Grub.

Bem, não foi a primeira vez que corrigi o Grub, então usei o LiveCD, montei a partição raiz (não tenho inicialização, apenas /e home) e executei grub-install --root-directory=/mnt/ /dev/sda. No entanto, não funcionou.

Depois de pesquisar um pouco no Google, encontrei um tutorial no qual, em vez de apenas montar a partição Linux, ele também criou mount --bind /mnt/dev /deve mount --bind /mnt/proc /proc/. Depois que chroota /mnte depois instalado Grub, e usando este método, funcionou.

Para que servem os mount --bindcomandos? Estou familiarizado com o uso de --bind used(página de manual), mas não sei por que ele foi usado neste exemplo.

eez0
fonte

Respostas:

10

proce os syssistemas de arquivos são fornecidos pelo kernel em execução - quando o kernel não está em execução, eles deixam de existir. Isso significa que, quando você entra em outro sistema operacional, esses sistemas de arquivos não estão presentes. Muitos programas esperam que eles existam para que possam funcionar, por exemplo, podem exigir informações sobre o sistema em execução ou querer modificar a maneira como o kernel lida com algo. Geralmente, basta fornecer /proce /sysdo kernel atual para esses programas funcionarem conforme o esperado.

Um link simbólico não seria suficiente, pois o ato de chroot invalidaria os caminhos de arquivo usados. No Linux, você também não pode vincular diretórios físicos (exceto .e .., conforme fornecido por mkdir). Isso significa que uma terceira opção deve ser usada para espelhar esses sistemas de arquivos no ambiente chroot - montagem de ligação. Uma montagem de ligação é fornecida diretamente pelo kernel e funciona como esperado dentro de um chroot.

Chris Down
fonte
proce syspode ser montado em vários locais, --bindnão sendo necessário (monte-os apenas duas vezes). No entanto, /dev/é gerenciado pelo udev e não pelo núcleo.
Maciej Piechotka
@MaciejPiechotka Eu nunca mencionei o / dev, porque não está em questão, mas isso não precisa ser gerenciado pelo udev necessariamente.
Chris Down
Eu estava me referindo mais proce syscomo sistemas de arquivos que podem ser montados duas vezes ( mount -t proc none /mnt/proc) para que você não precise mount --binddeles. devgeralmente é gerenciado pelo espaço do usuário (seja udev, busybox ou qualquer outra coisa), então você precisa fazer isso. Ponto menor de qualquer maneira.
Maciej Piechotka
0

A --bindopção permitirá que o ponto de montagem apareça em um chrootambiente de distribuição.

Anthon
fonte