小丑的个人博客

记录精彩的学习过程

  menu
17 文章
0 浏览
ღゝ◡╹)ノ❤️

制作自动安装centos的ISO

目的:重新打包ISO以达到无需人工干预,自动安装系统

准备工作

准备好需要的ISO镜像

[root@localhost ~]# ll /data/CentOS-7-x86_64-DVD-1810-Hygon-v7.iso 
-rw-r--r--. 1 root root 4649385984 Dec 17 03:31 /data/CentOS-7-x86_64-DVD-1810-Hygon-v7.iso

创建目录

mkdir -p /data/{centos7,centos7_rw}
# ISO文件只能以只读方式挂载,想要修改,需要复制到另一个目录,所以此处创建两个目录
# centos7目录用来挂载ISO镜像,centos7_rw用来修改镜像

准备ks文件

ks文件获取方式有两种

1.到已经安装好的机器上,复制anaconda-ks.cfg

2.使用system-config-kickstart生成ks文件。system-config-kickstart需要安装,一般系统没有自带,这个安装包在base源。

3.使用system-config-kickstart需要安装system-config-kickstart

cp anaconda-ks.cfg /data/centos7_rw/ks.cfg

修改ks.cfg文件

安装完成自动重启
	可在任意地方加入reboot (此选项的意义是安装完成后自动重启)

网络设置
	可以设置是否启用网卡,是否dhcp获得ip,是否激活网卡等等。
	如果要保持默认可以删除关于 Network information 的配置

分区设置
	# Disk partitioning information
	part / --fstype="ext4" --ondisk=sda --size=455784
	part /boot --fstype="ext4" --ondisk=sda --size=1024
	根目录的size可以设置为"1", 加上--grow参数,此参数的意义是:除了其他分区占用的空间外,占用所有空间。
	这里的数字不要设置太大,即使设置了--grow参数,如果值超过了分区大小,启动过程会报错。默认单位是M


ks示例文件:

#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
# old format: keyboard us
# new format:
keyboard --vckeymap=us --xlayouts='us'
# Root password 此处密码为"1"
rootpw --iscrypted $1$k12Ervwf$BD4816b4.BrNT1HrZZkcu/
# System language
lang en_US
# System authorization information
auth  --useshadow  --passalgo=sha512
# Use CDROM installation media
cdrom
# Use text mode install 文本界面安装
text
# Run the Setup Agent on first boot
firstboot --enable
# SELinux configuration 关闭selinux
selinux --disabled
# Do not configure the X Window System
skipx

# System services  设置chrony服务开机启动
services --enabled="chronyd"
ignoredisk --only-use=sda
# Firewall configuration 关闭防火墙
firewall --disabled
# Reboot after installation  安装完成自动重启
reboot
# System timezone  设置时区
timezone Asia/Shanghai
# System bootloader configuration 
bootloader --location=mbr --boot-drive=sda
# Clear the Master Boot Record
zerombr
# Partition clearing information  如果有系统,加了这一行,会清空系统
clearpart --all --initlabel --drives=sda
# Disk partitioning information 分区策略
part / --fstype="xfs" --grow --ondisk=sda --size=4
part /boot --fstype="ext4" --ondisk=sda --size=1024

############ 安装完成后运行的脚本,如果没有需求,可以删除下面的脚本 ############
%post
cat >> /root/a.sh <<'EOF'
#!/bin/bash

read -p "please input IP [11.23]: " ip


eth1=enp66s0f0
eth2=enp66s0f1
IPADDR=172.16

modprobe --first-time bonding

function makebond() {
cat > /etc/sysconfig/network-scripts/ifcfg-bond0 <<EOF
TYPE=bond
BOOTPROTO=none
NAME=bond0
DEVICE=bond0
IPADDR=${IPADDR}.${ip}
NETMASK=255.255.0.0
GATEWAY=${IPADDR}.1.1
DNS1=114.114.114.114
ONBOOT=yes
BONDING_MASTER=yes
BONDING_OPTS="miimon=100 mode=4 xmit_hash_policy=layer3+4" 
EOF

cp /etc/sysconfig/network-scripts/ifcfg-${eth1}{,.backup}
cp /etc/sysconfig/network-scripts/ifcfg-${eth2}{,.backup}

cat > /etc/sysconfig/network-scripts/ifcfg-${eth1} << EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=${eth1}
DEVICE=${eth1}
MASTER=bond0
SLAVE=yes
ONBOOT=yes
EOF
cat > /etc/sysconfig/network-scripts/ifcfg-${eth2} << EOF
TYPE=Ethernet
BOOTPROTO=none
NAME=${eth2}
DEVICE=${eth2}
MASTER=bond0
SLAVE=yes
ONBOOT=yes
EOF
}

makebond

EEEEOF
%end
############ 安装后脚本结束 ############

# 要安装的软件包
%packages
@^minimal
@core
chrony

%end

挂载ISO镜像

 mount -o loop /data/CentOS-7-x86_64-DVD-1810-Hygon-v7.iso  /data/centos7

复制所有文件到可写目录

cp -a /data/centos7/*  /data/centos7_rw/

ll [root@localhost ~]# ll /data/centos7_rw/
total 332
-rw-r--r--. 1 root root    837 Dec 17 04:28 bond.sh
-r--r--r--. 1 root root   2048 Oct 26  2019 boot.cat
-r--r--r--. 1 root root     14 Nov 26  2018 CentOS_BuildTag
dr-xr-xr-x. 3 root root     35 Nov 26  2018 EFI
-r--r--r--. 1 root root    227 Aug 30  2017 EULA
-r--r--r--. 1 root root  18009 Dec 10  2015 GPL
dr-xr-xr-x. 3 root root     57 Nov 26  2018 images
dr-xr-xr-x. 2 root root    198 Dec 17 04:49 isolinux
-rw-r--r--. 1 root root   1325 Dec 17 04:49 ks.cfg
dr-xr-xr-x. 2 root root     43 Nov 26  2018 LiveOS
dr-xr-xr-x. 2 root root 225280 Oct 26  2019 Packages
dr-xr-xr-x. 2 root root   4096 Oct 26  2019 repodata
-r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-7
-r--r--r--. 1 root root   1690 Dec 10  2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root   3103 Oct 26  2019 TRANS.TBL

开始制作

修改isolinux.cfg

vim /data/centos7_rw/isolinux/isolinux.cfg 


label linux
  menu label ^Install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet ks=cdrom:/ks.cfg

label check
  menu label Test this ^media & install CentOS 7
  kernel vmlinuz
  append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet

# 此文件第二行 timeout 600 ,此选项作用是超时时间,默认60秒。
# 删除check标签下的menu default选项,在linux标签里添加menu default,这个选项的意思是,开机以后,光标默认在那个label上(超时后会自动进入)
# 在linux标签下的append选项最后,加入  ks=cdrom:/ks.cfg
# 此文件为只读文件,所以退出时,需要:wq!

打包ISO

mkisofs -R -J -T -v --no-emul-boot --boot-load-size 4 --boot-info-table -V "CentOS 7 x86_64" -b isolinux/isolinux.bin -c isolinux/boot.cat -o /data/centos7.iso /data/centos7_rw/

# /data/centos7_rw/  # 要打包的文件根目录
# /data/centos7.iso  # 输出文件的路径
#  -V "CentOS 7 x86_64"   # 光盘的标签

-R 使用Rock Ridge Extensions
-J 使用Joliet格式的目录与文件名称。
-T 建立文件名的转换表,适用于不支持Rock Ridge Extensions的系统上。
-v 执行时显示详细的信息
--boot-load-size设置加载扇区数
-V 指定光盘的卷册集ID
-b 指定在制作可开机光盘时所需的开机映像文件。
-c 制作可开机光盘时,mkisofs会将开机映像文件中的全-eltorito-catalog<开机文件名称>全部内容作成一个文件。
-o 指定映像文件的名称。

标题:制作自动安装centos的ISO
作者:harbor
地址:http://www.ipfshyys.com/articles/2022/10/24/1666626779022.html