Home systemd 新的配置文件
Post
Cancel

systemd 新的配置文件

systemd 的强大特性之一是,它提供了一套完整的启动初期(early-boot)模块化服务,这些服务是用高效且并行的C语言实现, 取代了之前的各种基于shell脚本实现的。这些启动早期服务包括:

  • Checking and mounting of all file systems
  • Updating and enabling quota on all file systems
  • Setting the host name
  • Configuring the loopback network device
  • Loading the SELinux policy and relabelling /run and /dev as necessary on boot
  • Registering additional binary formats in the kernel, such as Java, Mono and WINE binaries
  • Setting the system locale
  • Setting up the console font and keyboard map
  • Creating, removing and cleaning up of temporary and volatile files and directories
  • Applying mount options from /etc/fstab to pre-mounted API VFS
  • Applying sysctl kernel settings
  • Collecting and replaying readahead information
  • Updating utmp boot and shutdown records
  • Loading and saving the random seed
  • Statically loading specific kernel modules
  • Setting up encrypted hard disks and partitions
  • Spawning automatic gettys on serial kernel consoles
  • Maintenance of Plymouth
  • Machine ID maintenance
  • Setting of the UTC distance for the system clock

只有少数遗留服务和存储服务在早期引导期间仍然需要shell脚本。早期引导阶段不使用shell是systemd的一个特点。

这些早期服务的组件中的许多都是通过/etc中的配置文件配置的。其中一些在发行版中是相当标准化的,因此在C实现中支持它们是简单而明显的。 例如:/etc/fstab、/etc/crypttab或/etc/sysctl.conf。然而,对于其他的,没有标准化的文件或目录存在,这迫使我们添加#ifdef orgies到我们的源代码中, 以处理我们想要支持的发行版存储这些东西的不同位置。所有这些配置文件都有一个共同点,那就是它们都非常简单,发行版根本没有理由将自己与它们区分开来: 它们都做同样的事情,只是略有不同。

systemd支持使用用户定义的配置文件而不使用常用的,但不推荐这样做,常见的一些配置文件:

  • /etc/hostname: 系统的主机名。最基本和最简单的系统设置之一。尽管如此,在此之前所有发行版都使用不同的文件。 Fedora使用/etc/sysconfig/network、OpenSUSE /etc/HOSTNAME。我们选择对Debian配置文件/etc/hostname进行标准化。 参考man 5 hostname
  • /etc/vconsole.conf: 默认键盘映射和控制台字体等,对于图形化界面有帮助。
  • /etc/locale.conf:系统范围的区域配置。参考man 5 locale
  • /etc/modules-load.d/*.conf:用于内核模块在引导时静态加载的下级目录(适用于极少数仍然需要此目录的内核模块)。
  • /etc/sysctl.d/*.conf:内核sysctl参数的扩展目录,扩展了/etc/sysctl.conf的功能。参考 man 5 sysctl.conf
  • /etc/tmpfiles.d/*.conf:一个存放运行时文件配置的下级目录,这些文件需要在启动和正常运行时删除/创建/清理。
  • /etc/binfmt.d/*.conf:用于为Java、Mono和WINE等系统注册其他二进制格式的下级目录。
  • /etc/os-release:各种发行ID文件的标准化,如/etc/fedora-release等。实际上每个发行版都在这里引入了自己的文件;编写一个简单的工具,只打印出本地发行版的名称, 这通常意味着包含一个可供检查的发布文件数据库。systemd决定推广这个,这样每个人都可以使用相同的文件。
  • /etc/machine-id:机器ID文件,取代D-Bus的machine-id文件。这个文件保证在systemd系统上存在并且有效,也包括无状态引导。通过将其移出D-Bus逻辑,它有望作为唯一且稳定的机器标识符用于许多其他用途。
  • /etc/machine-info:一个新的信息文件,编码关于主机的元数据,比如漂亮的主机名和图标名,取代/etc/favicon.png之类的东西。这由systemd-hostname维护。

systemd希望用户使用这些新的配置文件,并作为一个标准化推广开来,并计划逐步放弃对旧的配置文件的兼容支持。 这样做是有好处的,其中许多配置文件不仅与配置工具相关,而且(有时甚至主要)与上游项目相关,可以更容易让各种上游项目在所有的linux发行版上正常工作。 如Java,WINE等项目使用/etc/binfmt.d/,X11这样的项目使用/etc/vconsole.conf读取其显示的默认键盘映射。

This post is licensed under CC BY 4.0 by the author.