mirror of
https://github.com/bin456789/reinstall.git
synced 2025-06-09 22:10:00 +00:00
opensuse: 添加 16.0
This commit is contained in:
parent
bd266fb12f
commit
aaf6ad7c83
29
reinstall.sh
29
reinstall.sh
@ -1363,12 +1363,29 @@ Continue?
|
|||||||
fi
|
fi
|
||||||
file=openSUSE-Tumbleweed-Minimal-VM.$basearch-Cloud.qcow2
|
file=openSUSE-Tumbleweed-Minimal-VM.$basearch-Cloud.qcow2
|
||||||
else
|
else
|
||||||
# 常规版本
|
# leap
|
||||||
dir=distribution/leap/$releasever/appliances
|
dir=distribution/leap/$releasever/appliances
|
||||||
file=openSUSE-Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2
|
if [ "$releasever" = 15.6 ]; then
|
||||||
fi
|
file=openSUSE-Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2
|
||||||
|
# https://build.opensuse.org/projects/Virtualization:Appliances:Images:openSUSE-Leap-15.6/packages/kiwi-templates-Minimal/files/Minimal.kiwi
|
||||||
|
# https://build.opensuse.org/projects/Virtualization:Appliances:Images:openSUSE-Tumbleweed/packages/kiwi-templates-Minimal/files/Minimal.kiwi
|
||||||
|
# 有专门的kvm镜像,openSUSE-Leap-15.5-Minimal-VM.x86_64-kvm-and-xen.qcow2,里面没有cloud-init
|
||||||
|
# file=openSUSE-Leap-15.5-Minimal-VM.x86_64-kvm-and-xen.qcow2
|
||||||
|
else
|
||||||
|
# https://src.opensuse.org/openSUSE/Leap/raw/branch/16.0/Leap/Leap.kiwi
|
||||||
|
# Default 比 Base 多了以下组件
|
||||||
|
# <namedCollection name="salt_minion" />
|
||||||
|
# <package name="patterns-base-salt_minion" />
|
||||||
|
# <namedCollection name="kvm_host" />
|
||||||
|
# <package name="patterns-base-kvm_host" />
|
||||||
|
# <package name="lzop" />
|
||||||
|
# <package name="wpa_supplicant" arch="x86_64,aarch64" />
|
||||||
|
# <package name="k3s-install" />
|
||||||
|
|
||||||
# 有专门的kvm镜像,openSUSE-Leap-15.5-Minimal-VM.x86_64-kvm-and-xen.qcow2,但里面没有cloud-init
|
# file=Leap.x86_64-Default.raw.xz
|
||||||
|
file=Leap.x86_64-Base.raw.xz
|
||||||
|
fi
|
||||||
|
fi
|
||||||
eval ${step}_img=$mirror/$dir/$file
|
eval ${step}_img=$mirror/$dir/$file
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1713,7 +1730,7 @@ Continue with DD?
|
|||||||
# 集中测试云镜像格式
|
# 集中测试云镜像格式
|
||||||
if is_use_cloud_image && [ "$step" = finalos ]; then
|
if is_use_cloud_image && [ "$step" = finalos ]; then
|
||||||
# shellcheck disable=SC2154
|
# shellcheck disable=SC2154
|
||||||
test_url $finalos_img 'qemu qemu.gzip qemu.xz qemu.zstd' finalos_img_type
|
test_url $finalos_img 'qemu qemu.gzip qemu.xz qemu.zstd raw.xz' finalos_img_type
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1753,7 +1770,7 @@ verify_os_name() {
|
|||||||
'fedora 40|41' \
|
'fedora 40|41' \
|
||||||
'nixos 24.11' \
|
'nixos 24.11' \
|
||||||
'debian 9|10|11|12' \
|
'debian 9|10|11|12' \
|
||||||
'opensuse 15.6|tumbleweed' \
|
'opensuse 15.6|16.0|tumbleweed' \
|
||||||
'alpine 3.18|3.19|3.20|3.21' \
|
'alpine 3.18|3.19|3.20|3.21' \
|
||||||
'openeuler 20.03|22.03|24.03|25.03' \
|
'openeuler 20.03|22.03|24.03|25.03' \
|
||||||
'ubuntu 16.04|18.04|20.04|22.04|24.04|24.10' \
|
'ubuntu 16.04|18.04|20.04|22.04|24.04|24.10' \
|
||||||
|
103
trans.sh
103
trans.sh
@ -3152,7 +3152,8 @@ EOF
|
|||||||
|
|
||||||
remove_cloud_init $os_dir
|
remove_cloud_init $os_dir
|
||||||
|
|
||||||
disable_selinux_kdump $os_dir
|
disable_selinux $os_dir
|
||||||
|
disable_kdump $os_dir
|
||||||
|
|
||||||
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
||||||
is_have_cmd_on_disk $os_dir dnf && mgr=dnf || mgr=yum
|
is_have_cmd_on_disk $os_dir dnf && mgr=dnf || mgr=yum
|
||||||
@ -3344,9 +3345,17 @@ EOF
|
|||||||
|
|
||||||
disable_jeos_firstboot $os_dir
|
disable_jeos_firstboot $os_dir
|
||||||
|
|
||||||
# opensuse leap
|
# 16.0 需要安装 openssh
|
||||||
if grep opensuse-leap $os_dir/etc/os-release; then
|
if ! chroot $os_dir rpm -qi openssh-server; then
|
||||||
|
chroot $os_dir zypper install -y openssh-server
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 禁用 selinux
|
||||||
|
disable_selinux $os_dir
|
||||||
|
|
||||||
|
# opensuse leap 15.6 用 wicked
|
||||||
|
# opensuse leap 16.0 / tumbleweed 用 NetworkManager
|
||||||
|
if chroot $os_dir rpm -qi wicked; then
|
||||||
# sysconfig ifcfg
|
# sysconfig ifcfg
|
||||||
create_cloud_init_network_config $os_dir/net.cfg
|
create_cloud_init_network_config $os_dir/net.cfg
|
||||||
chroot $os_dir cloud-init devel net-convert \
|
chroot $os_dir cloud-init devel net-convert \
|
||||||
@ -3388,11 +3397,8 @@ EOF
|
|||||||
|
|
||||||
# 清理
|
# 清理
|
||||||
rm -rf $os_dir/net.cfg $os_dir/out
|
rm -rf $os_dir/net.cfg $os_dir/out
|
||||||
fi
|
|
||||||
|
|
||||||
# opensuse tumbleweed
|
else
|
||||||
# network-manager
|
|
||||||
if grep opensuse-tumbleweed $os_dir/etc/os-release; then
|
|
||||||
# 如果使用 cloud-init 则需要 touch NetworkManager.conf
|
# 如果使用 cloud-init 则需要 touch NetworkManager.conf
|
||||||
# 更新到 cloud-init 24.1 后删除
|
# 更新到 cloud-init 24.1 后删除
|
||||||
# touch $os_dir/etc/NetworkManager/NetworkManager.conf
|
# touch $os_dir/etc/NetworkManager/NetworkManager.conf
|
||||||
@ -3403,34 +3409,45 @@ EOF
|
|||||||
rm /net.cfg
|
rm /net.cfg
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# 选择新内核
|
||||||
|
# 只有 leap 有 kernel-azure
|
||||||
|
if grep -iq leap $os_dir/etc/os-release && [ "$(get_cloud_vendor)" = azure ]; then
|
||||||
|
target_kernel='kernel-azure'
|
||||||
|
else
|
||||||
|
target_kernel='kernel-default'
|
||||||
|
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"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 15.6 / tumbleweed 自带的是 kernel-default-base
|
||||||
|
# 16.0 自带的是 kernel-default
|
||||||
# 不能同时装 kernel-default-base 和 kernel-default
|
# 不能同时装 kernel-default-base 和 kernel-default
|
||||||
chroot $os_dir zypper remove -y -u kernel-default-base
|
|
||||||
|
if ! [ "$installed_kernel" = "$target_kernel" ]; then
|
||||||
|
chroot $os_dir zypper remove -y -u $installed_kernel
|
||||||
|
|
||||||
|
# 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
|
||||||
|
if grep -q '^root:[:!*]' $os_dir/etc/shadow; then
|
||||||
|
echo "root:$(mkpasswd '')" | chroot $os_dir chpasswd -e
|
||||||
|
chroot $os_dir zypper install -y $target_kernel
|
||||||
|
chroot $os_dir passwd -d root
|
||||||
|
else
|
||||||
|
chroot $os_dir zypper install -y $target_kernel
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
# 固件+微码
|
# 固件+微码
|
||||||
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
||||||
chroot $os_dir zypper install -y $fw_pkgs
|
chroot $os_dir zypper install -y $fw_pkgs
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# 选择新内核
|
|
||||||
# 只有 leap 有 kernel-azure
|
|
||||||
if grep -q opensuse-leap $os_dir/etc/os-release && [ "$(get_cloud_vendor)" = azure ]; then
|
|
||||||
kernel='kernel-azure'
|
|
||||||
else
|
|
||||||
kernel='kernel-default'
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 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
|
|
||||||
if grep -q '^root:[:!*]' $os_dir/etc/shadow; then
|
|
||||||
echo "root:$(mkpasswd '')" | chroot $os_dir chpasswd -e
|
|
||||||
chroot $os_dir zypper install -y $kernel
|
|
||||||
chroot $os_dir passwd -d root
|
|
||||||
else
|
|
||||||
chroot $os_dir zypper install -y $kernel
|
|
||||||
fi
|
|
||||||
|
|
||||||
# 最后才删除 cloud-init
|
# 最后才删除 cloud-init
|
||||||
# 因为生成 sysconfig 网络配置要用目标系统的 cloud-init
|
# 因为生成 sysconfig 网络配置要用目标系统的 cloud-init
|
||||||
remove_cloud_init $os_dir
|
remove_cloud_init $os_dir
|
||||||
@ -3707,10 +3724,9 @@ change_root_password() {
|
|||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
disable_selinux_kdump() {
|
disable_selinux() {
|
||||||
os_dir=$1
|
os_dir=$1
|
||||||
|
|
||||||
# selinux
|
|
||||||
# https://access.redhat.com/solutions/3176
|
# https://access.redhat.com/solutions/3176
|
||||||
# centos7 也建议将 selinux 开关写在 cmdline
|
# centos7 也建议将 selinux 开关写在 cmdline
|
||||||
# grep selinux=0 /usr/lib/dracut/modules.d/98selinux/selinux-loadpolicy.sh
|
# grep selinux=0 /usr/lib/dracut/modules.d/98selinux/selinux-loadpolicy.sh
|
||||||
@ -3718,9 +3734,28 @@ disable_selinux_kdump() {
|
|||||||
if [ -f $os_dir/etc/selinux/config ]; then
|
if [ -f $os_dir/etc/selinux/config ]; then
|
||||||
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' $os_dir/etc/selinux/config
|
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' $os_dir/etc/selinux/config
|
||||||
fi
|
fi
|
||||||
chroot $os_dir grubby --update-kernel ALL --args selinux=0
|
|
||||||
|
|
||||||
# kdump
|
# opensuse 没有安装 grubby
|
||||||
|
if is_have_cmd_on_disk $os_dir grubby; then
|
||||||
|
# grubby 只处理 GRUB_CMDLINE_LINUX,不会处理 GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
|
# rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto
|
||||||
|
chroot $os_dir grubby --update-kernel ALL --args selinux=0
|
||||||
|
|
||||||
|
# el7 上面那条 grubby 命令不能设置 /etc/default/grub
|
||||||
|
sed -i 's/selinux=1/selinux=0/' $os_dir/etc/default/grub
|
||||||
|
else
|
||||||
|
# 有可能没有 selinux 参数,但现在的镜像没有这个问题
|
||||||
|
# sed -Ei 's/[[:space:]]?(security|selinux|enforcing)=[^ ]*//g' $os_dir/etc/default/grub
|
||||||
|
sed -i 's/selinux=1/selinux=0/' $os_dir/etc/default/grub
|
||||||
|
|
||||||
|
# 如果需要用 snapshot 可以用 transactional-update grub.cfg
|
||||||
|
chroot $os_dir grub2-mkconfig -o /boot/grub2/grub.cfg
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
disable_kdump() {
|
||||||
|
os_dir=$1
|
||||||
|
|
||||||
# grubby 只处理 GRUB_CMDLINE_LINUX,不会处理 GRUB_CMDLINE_LINUX_DEFAULT
|
# grubby 只处理 GRUB_CMDLINE_LINUX,不会处理 GRUB_CMDLINE_LINUX_DEFAULT
|
||||||
# rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto
|
# rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto
|
||||||
|
|
||||||
@ -4111,7 +4146,8 @@ install_qcow_by_copy() {
|
|||||||
del_default_user /os
|
del_default_user /os
|
||||||
|
|
||||||
# selinux kdump
|
# selinux kdump
|
||||||
disable_selinux_kdump /os
|
disable_selinux /os
|
||||||
|
disable_kdump /os
|
||||||
|
|
||||||
# el7 删除 machine-id 后不会自动重建
|
# el7 删除 machine-id 后不会自动重建
|
||||||
clear_machine_id /os
|
clear_machine_id /os
|
||||||
@ -4877,6 +4913,7 @@ fix_gpt_backup_partition_table_by_sgdisk() {
|
|||||||
|
|
||||||
# 适用于 DD 后修复 gpt 备份分区表
|
# 适用于 DD 后修复 gpt 备份分区表
|
||||||
fix_gpt_backup_partition_table_by_parted() {
|
fix_gpt_backup_partition_table_by_parted() {
|
||||||
|
apk add parted
|
||||||
parted /dev/$xda -f -s print
|
parted /dev/$xda -f -s print
|
||||||
update_part
|
update_part
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user