今天看一篇文章,里面提到了Linux文件系统层次标准(FHS)。之后我就看了FHS。由于本人读英文文章很慢,为了以后方便自己也方便大家,我就把Filesystem Hierarchy Standard翻译了下,可能有的地方不是很到位,请谅解。
如果您看了,觉得对您有点帮组,请支持一下,毕竟翻译该文章也花费了我两星期的业余时间。
如果要转载请注明出处,谢谢。
标准Linux文件系统层次标准(Filesystem Hierarchy Standard)
l 第五章操作系统特定的附件
该章节作为特定操作系统的其他要求和建议。本章节所提到的内容不会反应到基本标准里面。
/ : 根目录
一个Linux操作系统,如果内核在根目录下,我们建议内核的名字命名为vmlinux或vmlinuz,该命名方式的内核已经在最近的Linux内核源码包里用了。
/bin : 用户基本命令二进制文件(被所有用户使用)
Linux系统需要将以下额外的文件放在/bin中:
l Setserial
/dev : 设备文件和特殊文件
下面设备必须存在于/dev下。
/dev/null
所有写入这个设备的数据都被丢弃。从该设备读数据将返回EOF。
/dev/zero
该设备是一个归零的数据源。所有写入这个设备的数据都被丢弃。读取该设备将返回和请求一样多的零值。
/dev/tty
该设备是一个进程的控制终端的代名词。一旦该设备被打开,所有的读和写操作就像操作一个实际的控制终端一样。
/etc : 主机特定的系统文件
Linux系统需要将以下额外的文件放在/etc中:
l Lilo.conf
/lib64和/lib32 : 64位32位库文件(架构相关)
64位架构的PPC64, s390x, sparc64, 和AMD64的64位库文件放在/lib64下,32位(或s390上的31位库)库文件放在/lib下。
64位架构的IA64必须放置它的64位库在/lib下。
/sbin : 基础的系统二进制文件
Linux系统需要将以下额外的文件放在/sbin中。
l 第二文件系统扩展命令。
u badblocks
u dumpe2fs
u e2fsck
u mke2fs
u mklost+found
u tune2fs
l 引导加载图安装器(可选)
u Lilo
/sbin的可选文件
l 静态二进制文件
u ldconfig
u sln
u ssync
静态ln(sln)和静态sync(ssync)是很有用的,在其他东西发生错误时。Sln的主要用途(用于修复不良的更新导致的符号链接出错)不是现在主要关心的,ldconfig的存在能扮演升级动态库的指导者。静态sync在一些紧急情况时是很有用的。请注意,标准的ln和sync不需要被静态链接的版本,但是也可能需要。
/sbin下的ldconfig二进制文件是可选的,因为机器可能选着在启动的时候运行ldconfig,而不是只有在更新了共享库之后才运行(对于启动时运行ldconfig是否是有利的不得而知)。即便如此,很多人还是喜欢运行ldconfig当以下情况发生时。
l 刚刚删除/lib/<file>文件。
l 我得不到库文件的名称,因为ls是一个动态链接,并且我用的shell没有ls命令,然而我又不知道用”echo *”来代替ls命令。
l 我有一个静态sln,但是我不知道什么调用这个链接。
l 杂项
u Ctrlaltdel
u Kbdrate
为了应付键盘出现不可用的情况,在一些系统中kbdrate也许被安装在/sbin中。
因为内核在按ctrl-alt-del组合键的默认动作是即时硬启动,所以通常在以读写模式挂载根文件系统之前禁止即时硬启动操作。一些init进程禁止Ctrl-Alt-Del,但其他人也许需要ctrlaltdel程序,那么它应该安装在/sbin中。
/usr/include : C程序包含的头文件
如果安装了C和C++编译器,并且系统不是基于Glibc那么一下符号链接是被需要的。
/usr/include/asm -> /usr/src/linux/include/asm-<arch>
/usr/include/linux -> /usr/src/linux/include/linux
/usr/src : 源代码
如果系统是基于glibc,这里没有明确的准则关于本目录。
如果系统是基于glibc的以前版本linux libc,那么就有以下准则和基本应用。
只有Linux的内核源码应该放在一个特定位置/usr/src/linux。
如果安装了C和C++编译器,但是没有完整的内核源代码,那么内核源代码的头文件应该被放到一下目录。
/usr/src/linux/include/asm-<arch>
/usr/src/linux/include/linux
<arch>是系统架构的名称。
注意:
/usr/src/linux也许是内核源代码树的一个符号链接。
根据:
内核头文件被放在/usr/src/linux而不是/usr/include是很重要的,就因为如此当系统管理员第一次更新内核版本的时候不会出现问题。
/var/spool/cron : cron 和 at 程序
该目录包含cron和at程序的可变数据。