Linux-For-PC(二):FHS与目录结构
前言 在Linux世界中,Filesystem Hierarchy Standard(FHS)是一座引导我们进入系统核心的桥梁,它定义了Linux系统中目录结构的规范与作用,为我们提供了一张清晰的地图,指引我们轻松管理和理解系统。本文将深入探讨FHS规范与Linux系统目录结构,解释各个目录的用途与功能,帮助我们更好地理解和利用Linux系统。
一.认识FHS
FHS是Filesystem Hierarchy Standard(文件系统层次结构标准)的缩写。它是一个定义了Linux系统中目录结构和各个目录作用的规范。FHS规定了Linux系统中各个目录的用途和预期内容,以便确保不同Linux发行版之间的兼容性,并使得用户能够更轻松地理解和管理系统。
FHS规范最初由Linux基金会(Linux Foundation)和自由软件基金会(Free Software Foundation)共同发布,并经过多次修订和更新。该规范不仅对Linux系统本身有用,也适用于其他类UNIX操作系统。
FHS规范定义了一些基本的目录,如/bin、/boot、/dev等,并规定了每个目录的作用和预期内容。这样做有助于系统管理员和开发人员更好地组织和管理文件系统,并使得用户能够更轻松地找到所需的文件和数据。
二.常见目录结构
在刚刚由Windows切换至Linux时,往往会对目录感到不解,不知道安装的软件放在哪个目录之下?
以下是对Linux系统目录结构的详细说明:
- /(根目录): 根目录是整个文件系统的起点,包含了系统中所有其他目录和文件。在Linux系统中,根目录被表示为/。
- /bin(二进制文件): /bin目录存放着一些最基本的系统命令,如ls、cp、mv等,这些命令通常被所有用户使用。
- /boot(引导文件): /boot目录存放着启动Linux系统所需的引导文件,如内核映像(vmlinuz)、引导加载程序(boot loader)配置文件(如GRUB配置文件)等。
- /dev(设备文件): /dev目录包含了系统中所有设备的特殊文件,如硬盘、键盘、鼠标等。在Linux中,一切皆文件,设备被抽象为文件,通过/dev目录中的特殊文件来表示。
- /etc(配置文件): /etc目录包含了系统的配置文件,如网络配置、用户账户信息、服务配置等。这些配置文件通常以纯文本的形式存在,可以由系统管理员进行编辑和修改。
- /home(用户主目录): /home目录是系统中所有普通用户的主目录所在地,每个用户通常都有一个对应的子目录,用于存放用户的个人文件和数据。
- /lib(库文件): /lib目录存放着系统所需的共享库文件,这些库文件包含了一些程序运行所需的函数和数据,为程序提供了基本的支持。
- /mnt(挂载点): /mnt目录用于挂载临时文件系统,如光盘、移动硬盘等。系统管理员可以将其他设备或文件系统挂载到/mnt目录下,以便访问其中的文件和数据。
- /opt(可选软件包): /opt目录用于存放一些可选的软件包和应用程序,这些软件包通常不属于Linux发行版的默认安装范围,但可以被用户自行安装和管理。
- /proc(进程信息): /proc目录是一个虚拟的文件系统,包含了系统运行时的各种进程信息和系统状态信息。用户可以通过读取/proc目录中的特殊文件来获取系统信息。
- /sbin(系统命令): /sbin目录存放着一些系统管理和维护命令,这些命令通常只能由超级用户(root)执行,用于系统的管理和维护。
- /srv(服务数据): /srv目录用于存放一些服务相关的数据文件,如Web服务器的网站数据、FTP服务器的文件等。每个服务通常都会有一个对应的子目录。
- /tmp(临时文件): /tmp目录用于存放临时文件和临时数据,这些文件通常在系统重启时会被删除。任何用户都可以在/tmp目录下创建临时文件。
- /usr(用户程序): /usr目录包含了系统中大部分用户可用的程序和文件,如用户应用程序、共享库文件、文档等。它通常是系统的二级目录,类似于Windows系统中的Program Files目录。
- /var(可变数据): /var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。这些数据通常会随着系统的运行而不断变化。
注意:NixOS不符合FHS标准!
三.分区大小
对各个分区进行容量分配时,需要根据系统的实际需求和用途来进行规划。一般而言在安装引导时可以选择让程序自动分区。
- 根目录(/):根目录是整个文件系统的起点,通常会分配较大的空间,以确保系统和应用程序有足够的空间运行。建议分配至少20GB的空间给根目录。
- /home目录:/home目录用于存放用户的个人文件和数据,因此需要根据用户数量和存储需求来进行容量分配。一般情况下,建议为每个用户分配至少10GB的空间。
- /var目录:/var目录用于存放系统运行时产生的可变数据,如日志文件、邮件、缓存文件等。根据系统的运行情况和日志文件的大小来进行容量分配,一般建议分配10-20GB的空间。
- /tmp目录:/tmp目录用于存放临时文件和临时数据,通常不需要分配太大的空间。建议分配至少1-2GB的空间给/tmp目录。
- /boot目录:/boot目录存放着启动Linux系统所需的引导文件,通常只需要分配几百MB的空间即可。
- Swap分区:Swap分区是一种虚拟内存,用于暂时存放不常用的内存数据。当系统内存不足时,Linux会将一部分内存数据移动到Swap分区中,以避免内存耗尽导致系统崩溃。Swap分区的大小通常与系统内存大小有关,一般建议为系统内存的1.5-2倍。例如,如果系统内存为4GB,则建议设置Swap分区大小为6-8GB。
这里特别讲讲Swap分区
Swap分区可以通过以下几种方式实现:
- 交换分区(Swap Partition):创建一个独立的交换分区,通常是一个专门的分区,用于存放Swap数据。
- 交换文件(Swap File):创建一个专门的文件用于存放Swap数据,而不是创建独立的分区。这种方式更加灵活,可以根据需要动态调整Swap的大小。
- Swap大小:Swap的大小应该根据系统的内存大小和使用情况来确定,一般建议为系统内存的1.5-2倍。
- Swap分区/文件的位置:Swap分区/文件应该位于较快的存储介质上,以确保交换操作的效率。 Swap的优先级:如果同时存在多个Swap分区/文件,可以通过设置优先级来指定系统使用的Swap空间。
四.将 home
目录下的文件夹改为英文
可以使用 xdg-user-dirs-update
工具来更新用户目录为英文版本。你可以按照以下步骤进行:
-
编辑用户目录配置文件: 打开或创建
~/.config/user-dirs.dirs
文件,用文本编辑器编辑它:nano ~/.config/user-dirs.dirs
-
将目录名称更改为英文: 在该文件中,你可以看到类似以下的条目:
XDG_DESKTOP_DIR="$HOME/桌面" XDG_DOWNLOAD_DIR="$HOME/下载" XDG_DOCUMENTS_DIR="$HOME/文档" XDG_MUSIC_DIR="$HOME/音乐" XDG_PICTURES_DIR="$HOME/图片" XDG_VIDEOS_DIR="$HOME/视频"
将这些路径改为英文,例如:
XDG_DESKTOP_DIR="$HOME/Desktop" XDG_DOWNLOAD_DIR="$HOME/Downloads" XDG_DOCUMENTS_DIR="$HOME/Documents" XDG_MUSIC_DIR="$HOME/Music" XDG_PICTURES_DIR="$HOME/Pictures" XDG_VIDEOS_DIR="$HOME/Videos"
-
重命名现有的文件夹: 手动将
home
目录下的文件夹重命名为英文版本:mv ~/桌面 ~/Desktop mv ~/下载 ~/Downloads mv ~/文档 ~/Documents mv ~/音乐 ~/Music mv ~/图片 ~/Pictures mv ~/视频 ~/Videos
-
应用更改: 完成以上操作后,运行以下命令应用新配置:
xdg-user-dirs-update
这样,home
目录下的文件夹就会改为英文,并且系统也会正确识别这些新的目录路径。