Untuk apa perintah-perintah ini?

10

Kemarin saya harus menginstal Windows dengan menimpanya Grub.

Yah, ini bukan pertama kalinya saya harus memperbaiki Grub, jadi saya menggunakan LiveCD, me-mount partisi root (saya tidak punya boot, hanya /dan home) dan berlari grub-install --root-directory=/mnt/ /dev/sda. Namun, itu tidak berhasil.

Setelah Googling beberapa saat saya menemukan tutorial di mana bukan hanya me-mount partisi Linux, dia juga melakukannya mount --bind /mnt/dev /devdan mount --bind /mnt/proc /proc/. Setelah itu chrootuntuk /mntdan kemudian menginstal Grub, dan menggunakan metode ini, itu berhasil.

Untuk apa mount --bindperintahnya? Saya terbiasa dengan penggunaan --bind used(halaman manual) tapi saya tidak tahu mengapa itu digunakan pada contoh ini.

eez0
sumber

Jawaban:

10

procdan sysfilesystem disediakan oleh kernel yang berjalan - ketika kernel tidak berjalan, mereka tidak ada lagi. Ini berarti bahwa ketika Anda melakukan chroot ke sistem operasi lain, sistem file ini tidak ada. Banyak program berharap mereka ada sehingga mereka dapat berfungsi, misalnya, mereka mungkin memerlukan informasi tentang sistem yang sedang berjalan, atau ingin memodifikasi cara kernel menangani sesuatu. Seringkali cukup hanya untuk menyediakan /procdan /sysdari kernel saat ini untuk program-program ini untuk bekerja seperti yang diharapkan.

Symlink tidak akan cukup, karena tindakan chrooting akan membatalkan jalur file yang digunakan. Di Linux, Anda juga tidak dapat menghubungkan tautan direktori (selain .dan .., seperti yang disediakan oleh mkdir). Ini berarti bahwa opsi ketiga harus digunakan untuk mencerminkan sistem file ini ke lingkungan chroot - bind mounting. Bind mount disediakan oleh kernel secara langsung, dan berfungsi seperti yang diharapkan dalam chroot.

Chris Down
sumber
procdan sysdapat dipasang di banyak tempat sehingga --bindtidak diperlukan (hanya pasang dua kali). Namun /dev/dikelola oleh udev bukan kernel insider.
Maciej Piechotka
@MaciejPiechotka Saya tidak pernah menyebutkan / dev, karena itu tidak ada dalam pertanyaan, tapi itu tidak harus dikelola oleh udev.
Chris Down
Saya lebih merujuk ke procdan syssebagai filesystem yang dapat di-mount ( mount -t proc none /mnt/proc) sehingga Anda tidak perlu melakukannya mount --bind. devbiasanya dikelola oleh userspace (baik itu udev, busybox atau apa pun) sehingga Anda perlu melakukannya. Poin kecil pula.
Maciej Piechotka
0

The --bindpilihan akan memungkinkan mount point untuk muncul dalam chrootlingkungan -ed.

Anthon
sumber