systemd-firstboot

出自 ArchWiki

systemd 的 216 版本开始,命令 systemd-firstboot 允许在新创建的系统首次启动之前或期间设置基本系统设置。该工具能够初始化以下系统设置:时区区域设置主机名、root 密码,以及自动生成机器 ID。

由于 systemd-firstboot 直接与文件系统交互,并且不使用相关的 systemd 服务(例如 timedatectl、hostnamectl 或 localectl),因此不应在已运行的系统上执行。

当在文件系统映像上外部使用时,可以非交互方式指定设置;如果在早期启动过程中执行,则可以交互方式指定设置。

默认的 Arch Linux 安装将设置 systemd-firstboot 能够操作的大多数变量,或有助于创建骨架文件,这些文件在通过 pacstrap 安装 systemd 软件包时会阻止其使用。

安装

systemd-firstbootsystemd 的一部分,并随其打包发布。

用法

警告: 在现有的 Arch Linux 实例上执行此操作可能会破坏您的系统。以下步骤仅应在新安装的系统上使用。

在全新的 Arch Linux 安装启动期间交互式配置系统设置

允许 systemd-firstboot 操作先前未启动的 Arch Linux 安装在以下情况下特别有用:安装由最终用户以外的个人进行,例如在预装了安装程序的笔记本电脑的分发中。

以下步骤应附加到 安装指南配置系统章节末尾,在卸载目标分区之前进行,从而在新安装的 chroot 环境中进行。确保已生成所有您想要使用的区域设置,未生成的区域设置将不会作为可能的设置提供。

删除现有设置

如果存在以下文件,systemd-firstboot 将不会提示您设置它们相关的内容。

# rm /etc/{machine-id,localtime,hostname,shadow,locale.conf}

编辑 /etc/passwd 并从中删除 root 帐户,否则 root 将被视为已配置,systemd-firstboot 将不会提示您设置 root 密码。

修改并启用 systemd-firstboot.service

使用 drop-in 文件,其中 --prompt 使 systemd-firstboot 查询所有可能的设置,并且 [Install] 部分指定在启动过程中的哪个阶段激活该服务。

/etc/systemd/system/systemd-firstboot.service.d/install.conf
[Service]
ExecStart=
ExecStart=/usr/bin/systemd-firstboot --prompt

[Install]
WantedBy=sysinit.target

启用 systemd-firstboot.service

完成安装

继续按照安装指南进行安装。除非要进行更多配置,否则退出 chroot 环境,卸载分区并关闭计算机。在下次启动时,systemd-firstboot 将会执行。假设没有对系统配置进行其他更改,删除上述文件并重新启动将再次触发 systemd-firstboot,以防您希望测试安装是否成功。

参见