哪些目錄應該與根“/”文件系統位於同一文件系統上?
我讀了一篇文章,它指出“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
少於/sbin
600/lib
MB,在/usr
. (不過,那裡沒有 X 或 GUI 的東西。)在另一個系統上,/usr
它有點大,大約 2 GB,但即使這樣也不是目前儲存大小的問題。同時,initramfs 文件大約為 15 MB,這足夠小以至於它可能很重要,並且 initramfs 沒有/etc
需要修改的東西,因此可以半靜態安裝。看看同一個系統,實用程序在
/bin
and之間的劃分/usr/bin
似乎有點武斷,例如sh
andbash
are 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 的人也寫了一些關於此的想法: