pex+kickstart批量化安装操作系统
实现过程
- 客户端会从dhcp池中获取一个IP地址
- 获取到以后,客户端向tftp发送获取pxelinux.0的请求,TFTP接收到消息之后再向Client发送pxelinux.0大小信息,试探Client是否满意,当TFTP收到Client发回的同意大小信息之后,正式向Client发送pxelinux.0,Client执行接收到的pxelinux.0文件
- Client执行接收到的pxelinux.0文件。
- Client向TFTP发送针对本机的配置信息(记录在TFTP的pxelinux.cfg目录下),TFTP将配置文件发回Client,继而Client根据配置文件执行后续操作
- Client向TFTP发送Linux内核请求信息,TFTP接收到消息之后将内核文件发送给Client。
- Client向TFTP发送根文件请求信息,TFTP接收到消息之后返回Linux根文件系统。
- Client启动Linux内核(启动参数已经在4中的配置文件中设置好了)。
- Client通过ftp下载镜像文件,读取autoyast自动化安装脚本, 至此,Client正式进入自动化安装模式开始安装系统直到完成。
开始部署pxe+kickstart
我的环境:
主机名 | IP地址 | 所需的软件 |
---|---|---|
pxe | 192.168.42.1 | dhcp,vsftpd,tftp, xinetd,system-config-kickstart |
- 安装一个dhcp
yum -y install dhcp
- 复制dhcp的配置文件
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- 编辑dhcp的配置文件
cat >> /etc/dhcp/dhcpd.conf <<EOF
##定义一个网段
subnet 192.168.42.0 netmask 255.255.255.0 {
#定义网关
option routers 192.168.42.254;
#定义子网掩码
option subnet-mask 255.255.255.0;
#定义一个地址池
range 192.168.42.100 192.168.42.200;
#定义tftp的IP地址
next-server 192.168.42.2;
#定义pxelinux.0
filename "pxelinux.0";
}
EOF
- 启动dhcp
systemctl start dhcpd
systemctl enable dhcpd
- 安装ftp(从ftp上找镜像文件)
yum -y install vsftpd
- 创建在ftp上存放镜像的目录
mkdir /var/ftp/centos7
- 把安装系统的镜像挂载到ftp下的cnetos7目录下
mount /dev/sr0 /var/ftp/centos7/
- 启动ftp
systemctl start vsftpd
systemctl enable vsftpd
- 关闭防火墙和selinux
systemctl stop firewalld
setenforce 0
- 访问ftp,看能否看到centos7目录里的
- 安装tftp
yum -y install tftp-server xinetd
- 修改tftp文件
sed -i "/disable/s/yes/no/" /etc/xinetd.d/tftp
- 启动tftp
systemctl start tftp
systemctl enable tftp
systemctl start xinetd
systemctl enable xinetd
- 复制镜像文件到tftpboot目录下
cd /var/ftp/centos7/images/pxeboot/
cp vmlinuz initrd.img /var/lib/tftpboot/
- 创建pxelinux.cfg
mkdir /var/lib/tftpboot/pxelinux.cfg
- 进入到pxelinux.cfg目录下
cd /var/lib/tftpboot/pxelinux.cfg/
- 准备pxe引导程序
yum -y install syslinux &>/dev/null
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
- 编辑default文件*(修改IP地址为ftp的地址)
cat > /var//lib/tftpboot/pxelinux.cfg/default <<EOF
default auto
prompt 0
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.42.1/centos7 ks=ftp://192.168.42.1/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.42.1/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.42.1/centos7
EOF
- 安装kickstart应答
yum -y install system-config-kickstart
- 下载ks.cfg的配置文件(这里面配置的是最小安装)
git clone https://gitee.com/xiebinzhe/ks.git
- 复制到ftp目录下
cp /root/ks/ks.cfg /var/ftp/ks.cfg
- 修改ks.cfg里面的ftp的IP地址(root密码为123456,可根据实际情况指定大小,这里我指定的是20G)
vim /var/ftp/ks.cfg
rootpw --iscrypted $1$fSihSUSE$Y37Dlz98SdUVp76SZHPOc.
url --url="ftp://192.168.42.1/centos7"
part / --fstype="xfs" --ondisk=sda --size=20000