使用 systemd-nspawn 进行系统设置

使用 systemd-nspawn 进行系统设置

我可以在启动之前使用 systemd-nspawn 设置“chroot”安装(在这种情况下 debian 使用 debootstrap)吗?即无人值守的安装和设置。

我需要设置键盘映射、主机名,也许还有时区和区域设置。我想使用 systemd 工具,例如 hostnamectl、localectl、timedatectl...

是否可能以及执行此操作的方法,或者我应该使用配置文件吗?它们甚至被 systemd 识别吗?例如,如果我在 /etc/hostname 中设置主机名,它是否可以正确识别?我也可以这样设置键盘映射吗?

答案1

是否可以

是的

我在 nspawn 中运行 Debian。有用伟大的以最少的安装量。

另一方面,如果您通过桌面安装执行此操作,您应该会发现一两个小问题需要解决。

我应该使用配置文件吗?它们甚至被 systemd 识别吗?例如,如果我在 /etc/hostname 中设置主机名,它是否正确识别?

/etc/hostname 绝对有效,它受 systemd 支持,这正是hostnamectl要编辑的内容。一般来说,很难看出你在这里担心什么。 Debian Jessie 默认使用 systemd,因此任何为 Debian Jessie 编写的有关如何配置的文档(例如安装指南的 debootstrap 附录中)都应该适用于 systemd。 (尽管该附录更多的是一个草图,并且没有显示如何使其在无人值守的情况下运行)。


从您所说的来看,您可能也对 感兴趣systemd-firstboot。我还没有尝试使用它,我的理解是它在某些方面受到限制,但它可能提供信息。

无论如何,我认为您需要使用systemd-nspawn --boot,添加一个类似于 systemd-firstboot 使用的服务文件。如果您不启动系统,例如hostnamectl将无法工作...一旦您的脚本以某种方式完成,它还需要关闭系统。

一个值得注意的问题是,如果您安装了任何网络服务(包括 avahi、cups 等),您可能需要运行 nspawn--net-veth或同等服务,以避免与主机网络服务发生冲突。此时要获得网络访问权限(例如安装更多软件包),请在接口上设置 DHCP 客户端host0

相关内容