systemd-firstboot
从 systemd 的 216 版本开始,命令 systemd-firstboot 允许在新创建的系统首次启动之前或期间设置基本系统设置。该工具能够初始化以下系统设置:时区、区域设置、主机名、root 密码,以及自动生成机器 ID。
由于 systemd-firstboot 直接与文件系统交互,并且不使用相关的 systemd 服务(例如 timedatectl、hostnamectl 或 localectl),因此不应在已运行的系统上执行。
当在文件系统映像上外部使用时,可以非交互方式指定设置;如果在早期启动过程中执行,则可以交互方式指定设置。
默认的 Arch Linux 安装将设置 systemd-firstboot 能够操作的大多数变量,或有助于创建骨架文件,这些文件在通过 pacstrap 安装 systemd 软件包时会阻止其使用。
安装
systemd-firstboot 是 systemd 的一部分,并随其打包发布。
用法
在全新的 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,以防您希望测试安装是否成功。