opensuse: 16.0 重新使用 cloud 镜像

This commit is contained in:
bin456789
2025-12-04 19:43:53 +08:00
parent c94f334663
commit 586eb5dee1
2 changed files with 23 additions and 12 deletions

View File

@ -1498,8 +1498,8 @@ Continue?
dir=distribution/leap/$releasever/appliances
case "$releasever" in
15.6) file=openSUSE-Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2 ;;
# 16.0) file=Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2 ;; # 缺少 openSUSE-repos-Leap 包,导致没有源
16.0) file=Leap-$releasever-Minimal-VM.$basearch-kvm$(if [ "$basearch" = x86_64 ]; then echo '-and-xen'; fi).qcow2 ;;
16.0) file=Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2 ;;
# 16.0) file=Leap-$releasever-Minimal-VM.$basearch-kvm$(if [ "$basearch" = x86_64 ]; then echo '-and-xen'; fi).qcow2 ;;
esac
# https://src.opensuse.org/openSUSE/Leap-Images/src/branch/leap-16.0/kiwi-templates-Minimal/Minimal.kiwi

View File

@ -3252,7 +3252,7 @@ remove_cloud_init() {
# disable 会出现一堆提示信息,也无法 disable
for unit in $(
chroot $os_dir systemctl list-unit-files |
grep -E '^(cloud-init-.*|cloud-config|cloud-final)\.(service|socket)' | grep enabled | awk '{print $1}'
grep -E '^(cloud-init|cloud-init-.*|cloud-config|cloud-final)\.(service|socket)' | grep enabled | awk '{print $1}'
); do
# 服务不存在时会报错
if chroot $os_dir systemctl -q is-enabled "$unit"; then
@ -3269,7 +3269,7 @@ remove_cloud_init() {
;;
zypper)
# 加上 -u 才会删除依赖
chroot $os_dir zypper remove -y -u cloud-init
chroot $os_dir zypper remove -y -u cloud-init cloud-init-config-suse
;;
apt-get)
# ubuntu 25.04 开始有 cloud-init-base
@ -3658,24 +3658,35 @@ EOF
fi
# rpm -qi 不支持通配符
installed_kernel=$(chroot $os_dir rpm -qa 'kernel-*' --qf '%{NAME}\n' | grep -v firmware)
if ! [ "$(echo "$installed_kernel" | wc -l)" -eq 1 ]; then
error_and_exit "Unexpected kernel installed: $installed_kernel"
origin_kernel=$(chroot $os_dir rpm -qa 'kernel-*' --qf '%{NAME}\n' | grep -v firmware)
if ! [ "$(echo "$origin_kernel" | wc -l)" -eq 1 ]; then
error_and_exit "Unexpected kernel installed: $origin_kernel"
fi
# 能同时装 kernel-default-base 和 kernel-default
# 16.0 能同时装 kernel-default-base 和 kernel-default
# tw 不能同时装 kernel-default-base 和 kernel-default
# 因此需要添加 --force-resolution 自动删除 kernel-default-base
if ! [ "$installed_kernel" = "$target_kernel" ]; then
if ! [ "$origin_kernel" = "$target_kernel" ]; then
# x86 必须设置一个密码否则报错arm 没有这个问题
# Failed to get root password hash
# Failed to import /etc/uefi/certs/76B6A6A0.crt
# warning: %post(kernel-default-5.14.21-150500.55.83.1.x86_64) scriptlet failed, exit status 255
need_password_workaround=false
if grep -q '^root:[:!*]' $os_dir/etc/shadow; then
need_password_workaround=true
fi
if $need_password_workaround; then
echo "root:$(mkpasswd '')" | chroot $os_dir chpasswd -e
chroot $os_dir zypper install -y --force-resolution $target_kernel
fi
# 安装新内核
chroot $os_dir zypper install -y --force-resolution $target_kernel
# 删除旧内核
if chroot $os_dir rpm -q $origin_kernel; then
chroot $os_dir zypper remove -y --force-resolution $origin_kernel
fi
if $need_password_workaround; then
chroot $os_dir passwd -d root
else
chroot $os_dir zypper install -y --force-resolution $target_kernel
fi
fi