ubuntu: 只禁用 cloud-init 而不是删除

fixes #516
This commit is contained in:
bin456789
2025-12-25 00:14:38 +08:00
parent e60a8d0de2
commit 0c5fac6d6b

View File

@ -3226,20 +3226,27 @@ chroot_systemctl_disable() {
done done
} }
remove_cloud_init() { remove_or_disable_cloud_init() {
os_dir=$1 os_dir=$1
if ! is_have_cmd_on_disk $os_dir cloud-init; then if ! is_have_cmd_on_disk $os_dir cloud-init; then
return return
fi fi
info "Remove Cloud-Init" info "Remove or Disable Cloud-Init"
# 两种方法都可以 # ubuntu-server-minimal ubuntu-cloud-minimal 都包含 cloud-init
if false && [ -d $os_dir/etc/cloud ]; then # 用 iso 安装的 ubuntu 也有 cloud-init
# 因此不删除 ubuntu 的 cloud-init而是禁用它
# iso 安装首次启动是通过 /etc/cloud/cloud.cfg.d/99-installer.cfg 初始化系统,包括:
# 1. 创建普通用户和密码,添加 ssh 登录公钥
# 2. 创建 /etc/cloud/cloud-init.disabled
if grep -iq ubuntu $os_dir/etc/os-release; then
# 模仿 iso 安装的 ubuntu只创建 cloud-init.disabled不禁用服务
touch $os_dir/etc/cloud/cloud-init.disabled touch $os_dir/etc/cloud/cloud-init.disabled
fi else
# systemctl is-enabled cloud-init-hotplugd.service 状态是 static # systemctl is-enabled cloud-init-hotplugd.service 状态是 static
# disable 会出现一堆提示信息,也无法 disable # disable 会出现一堆提示信息,也无法 disable
for unit in $( for unit in $(
@ -3272,6 +3279,7 @@ remove_cloud_init() {
break break
fi fi
done done
fi
} }
disable_jeos_firstboot() { disable_jeos_firstboot() {
@ -3387,7 +3395,7 @@ EOF
if [ "$distro" = fedora ] && [ "$releasever" = 43 ]; then if [ "$distro" = fedora ] && [ "$releasever" = 43 ]; then
chroot $os_dir dnf mark user netcat -y chroot $os_dir dnf mark user netcat -y
fi fi
remove_cloud_init $os_dir remove_or_disable_cloud_init $os_dir
disable_selinux $os_dir disable_selinux $os_dir
disable_kdump $os_dir disable_kdump $os_dir
@ -3414,7 +3422,7 @@ EOF
find_and_mount /boot find_and_mount /boot
find_and_mount /boot/efi find_and_mount /boot/efi
remove_cloud_init $os_dir remove_or_disable_cloud_init $os_dir
# 获取当前开启的 Components, 后面要用 # 获取当前开启的 Components, 后面要用
if [ -f $os_dir/etc/apt/sources.list.d/debian.sources ]; then if [ -f $os_dir/etc/apt/sources.list.d/debian.sources ]; then
@ -3689,7 +3697,7 @@ EOF
# 最后才删除 cloud-init # 最后才删除 cloud-init
# 因为生成 sysconfig 网络配置要用目标系统的 cloud-init # 因为生成 sysconfig 网络配置要用目标系统的 cloud-init
remove_cloud_init $os_dir remove_or_disable_cloud_init $os_dir
restore_resolv_conf $os_dir restore_resolv_conf $os_dir
fi fi
@ -5082,7 +5090,7 @@ EOF
# 最后才删除 cloud-init # 最后才删除 cloud-init
# 因为生成 netplan/sysconfig 网络配置要用目标系统的 cloud-init # 因为生成 netplan/sysconfig 网络配置要用目标系统的 cloud-init
remove_cloud_init /os remove_or_disable_cloud_init /os
# 删除 swapfile # 删除 swapfile
swapoff -a swapoff -a