mirror of
https://github.com/bin456789/reinstall.git
synced 2025-06-07 21:09:56 +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
|
||||
file=openSUSE-Tumbleweed-Minimal-VM.$basearch-Cloud.qcow2
|
||||
else
|
||||
# 常规版本
|
||||
# leap
|
||||
dir=distribution/leap/$releasever/appliances
|
||||
file=openSUSE-Leap-$releasever-Minimal-VM.$basearch-Cloud.qcow2
|
||||
fi
|
||||
if [ "$releasever" = 15.6 ]; then
|
||||
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
|
||||
}
|
||||
|
||||
@ -1713,7 +1730,7 @@ Continue with DD?
|
||||
# 集中测试云镜像格式
|
||||
if is_use_cloud_image && [ "$step" = finalos ]; then
|
||||
# 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
|
||||
}
|
||||
|
||||
@ -1753,7 +1770,7 @@ verify_os_name() {
|
||||
'fedora 40|41' \
|
||||
'nixos 24.11' \
|
||||
'debian 9|10|11|12' \
|
||||
'opensuse 15.6|tumbleweed' \
|
||||
'opensuse 15.6|16.0|tumbleweed' \
|
||||
'alpine 3.18|3.19|3.20|3.21' \
|
||||
'openeuler 20.03|22.03|24.03|25.03' \
|
||||
'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
|
||||
|
||||
disable_selinux_kdump $os_dir
|
||||
disable_selinux $os_dir
|
||||
disable_kdump $os_dir
|
||||
|
||||
if fw_pkgs=$(get_ucode_firmware_pkgs) && [ -n "$fw_pkgs" ]; then
|
||||
is_have_cmd_on_disk $os_dir dnf && mgr=dnf || mgr=yum
|
||||
@ -3344,9 +3345,17 @@ EOF
|
||||
|
||||
disable_jeos_firstboot $os_dir
|
||||
|
||||
# opensuse leap
|
||||
if grep opensuse-leap $os_dir/etc/os-release; then
|
||||
# 16.0 需要安装 openssh
|
||||
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
|
||||
create_cloud_init_network_config $os_dir/net.cfg
|
||||
chroot $os_dir cloud-init devel net-convert \
|
||||
@ -3388,11 +3397,8 @@ EOF
|
||||
|
||||
# 清理
|
||||
rm -rf $os_dir/net.cfg $os_dir/out
|
||||
fi
|
||||
|
||||
# opensuse tumbleweed
|
||||
# network-manager
|
||||
if grep opensuse-tumbleweed $os_dir/etc/os-release; then
|
||||
else
|
||||
# 如果使用 cloud-init 则需要 touch NetworkManager.conf
|
||||
# 更新到 cloud-init 24.1 后删除
|
||||
# touch $os_dir/etc/NetworkManager/NetworkManager.conf
|
||||
@ -3403,34 +3409,45 @@ EOF
|
||||
rm /net.cfg
|
||||
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
|
||||
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
|
||||
chroot $os_dir zypper install -y $fw_pkgs
|
||||
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
|
||||
# 因为生成 sysconfig 网络配置要用目标系统的 cloud-init
|
||||
remove_cloud_init $os_dir
|
||||
@ -3707,10 +3724,9 @@ change_root_password() {
|
||||
fi
|
||||
}
|
||||
|
||||
disable_selinux_kdump() {
|
||||
disable_selinux() {
|
||||
os_dir=$1
|
||||
|
||||
# selinux
|
||||
# https://access.redhat.com/solutions/3176
|
||||
# centos7 也建议将 selinux 开关写在 cmdline
|
||||
# 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
|
||||
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/g' $os_dir/etc/selinux/config
|
||||
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
|
||||
# rocky 的 GRUB_CMDLINE_LINUX_DEFAULT 有 crashkernel=auto
|
||||
|
||||
@ -4111,7 +4146,8 @@ install_qcow_by_copy() {
|
||||
del_default_user /os
|
||||
|
||||
# selinux kdump
|
||||
disable_selinux_kdump /os
|
||||
disable_selinux /os
|
||||
disable_kdump /os
|
||||
|
||||
# el7 删除 machine-id 后不会自动重建
|
||||
clear_machine_id /os
|
||||
@ -4877,6 +4913,7 @@ fix_gpt_backup_partition_table_by_sgdisk() {
|
||||
|
||||
# 适用于 DD 后修复 gpt 备份分区表
|
||||
fix_gpt_backup_partition_table_by_parted() {
|
||||
apk add parted
|
||||
parted /dev/$xda -f -s print
|
||||
update_part
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user