A cosa servono questi comandi?


10

Ieri ho dovuto installare un Windows con la sua sostituzione Grub.

Bene, non è la prima volta che devo riparare Grub, quindi ho usato LiveCD, ho montato la partizione di root (non ho il boot, solo /e home) e ho funzionato grub-install --root-directory=/mnt/ /dev/sda. Tuttavia, non ha funzionato.

Dopo aver cercato su Google per un po 'ho trovato un tutorial in cui invece di montare solo la partizione Linux, ha anche fatto mount --bind /mnt/dev /deve mount --bind /mnt/proc /proc/. Dopo quello chrootsu /mnte poi installato Grub, e usando questo metodo, ha funzionato.

A cosa servono i mount --bindcomandi? Ho familiarità con l'uso di --bind used(pagina man) ma non so perché sia ​​stato usato in questo esempio.

Risposte:


10

proce i sysfilesystem sono forniti dal kernel in esecuzione - quando il kernel non è in esecuzione, cessano di esistere. Ciò significa che quando si esegue il chroot in un altro sistema operativo, questi filesystem non sono presenti. Molti programmi si aspettano che esistano in modo che possano funzionare, ad esempio, potrebbero richiedere informazioni sul sistema in esecuzione o voler modificare il modo in cui il kernel gestisce qualcosa. Spesso è sufficiente semplicemente fornire /proce /sysdal kernel corrente affinché questi programmi funzionino come previsto.

Un collegamento simbolico non sarebbe sufficiente, poiché l'atto di chrooting invaliderebbe i percorsi dei file utilizzati. In Linux, inoltre, non è possibile creare hard link in directory (diverse da .e .., come fornite da mkdir). Ciò significa che è necessario utilizzare una terza opzione per eseguire il mirroring di questi filesystem nell'ambiente chroot: il binding di montaggio. Un mount di bind è fornito direttamente dal kernel e funziona come previsto all'interno di un chroot.


proce syspuò essere montato in più punti, quindi --bindnon è necessario (montarli solo due volte). Tuttavia /dev/è gestito da udev non da un kernel interno.
Maciej Piechotka,

@MaciejPiechotka Non ho mai menzionato / dev, perché non è nella domanda, ma non deve necessariamente essere gestito da udev.
Chris Down

Mi è stato più riferivo a proce syscome file system che può essere montato doppio ( mount -t proc none /mnt/proc) in modo da fare non è necessario bisogno di mount --bindloro. devdi solito è gestito dallo spazio utente (sia esso udev, busybox o qualsiasi altra cosa) quindi è necessario farlo. Punto minore comunque.
Maciej Piechotka,

0

L' --bindopzione consentirà al punto di montaggio di apparire in un chrootambiente -ed.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.