1979 字
10 分钟
LInux基础(2):Linux四大主流发行版文件目录架构详解

前言#

Linux系统采用统一的 文件系统层次标准(FHS, Filesystem Hierarchy Standard) 作为基础,所有主流发行版都遵循这一标准,但在具体实现和特色目录上存在差异。

本文将详细对比 Ubuntu 22.04 LTS、CentOS 9 Stream、银河麒麟V10 和 openEuler 22.03 LTS 这四个国内最常用的Linux发行版的文件目录架构,并在文末 附加这四个系统的网卡配置文件修改实战,帮助系统管理员和开发者快速理解底层的运作机制。

一、Linux FHS标准基础#

NOTEFHS文件系统层次标准

所有Linux发行版都基于FHS标准构建,该标准定义了系统中主要目录的名称、位置和用途,确保了软件的可移植性和系统管理的一致性。 ::

FHS将文件系统分为两大维度、四种类型:

  • 可共享文件:可以在不同主机之间共享的文件
  • 不可共享文件:只能在特定主机上使用的文件
  • 静态文件:内容不会频繁变化的文件(如二进制程序、库文件)
  • 可变文件:内容会动态变化的文件(如日志、缓存)

二、四大发行版通用核心目录详解#

1. / - 根目录#

所有目录和文件的起点,整个文件系统的最顶层。根目录下只包含必要的系统目录,不建议存放用户文件。

2. /bin - 基本用户二进制程序#

存放系统启动和单用户模式下必需的二进制可执行文件,所有用户都可以访问。

IMPORTANTUsrmerge (usr合并) 趋势

在 CentOS 9 Stream、openEuler 和 Ubuntu 22.04 中,/bin 已成为 /usr/bin 的符号链接。银河麒麟V10在较新版本中也已实现这一变更。现代Linux正在走向统一架构。 ::

3. /boot - 引导加载程序文件#

存放系统启动所需的所有文件,包括内核镜像、引导加载程序配置和初始化内存盘。

  • /boot/vmlinuz-*:Linux内核镜像文件
  • /boot/initrd.img-*:初始化内存盘,用于在系统启动时加载必要的驱动
  • /boot/grub/:GRUB引导加载程序的配置文件和模块
TIP架构差异对比
  • Ubuntu:使用 /boot/grub/grub.cfg 作为主配置文件
  • CentOS / openEuler:同样使用 GRUB2,但配置文件路径相同
  • 银河麒麟:部分老版本中可能保留了传统的 /boot/grub/menu.lst ::

4. /dev - 设备文件#

Linux系统中”一切皆文件”理念的体现,所有硬件设备都以文件形式存在于此。四个发行版都使用 udev 动态管理设备文件。

  • /dev/sda、/dev/nvme0n1:硬盘及固态设备
  • /dev/null:空设备(数据黑洞)
  • /dev/random:随机数生成设备

5. /etc - 系统配置文件#

存放系统全局配置文件,所有服务和应用程序的配置核心。

  • /etc/passwd:用户账户信
  • /etc/shadow:存放加密后的用户密码哈希(绝对核心机密,仅root可读)
  • /etc/fstab:文件系统挂载表
NOTE特色配置目录分布
  • CentOS / openEuler / 麒麟:/etc/sysconfig/
  • Ubuntu:/etc/default/ ::

6. /home - 用户主目录#

普通用户的个人文件和配置。每个用户拥有以自己用户名命名的子目录(四大发行版完全一致)。

7. /lib - 基本共享库#

存放 /bin 和 /sbin 中二进制程序所需的共享库文件。64位系统中 /lib64 存放64位共享库,现代系统中二者通常都是指向 /usr 下对应目录的符号链接。

8. /mnt 与 /media - 挂载点#

  • /media:系统自动为U盘、光盘等可移动设备创建子目录并挂载。
  • /mnt:管理员手动挂载临时文件系统的首选目录。

9. /opt - 可选应用程序#

用于安装第三方商业软件或大型应用程序,软体通常收拢在其独立子目录下(如 /opt/google/chrome/)。

10. /proc 与 /sys - 虚拟文件系统#

两者均由内核在内存中动态生成,不占用真实的磁盘空间。

  • /proc:提供系统运行状态、系统内存及进程 (/proc/[pid]) 的实时信息。
  • /sys:提供对系统硬件设备底层和内核操作子系统的访问接口。

11. /run - 运行时数据#

存放在内存(tmpfs)中的临时运行数据。替代了传统的 /var/run 和 /var/lock(在现代系统中这两个路径均已成为指向 /run 的软链接)。系统重启后会清空。

12. /usr - 用户二进制文件和只读数据#

包含系统中绝大多数的应用程序和数据。

  • /usr/bin/:绝大部分用户命令
  • /usr/sbin/:管理员特权运行的系统管理命令
  • /usr/local/:编译源码安装的自留地,系统包管理器(Yum/Apt)更新不会覆盖他。

13. /var - 可变数据#

存放系统运行中不断变化的数据(日志、数据库、容器卷等)。

CAUTION日志路径差异
  • 系统全局日志:CentOS/openEuler/麒麟在 /var/log/messages;Ubuntu在 /var/log/syslog。
  • 安全认证日志:CentOS/openEuler/麒麟在 /var/log/secure;Ubuntu在 /var/log/auth.log。 ::

三、各发行版特色目录与差异#

1. Ubuntu 22.04 LTS (Debian系)#

使用 deb 包和 APT 包管理器。

  • /snap/:Snap沙盒应用的强制安装与挂载目录。
  • /etc/apt/:APT包管理源列表配置存放处。

2. CentOS 9 Stream (RHEL系)#

RHEL9的上游,使用 RPM 格式和 DNF 包管理器。

  • /etc/yum.repos.d/:YUM/DNF仓库配置核心目录。
  • /etc/sysconfig/:系统及网络等服务的默认配置环境存放目录。

3. openEuler 22.03 LTS (国产化创新)#

华为开源的企业级OS,支持多架构(如ARM64),基于RPM体系。

  • /etc/openeuler/:专属系统配置。
  • /usr/lib/euleros/:EulerOS兼容层文件。
openeuler
/
openEuler-portal
Waiting for api.github.com...
00K
0K
0K
Waiting...

4. 银河麒麟V10 (国产化信创)#

基于openEuler开发,高度强化系统安全策略与信创生态。

  • /usr/lib/kylin-security/:内核及应用层的安全管控模块。
  • /opt/Kylin/:预装合规商业软件目录。

四、四大发行版目录结构对比表#

目录/特性Ubuntu 22.04CentOS 9 StreamopenEuler 22.03银河麒麟 V10
包管理系统APT / dpkgDNF / RPMDNF / RPMDNF / RPM
全局核心日志/var/log/syslog/var/log/messages/var/log/messages/var/log/messages
安全审计日志/var/log/auth.log/var/log/secure/var/log/secure/var/log/secure
软件源配置/etc/apt//etc/yum.repos.d//etc/yum.repos.d//etc/yum.repos.d/
特色专属目录/snap//usr/share/centos-release/etc/openeuler//etc/kylin/

五、网卡配置文件修改实战指南(深度扩展)#

由于系统底层架构的演进,这四个系统在配置网络静态IP时的文件路径和语法存在颠覆性差异。以下为您演示如何将网卡 eth0 配为静态IP 192.168.1.100。

1. Ubuntu 22.04 LTS (基于 Netplan)#

Ubuntu 完全抛弃了传统的 /etc/network/interfaces,改用 YAML 语法的 Netplan 进行网络配置。

/etc/netplan/00-installer-config.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]
终端生效命令
# 测试配置是否正确(不阻断网络的情况下退回如果配置错误)
sudo netplan try
# 确认无误后彻底应用
sudo netplan apply

2. CentOS 9 Stream (基于 NetworkManager Keyfile)#

从 CentOS 9 开始,NetworkManager 取代了传统脚本文件,全面采用 INI 键值对风格储存在特定的连接文件夹中。

/etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=12345678-1234-1234-1234-123456789abc
type=ethernet
interface-name=eth0
[ipv4]
# 将 dhcp 改为 manual (静态分配)
# method=auto
method=manual
address1=192.168.1.100/24,192.168.1.1
dns=8.8.8.8;114.114.114.114;
终端生效命令
# 重新加载网卡配置文件
sudo nmcli connection reload
# 激活新配置
sudo nmcli connection up eth0

3. openEuler / 银河麒麟 V10 (兼容传统 network-scripts)#

这两者都强烈拥抱 NetworkManager,但为了充分兼容国内企业运维习惯,多数预装版本仍完整保留传统的 ifcfg-* 格式规范。

/etc/sysconfig/network-scripts/ifcfg-eth0
TYPE=Ethernet
# BOOTPROTO=dhcp
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
PREFIX=24
GATEWAY=192.168.1.1
DNS1=114.114.114.114
终端生效命令
# 重启 NetworkManager 服务加载此传统配置文件
sudo systemctl restart NetworkManager
# 验证网卡状态
ip addr show eth0

结语#

无论是底层的 FHS 目录层级哲学,还是不断演进的 网络配置抽象层 (Netplan vs NetworkManager),理解这些架构差异是高级运维与排障的基石。希望本文的横向对比与配置实操能彻底扫除您在多平台切换时的技术盲区。

LInux基础(2):Linux四大主流发行版文件目录架构详解
https://www.6ixblog.site/posts/linux-basic-2/
作者
Licwic
发布于
2025-01-02
许可协议
CC BY-NC-SA 4.0