Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

发布于:2025-02-11 ⋅ 阅读:(16) ⋅ 点赞:(0)

Kickstart自动化安装过程中自动选择较小的磁盘安装操作系统

需求

在实际生成操作过程中,一般会遇到物理服务器存在多块盘的情况。
安装过程中,磁盘的标签是随机分配的,并不是空间较小的盘,就会使用较小的磁盘标签
而需求往往需要将操作系统安装到较小的盘中作为系统盘

问题分析

  • 需要判断出当前物理机存在磁盘的数量
  • 需要选举出较小的磁盘
  • 指定较小磁盘的磁盘标签进行自动化安装

处理办法

  • Linux提供了list-harddrives变量,用于保存当前机器的磁盘情况
    • 该变量的格式为:
echo $(list-harddrives)
磁盘标签1 磁盘1大小 磁盘标签2 磁盘2大小 ...
  • 可以使kickstart提供的%per脚本输出最小的磁盘的标签,用于获取指定的磁盘
    • %per脚本:
      • kickstart中用于在安装操作系统前执行的脚本
      • 此处脚本执行过程中,是在chroot环境下,部分命令和参数无法使用,需要注意
  • 同时将创建磁盘和vg的命令输出到临时文件中
  • 使用kickstart的include功能执行命令
  • 案例如下:
# 假设 list-harddrives 命令的输出是这样的:sda 20480 sdb 10240
output=$(list-harddrives)

# 初始化最小磁盘大小和名称
min_size=999999999999
min_disk=""

# 遍历输出中的每个磁盘信息
# 使用 set -- $output 将输出分割为位置参数
set -- $output
while (( "$#" )); do
    disk=$1
    shift
    size=$1
    size_int=${size%.*}
    shift
    
    # 比较大小,更新最小磁盘信息
    if (( size_int < min_size )); then
        min_size=$size_int
        min_disk=$disk
    fi
done

# 选举出最小的磁盘标签
# 将最小磁盘标签引用到以下的命令中
# 将命令输出到/tmp/part中

echo "ignoredisk --only-use=${min_disk}" >> /tmp/part
# Partition clearing information
echo "clearpart --all --initlabel" >> /tmp/part
# Disk partitioning information
echo "part /boot --fstype="xfs" --ondisk=${min_disk} --size=1024" >> /tmp/part
echo "part /boot/efi --fstype="efi" --ondisk=${min_disk} --size=600 --fsoptions="umask=0077,shortname=winnt"" >> /tmp/part
echo "part pv.119 --fstype="lvmpv" --ondisk=${min_disk} --size=1 --grow" >> /tmp/part
echo "volgroup vg00 --pesize=4096 pv.119" >> /tmp/part
echo "logvol swap --fstype="swap" --size=32768 --name=lvswap --vgname=vg00" >> /tmp/part
echo "logvol / --fstype="xfs" --size=71676 --name=lvroot --vgname=vg00" >> /tmp/part
echo "logvol /home --fstype="xfs" --size=61440 --name=lvhome --vgname=vg00" >> /tmp/part
echo "logvol /usr --fstype="xfs" --size=71676 --name=lvusr --vgname=vg00" >> /tmp/part
echo "logvol /var --fstype="xfs" --size=153596 --name=lvvar --vgname=vg00" >> /tmp/part
%end

# 将临时文件中的命令包含到kickstart配置中
# include diskinfo
zerombr
%include /tmp/part

网站公告

今日签到

点亮在社区的每一天
去签到