mirror of
https://github.com/bin456789/reinstall.git
synced 2025-01-18 20:39:14 +08:00
180 lines
5.0 KiB
INI
180 lines
5.0 KiB
INI
# shellcheck disable=2148
|
||
# 设置
|
||
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 }' </etc/system-release-cpe)
|
||
releasever=$(awk -F: '{ print $5 }' </etc/system-release-cpe)
|
||
|
||
# 重新整理 extra,grub把两侧的引号吃掉了,eval出错,要重新添加引号
|
||
# 提取 extra.confhome extra.mirrorlist extra.main_disk
|
||
prefix=extra
|
||
for var in $(grep -o "\b$prefix\.[^ ]*" /proc/cmdline | xargs); do
|
||
eval "$(echo $var | sed -E "s/$prefix\.([^=]*)=(.*)/\1='\2'/")"
|
||
done
|
||
|
||
get_all_disks() {
|
||
lsblk -rn --nodeps -o NAME,TYPE | grep 'disk$' | awk '{print $1}'
|
||
}
|
||
|
||
get_xda() {
|
||
# 防止 $main_disk 为空
|
||
if [ -z "$main_disk" ]; then
|
||
return
|
||
fi
|
||
|
||
for disk in $(get_all_disks); do
|
||
# shellcheck disable=SC2154
|
||
if fdisk -l "/dev/$disk" | grep -iq "$main_disk"; then
|
||
echo "$disk"
|
||
break
|
||
fi
|
||
done
|
||
}
|
||
|
||
# 只使用主硬盘
|
||
include=/tmp/include-disk-only-use
|
||
echo "ignoredisk --only-use=$(get_xda)" >$include
|
||
|
||
# 设置 tty
|
||
include=/tmp/include-bootloader
|
||
console_cmdline=$(wget $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 <<EOF >$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/system-release-cpe)
|
||
releasever=$(awk -F: '{ print $5 }' </etc/system-release-cpe)
|
||
if [ "$releasever" = "9" ] || [ "$distro" = "fedoraproject" ]; then
|
||
echo "PermitRootLogin yes" >/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
|