Những lệnh này để làm gì?


10

Hôm qua tôi đã phải cài đặt một Windows với ghi đè Grub của nó.

Chà, đây không phải là lần đầu tiên tôi phải sửa Grub, vì vậy tôi đã sử dụng LiveCD, gắn phân vùng gốc (tôi không có boot, chỉ /home) và chạy grub-install --root-directory=/mnt/ /dev/sda. Tuy nhiên, nó đã không hoạt động.

Sau khi Googling một lúc, tôi tìm thấy một hướng dẫn trong đó thay vì chỉ cài đặt phân vùng Linux, anh ấy cũng đã làm mount --bind /mnt/dev /devmount --bind /mnt/proc /proc/. Sau đó chroottới /mntvà sau đó cài đặt Grub, và sử dụng phương pháp này, nó làm việc.

Các mount --bindlệnh để làm gì? Tôi quen thuộc với cách sử dụng --bind used(trang man) nhưng tôi không biết tại sao nó lại được sử dụng trong ví dụ này.

Câu trả lời:


10

procvà các syshệ thống tập tin được cung cấp bởi kernel đang chạy - khi kernel không chạy, chúng sẽ ngừng tồn tại. Điều này có nghĩa là khi bạn chroot vào một hệ điều hành khác, các hệ thống tập tin này không có mặt. Nhiều chương trình mong muốn chúng tồn tại để chúng có thể hoạt động, ví dụ, chúng có thể yêu cầu thông tin về hệ thống đang chạy hoặc muốn sửa đổi cách xử lý kernel. Nó thường đủ đơn giản để cung cấp /proc/systừ kernel hiện tại để các chương trình này hoạt động như mong đợi.

Một liên kết tượng trưng sẽ không đủ, vì hành động chroot sẽ làm mất hiệu lực các đường dẫn tệp được sử dụng. Trong Linux, bạn cũng không thể có các thư mục liên kết cứng (ngoài ..., như được cung cấp bởi mkdir). Điều này có nghĩa là một tùy chọn thứ ba phải được sử dụng để phản chiếu các hệ thống tập tin này vào môi trường chroot - gắn kết liên kết. Một liên kết gắn kết được cung cấp bởi kernel trực tiếp và hoạt động như mong đợi trong một chroot.


procsyscó thể được gắn ở nhiều nơi vì vậy --bindkhông cần thiết (chỉ gắn chúng hai lần). Tuy nhiên /dev/được quản lý bởi udev không phải người trong cuộc.
Maciej Piechotka

@MaciejPiechotka Tôi chưa bao giờ đề cập / dev, vì nó không có trong câu hỏi, nhưng điều đó không nhất thiết phải được quản lý bởi udev.
Chris Xuống

Tôi đã đề cập nhiều hơn procsysnhư các hệ thống tập tin có thể được gắn kết đôi ( mount -t proc none /mnt/proc) vì vậy bạn không cần mount --bindchúng. devthường được quản lý bởi không gian người dùng (có thể là udev, busybox hoặc bất cứ thứ gì khác) vì vậy bạn cần phải làm điều đó. Điểm nhỏ nào.
Maciej Piechotka

0

Các --bindtùy chọn sẽ cho phép các điểm gắn kết để hiển thị trong một chrootmôi trường -ed.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.