綁定掛載(特別是 rbind)/sys 的目的是什麼?
我正在閱讀 Gentoo 手冊,準備在我的系統上安裝 Gentoo。
在 Chrooting 部分,給出了這些命令:
mount --rbind /sys /mnt/gentoo/sys mount --make-rslave /mnt/gentoo/sys mount --rbind /dev /mnt/gentoo/dev mount --make-rslave /mnt/gentoo/dev
這些是我對本節的疑問:
- 我不是 Linux 專家,但根據我所做的一些探勘,我發現綁定掛載
獲取現有的目錄樹並將其複製到不同的點。綁定掛載中的目錄和文件與原始相同。一側的任何修改都會立即反映在另一側,因為兩個視圖顯示相同的數據。
我不明白的是,在 /mnt/gentoo/sys 中進行綁定安裝有什麼幫助?原始目錄樹位於安裝介質中,將被刪除。所以對媒介所做的任何改變都不會在這裡體現出來。使用此命令而不是
mount -t sysfs sysfs /mnt/gentoo/sys
- 使用 rbind 的目的是什麼?假設綁定掛載的目的只是在 /mnt/gentoo 上創建一個 /sys 文件,而不使用綁定掛載的反射特性,為什麼要使用 rbind?同樣,據我所知,當原始目錄下有掛載點被綁定掛載時,會使用 rbind。但是 /sys 下沒有掛載點嗎?
1.)
/sys
不是真正的磁碟文件系統:它是以虛擬文件系統的形式表示和訪問核心內部狀態的一種方式。它完全基於 RAM,沒有必要將內容儲存/sys
在磁碟上。在某種意義上,您可能會說
/sys
每次核心啟動和檢測到硬體時都會從頭開始重新生成;在另一種意義上,您可能會說/sys
文件系統中的事物實際上根本沒有永久存在,並且僅在您嘗試訪問它們時根據它們應該代表的實際核心狀態按需生成。當你在安裝 Gentoo 的過程中,新的安裝還沒有執行自己的核心,所以新的安裝還不能有自己的獨立核心
/sys
。但是安裝環境有自己的/sys
,並且進行綁定掛載使得“正在建構的系統”借用/sys
了安裝環境的文件系統樹。這使得安裝中的某些任務與升級現有系統時完全相同,因此可以在兩種情況下使用相同的腳本:在升級中,它們按原樣使用,但在安裝期間它們只需要執行 chroot 到/mnt/gentoo
.2.) 在 下
/sys
,可能會或可能不會debugfs
掛載為/sys/kernel/debug
UEFIefivarfs
變數儲存偽文件系統/sys/firmware/efi/efivars
,以及潛在的幾個基於 RAM 的文件系統,用於管理下的各種控制組/sys/fs/cgroup/*
。下面
/dev
至少可以有/dev/pts
,/dev/shm
和/dev/hugepages
/或/dev/mqueue
, 所有各種基於 RAM 的特殊用途文件系統。所以使用 rbind 顯然會簡化事情。