
在proc
手冊中,它將第四列命名mountinfo
為“root”,並將其描述為“檔案系統中形成此掛載根的目錄的路徑名”。但如何理解呢?
我認為掛載的基本要素是源路徑和目標路徑,既然「掛載源」是第10列,目標是第5列,那麼根是用來做什麼的呢?
對於大多數掛載資訊來說,根只是/
,似乎沒有意義。我只發現綁定安裝的根目錄與 不同/
,所以它只在綁定安裝中有用?在綁定情況下,為什麼不顯示 root 中的絕對路徑?例如,綁定到 時/run/test_dir/a
,/run/test_dir/b
根列顯示/test_dir/a
,為什麼要隱藏該/run
部分?
答案1
很難用語言元素來解釋它(至少用我的英語技能) - 所以我決定做一個基於示例的答案:
根目錄通常稱為最高或者最高的目錄。這只是部分正確。這個目錄假設作為最高目錄。您可以用“我將從這個目錄開始 - 我假設這是最高目錄並且上面沒有任何內容”來描述它。
一些例子來闡明「root」的意思:
- 假設您執行一個 Web 伺服器並將網域的根設定
example.com
為/var/www/html/example.com
.現在您建立一個文件/var/www/html/example.com/test.html
。如果你https://example.com/test.html
在瀏覽器中打開。您將獲得創建的文件的內容。如果你設定/var/www/html
為root,則必須打開https://example.com/example.com/test.html
- 如果你
chroot
進入該目錄/home/test/testSystem/
。這個環境的根源是/home/test/testSystem
.如果您ls
在 chrooted 環境中執行操作,ls /
您將獲得以下內容/home/test/testSystem/
具有 root 權限的掛載點/
例如,USB 包含:
/
├── dir1
│ ├── subfile1
│ └── subfile2
├── file1
├── file2
└── file3
如果您將此 USB 掛載到/mnt
您將獲得預期的正常輸出,因為您使用/
USB 的目錄作為 root:
531 137 0:52 / /mnt rw,nosuid,nodev shared:75 - /dev/sdb [...]
所以在大多數情況下,掛載點的根確實是/
。
具有不同根的安裝點/
您可以自己嘗試一下:將檔案系統中的兩個目錄綁在一起
$ mount --bind /var/test1 /var/test2
的輸出mountinfo
將類似:
564 29 0:26 /var/test1 /var/test2 rw,relatime shared:1 - ext4 /dev/sda rw [...]
位於下面的掛載點的根目錄/var/test2
是/var/test1
。掛載來源(您已掛載的內容)是/dev/sda
回到 USB 範例:如果您現在將內容掛載/mnt/dir1
到其他設備,您將獲得掛載根目錄/dir1
,並且掛載來源將是/dev/sdb
(USB)。該/mnt
部分被丟棄在這裡。
“為什麼要隱藏 /run 部分”
簡而言之:/run
被刪除,因為它是一個 tmpfs 分割區。為什麼這些部件被移除?
在 USB 範例中,我們將dir1
其安裝/dev/sdb
到/home/test/usbmnt/
.輸出將是:
564 29 0:26 /dir1 /home/test/usbmnt/ rw,relatime shared:1 - ext4 /dev/sdb rw [...]
您會看到我們將 /dir1 的內容(來自 USB,而不是來自硬碟)安裝到名為 usbmnt 的目錄中。也許將其讀作有幫助/dev/sdb/dir1
。
如果給出根目錄,因為/mnt/usb/dir1
我們無法知道 USB 上的真實位置:可能是/dir1
,/usb/dir1
或者也許/mnt/usb/dir1