制作自动安装Rocky-9.6-minimal.iso镜像

一、原理特色

1 本方案用ksckstart文件做无人值守应答

2 调试成传统网络设备命名方案eht0

3 默认磁盘分区为标准分区非lvm分区

4 用iso刻录成u盘使用

5 指定固定IP GATEWAY DNS

6 定制密码策略

二、准备iso镜像

https://download.rockylinux.org/pub/rocky/9/isos/x86_64/Rocky-9.3-x86_64-minimal.iso

三、准备引导菜单文件 (我们可以从iso的isolinux中提取)vim isolinux.cfg   Unix UTF-8

# 只显示需要修改的部分其他和原版一样
label linux
  menu label ^Install Rocky Linux 9.6
  kernel vmlinuz
  # 指定dvd光盘驱动器(光盘安装)
  append initrd=initrd.img inst.repo=cdrom inst.ks=cdrom:/isolinux/ks.cfg biosdevname=0 net.ifnames=0 quiet
  # 指定 U盘 文件系统标签LABEL=Rocky-9-6-x86_64-DVD(要通过genisoimage写入文件系统标签,我们用原始镜像默认的标签)
  # append initrd=initrd.img inst.repo=hd:LABEL=Rocky-9-6-x86_64-DVD inst.ks=cdrom:/isolinux/ks.cfg biosdevname=0 net.ifnames=0 quiet

补充:

# 用iso镜像写入到usb盘的如何确定标签 
1 这个标签是usb的标签  LABEL=
# 写入iso后会有默认标签如何查询usb标签
方法1: cmd -- 输入win10自带命令工具名称 diskpart --  list volume 即可看到 对应的标签字样
方法2:右键我的电脑 -- 管理 -- 设备管理器 -- 磁盘驱动器 -- 选取你的U盘 -- 右键属性 -- 常规里有标签 -- 如果没有就是usb分了多个卷 -- 点击卷菜单 -- 写入 -- 查看某个卷的标签 

 四、制作ksckstart文件  vim ks.cfg    Unix UTF-8

#version=RHEL9
# 自动执行界面
autostep --nosave
cdrom
#语言键盘
lang en_US.UTF-8
keyboard --vckeymap=us --xlayouts='us'
# 主机网络
network --hostname=kcadmin
network --bootproto=static --device=eth0 --gateway=192.168.163.2 --ip=192.168.163.204 --nameserver=8.8.8.8 --netmask=255.255.255.0 --ipv6=auto --activate
# 时区与地区设置
timezone Asia/Shanghai --utc
eula --agreed
firstboot --disable
# root密码
rootpw --iscrypted $6$5pqjRUPHn6cyHS12$m2zRJKWf9FGRzaFLUfLNDDaFPBgR5Bz1JDBVhQHJ4ZYk2SVlGF7o9xqDc35dczsgRZ5LZ3cc2ykh1rpIZZA.V/
# 关闭防火墙selinux
firewall --disabled
selinux  --disabled
# 安装最小环境所需包
%packages
@^minimal-environment
%end
# 安装完成自动重启并弹出安装介质
reboot --eject
# yum源
repo --name="minimal" --baseurl=file:///run/install/sources/mount-0000-cdrom/minimal
# 关闭kdump
%addon com_redhat_kdump --disable
%end

# ------ PRE SCRIPT:识别磁盘并生成分区配置 ------
%pre --interpreter /bin/bash --log=/tmp/pre.log
DISK=$(lsblk -dn -o NAME | grep -E '^(sda|vda|hda|nvme[0-9]n1)$' | head -n1)
if [ -z "$DISK" ]; then
  echo "No valid disk found." >> /tmp/pre.log
  exit 1
fi

{
echo "ignoredisk --only-use=$DISK"
echo "clearpart --drives=$DISK --initlabel"
echo "part /boot --fstype=xfs --ondisk=$DISK --size=1024"
echo "part swap --fstype=swap --ondisk=$DISK --size=2048"
echo "part / --fstype=xfs --ondisk=$DISK --size=17407 --grow"
} > /tmp/dynamic-part.ks

echo "Generated partition file for $DISK" >> /tmp/pre.log
%end

# 引用动态分区文件
%include /tmp/dynamic-part.ks

# ------ POST SCRIPT:1配置允许ssh-root密码登录2limits3内核参数  ------
%post --interpreter /bin/bash --log=/tmp/post.log
# 配置允许root密码登录
systemctl enable sshd
systemctl start sshd
sed -i 's/^#PermitRootLogin.*/PermitRootLogin yes/' /etc/ssh/sshd_config
sed -i 's/^#PermitEmptyPasswords.*/PermitEmptyPasswords no/' /etc/ssh/sshd_config
systemctl restart sshd
# 设置资源限制
cat > /etc/security/limits.d/99-custom-limits.conf << EOF
* soft nofile 65536
* hard nofile 131072
* soft nproc 65536
* hard nproc 131072
EOF
# 设置内核参数
cat > /etc/sysctl.d/99-custom-sysctl.conf << EOF
fs.file-max = 2097152
vm.swappiness = 10
net.core.somaxconn = 65535
net.ipv4.tcp_tw_reuse = 1
net.ipv4.ip_forward = 1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
EOF
# 立即应用 sysctl 设置
sysctl --system
%end

 

五、准备iso刻录修改工具 UltraISO 9.7.3.3618 (软碟通)把上述2个文件导入iso

5.1 导入isolinux.cfg 到  iso的isolinux目录

5.2 导入  ks.cfg   到  iso的isolinux目录

5.3 另存为Rocky93-autoinstall.iso 

5.4 如果想设置卷标则  UltraISO -- 工具 -- 修改iso卷标 -- 建议全大写(大小写敏感)

六、上机测试

七、磁盘的精细化选择

# 是 sda vda hda nvme 磁盘
# 且大于32G磁盘 (避免U盘被被选中)

DISK=$(lsblk -dn -o NAME,SIZE | awk '$2 ~ /G$/ && $2+0 > 32 && $1 ~ /^(sda|vda|hda|nvme[0-9]n1)$/ {print $1}' | head -n1)

 

posted on 2023-12-05 11:35  luokeli  阅读(2159)  评论(0)    收藏  举报

导航