# shellcheck disable=SC2148 # 设置 keyboard --vckeymap=us --xlayouts='us' lang en_US.UTF-8 timezone Asia/Shanghai --utc rootpw --plaintext 123@@@ text reboot %include /tmp/include-url-command # 分区 %include /tmp/include-disk-only-use %include /tmp/include-bootloader clearpart --all --initlabel reqpart # 如果需要,自动创建 efi 或 biosboot 分区 part / --fstype=xfs --grow # 软件 %packages --ignoremissing # el9 minimal.iso fedora Server repo/iso 没有 tuned @^Minimal Install %include /tmp/include-packages-for-resize %include /tmp/exclude-packages-for-vm %end # 禁用防火墙 # firewall --disabled # 禁用 selinux selinux --disabled # 禁用 kdump %addon com_redhat_kdump --disable %end ############################################## %pre distro=$(awk -F: '{ print $3 }' $include # 设置 tty include=/tmp/include-bootloader # shellcheck disable=SC2154 console_cmdline=$(wget --no-check-certificate --tries=5 "$confhome/ttys.sh" -O- | sh -s console=) echo "bootloader --append=\"$console_cmdline\"" >$include # 有 installer 分区,表示用了两步安装 include=/tmp/include-packages-for-resize touch $include if [ -e /dev/disk/by-label/installer ]; then # 1g内存下,安装器默认开启了zram ,但安装f38还是不够内存 # 具体表现为不断重启安装界面,所以还要开启swap ram_size=$(lsmem -b 2>/dev/null | grep 'Total online memory:' | awk '{ print $NF/1024/1024 }') if [ -z "$ram_size" ] || [ "$ram_size" -le 1024 ]; then mount /dev/disk/by-label/installer /run/install/repo -o remount,rw swapfile=/run/install/repo/swapfile if command -v fallocate; then fallocate -l 1G $swapfile else dd if=/dev/zero of=$swapfile bs=1M count=1024 fi chmod 0600 $swapfile mkswap $swapfile swapon $swapfile fi # feroda 默认不包含 cronie echo cronie >>$include # el7 的parted不支持在线扩容,要用 growpart 和 gdisk 处理 gpt 分区 if [ "$releasever" = "7" ]; then echo cloud-utils-growpart >>$include echo gdisk >>$include fi fi # 排除虚拟机用不上的组件 include=/tmp/exclude-packages-for-vm touch $include if systemd-detect-virt -v; then cat <$include # 不删除usb相关的包 因为甲骨文云有usb设备 作用未知 # -usb_modeswitch # -usbutils # 无线 -iw -crda -rfkill -iwl*-firmware # 其他 -irqbalance # 多核+直通设备可能有用? -microcode_ctl -smartmontools # 各种固件 -aic94xx-firmware -alsa-firmware -ivtv-firmware # -linux-firmware # 去除后安装centos 8会报错 # fedora 特有固件 -amd-gpu-firmware -atheros-firmware -brcmfmac-firmware -intel-gpu-firmware -mt7xxx-firmware -nvidia-gpu-firmware -realtek-firmware EOF fi # 设置安装源 include=/tmp/include-url-command # shellcheck disable=SC2154 if [ "$localtest" = 1 ]; then echo "url --url=$confhome/$releasever/" >$include # echo cdrom >$include else echo "url --mirrorlist=$mirrorlist" >$include # 对于el7/fedora, 添加了 updates repo 才会安装最新的包 if [ "$releasever" = "7" ] || [ "$distro" = "fedoraproject" ]; then echo "repo --name=updates" >>$include fi fi %end ############################################## %post # el9/fedora的sshd默认不允许root密码登录,需手动开启 # rootpw --allow-ssh 9.1 以上才支持 distro=$(awk -F: '{ print $3 }' /etc/ssh/sshd_config.d/01-permitrootlogin.conf fi # 分步安装的系统,要将最后一个分区(installer)合并到系统分区 if [ -e /dev/disk/by-label/installer ]; then # 提取 extra_localtest extra_confhome extra_mirrorlist prefix=extra for var in $(grep -o "\b${prefix}_[^ ]*" /proc/cmdline | xargs); do eval "$(echo "$var" | sed -E "s/${prefix}_([^=]*)=(.*)/\1='\2'/")" done cd / curl -O "$confhome/resize.sh" echo '@reboot root bash /resize.sh' >/etc/cron.d/resize fi %end