Fhs

哪些目錄應該與根“/”文件系統位於同一文件系統上?

  • October 10, 2021

我讀了一篇文章,它指出“bin”“dev”“etc”“lib”“root”“sbin”目錄應該與根目錄在同一個文件系統中,也就是說,它們不應該作為單獨的文件系統掛載.

我有點困惑,例如,在許多發行版中,現在“sbin”“bin”和“lib”目錄符號連結到“usr”目錄。

lrwxrwxrwx   1 root root     7 Apr 30 18:19 bin -> usr/bin
...
lrwxrwxrwx   1 root root     7 Apr 30 18:19 lib -> usr/lib
lrwxrwxrwx   1 root root     9 Apr 30 18:19 lib32 -> usr/lib32
lrwxrwxrwx   1 root root     9 Apr 30 18:19 lib64 -> usr/lib64
lrwxrwxrwx   1 root root    10 Apr 30 18:19 libx32 -> usr/libx32
...
lrwxrwxrwx   1 root root     8 Apr 30 18:19 sbin -> usr/sbin

但是,文章並沒有規定“/”目錄和usr目錄必須在同一個文件系統上。我也看過之前的問題,但我仍然感到困惑。哪些目錄必須在同一個文件系統中,哪些應該保存在不同的文件系統中?

目前的構想是/usr應該集成到/, 並且一些發行版只是符號連結/bin, /sbin,/lib/usr你看到的等價物。例如Debian,它只支持/usr從下一個版本(書蟲開始合併,而Fedora 似乎已經在 2012 年的 Fedora 17 中完成了合併

基本上,對此的論點似乎可以歸結為

  • 無論如何都要使系統進入可用狀態,這就是工作initramfs,所以不需要另一個“最小”系統來做到這一點
  • 無論如何,拆分並沒有真正起作用,因為安裝的程序/usr/bin可能依賴於 中的庫/lib,因此它們無論如何都不是完全獨立的
  • 分裂的整個想法是一個歷史性的意外,只是在最初的原因變得無關緊要之後繼續發生。

無論如何,/文件系統並不是那麼小,例如在一個過時的預合併系統上,我在 和 中的文件/bin少於/sbin600 /libMB,在/usr. (不過,那裡沒有 X 或 GUI 的東西。)在另一個系統上,/usr它有點大,大約 2 GB,但即使這樣也不是目前儲存大小的問題。同時,initramfs 文件大約為 15 MB,這足夠小以至於它可能很重要,並且 initramfs 沒有/etc需要修改的東西,因此可以半靜態安裝。

看看同一個系統,實用程序在/binand之間的劃分/usr/bin似乎有點武斷,例如shand bashare in /bin(顯然),也是如此,grep但例如awk,head和are in 。並不是說現代系統太依賴 shell 腳本來引導,只是掛載剩余文件系統所需的東西,需要使用更有限的工具集,但無論如何。如果文件系統出現問題時無法登錄,喜歡 zsh 的管理員可能會不高興…wc``zsh``/usr/bin

關於分裂起源的故事似乎是這樣的:

當。。。的時候

$$ original Unix system, in early 1970s $$第一個 RK05 磁碟包(他們的根文件系統)太大而無法容納,他們讓它洩漏到第二個磁碟包中,這是所有使用者主目錄所在的位置(這就是掛載被稱為 /usr 的原因)。他們複製了那裡的所有作業系統目錄(/bin、/sbin、/lib、/tmp…)並將文件寫入這些新目錄,因為它們的原始磁碟空間不足。

(來自 Rob Landley,在 Busybox 郵件列表中,了解 bin、sbin、usr/bin、usr/sbin 拆分,稍作編輯。同一消息更詳細地討論了這個問題。)

systemd 的人也寫了一些關於此的想法:

引用自:https://unix.stackexchange.com/questions/672536