我在 Raspberry Pi 4 上安装了官方 Ubuntu Server 22.04 映像。我还在network-config
SD 卡上的文件中配置了无线网络。
该文件由 cloud-init 转换为插入/etc/netplan/50-cloud-init.yaml
以下序言的文件:
# This file is generated from information provided by the datasource. Changes
# to it will not persist across an instance reboot. To disable cloud-init's
# network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
我对这种说法持怀疑态度——如果我修改原始/boot/firmware/network-config
文件,它不会导致50-cloud-init.yaml
重新生成。
另一方面,cloud-init.service
和cloud-config.service
都仍然启用并且似乎在启动时运行。
这取决于。Cloud-init 确实会在每次启动时运行,但对于大多数启动来说,它大多是无操作的。
首次启动时,cloud-init 从云端获取元数据、用户数据和网络配置。所有这些信息都会被缓存,因此在后续启动时,它不需要或尝试从云中重新获取这些信息。有些云会覆盖此行为以在每次启动时获取此数据,但对于树莓派来说,这应该只在第一次启动时发生。然后,它运行多个模块来处理任何提供的云配置。任何具有of 的模块都会在每次启动时运行。如果运行或云为实例提供了新的实例 ID,cloud-init 将(大部分)重新运行,就像第一次启动一样。
Module frequency
always
cloud-init clean
对于您的用例,您是正确的。更正确的说法是“不能保证更改在实例重新启动后持续存在”。但是,如果您运行
cloud-init clean
,那么您应该会看到该文件重新生成。