PXE+Kickstart实现无人值守安装CentOS
一、业务背景
在云数据中心,批量服务器上线时,逐台进行系统安装与配置的工作量巨大。为解决该问题,需要实现无人值守批量部署系统,PXE+Kickstart技术应运而生。1. PXE原理
PXE主要起引导作用,引导流程为:PXE客户端向DHCP服务器请求IP地址,DHCP服务器返回IP地址和PXE文件位置;客户端请求pxelinux.0并执行,接着请求配置文件(pxelinux.cfg)、vmlinuz和initrd.img,最终启动Linux内核。2. Kickstart原理
Kickstart是一种无人值守的安装方式,它记录安装过程中需人工干预填写的参数,如分区、设置时区、root密码、安装后执行的脚本等,并生成ks.cfg文件,在安装时使用该文件实现自动化安装。二、环境准备
1.操作系统:CentOS 7.4(最小化安装)。
2. 实验平台:VMware Workstation 17。
3. 网络模式:NAT模式。
4. 服务器IP地址:192.168.202.102。
5. 防火墙:关闭。
6. SElinux:Disable。
三、准备工作
若系统当初为图形化安装,则无需此步骤。生成ks.cfg文件依赖system-config-kickstart工具,该工具依赖X Windows,因此需安装X Windows和Desktop并重启系统:- 挂载光盘
[root@master ~]# mkdir /mnt/cdrom
[root@master ~]# mount /dev/cdrom /mnt/cdrom
- 安装图形化界面
[root@master ~]# systemctl set-default graphical.target
[root@master ~]# yum groupinstall "Server with GUI" -y
[root@master ~]# reboot
四、安装需要的服务
1. 配置DHCP
1. **安装DHCP服务**[root@master ~]# yum install dhcp -y
- 修改配置文件:编辑
/etc/dhcp/dhcpd.conf
,设置网段、IP地址范围、子网掩码、租期时间、tfp服务端IP地址和网络引导程序等。
[root@master ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.202.0 netmask 255.255.255.0 {
range 192.168.202.130 192.168.202.199;
option subnet-mask 255.255.255.0;
default-lease-time 21600;
max-lease-time 43200;
next-server 192.168.202.102;
filename "/pxelinux.0";
}
- 启动DHCP服务
[root@master ~]# systemctl start dhcpd
[root@master ~]# systemctl enable dhcpd
- 测试DHCP:新建虚拟机,若能成功获取IP地址和其他信息,则DHCP配置成功。
2. 配置TFTP
1. **安装TFTP、Xinetd**[root@master ~]# yum install tftp-server xinetd -y
- 修改配置文件:编辑
/etc/xinetd.d/tftp
,将disable
设置为no
。
[root@master ~]# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}
- 启动TFTP服务:由于tftp服务挂载在xinetd下,启动xinetd即可启动tftp服务。
[root@master ~]# systemctl start xinetd
[root@master ~]# systemctl enable xinetd
- 检查TFTP服务:使用
netstat -ntulp | grep 69
检查tftp服务是否启动成功。
3. 创建default文件并修改
1. 创建配置文件夹[root@master ~]# cd /var/lib/tftpboot/
[root@master tftpboot]# mkdir pxelinux.cfg
- 复制配置文件
[root@master ~]# cp /var/lib/tftpboot/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@master ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
- 修改配置:将
default vesamenu.c32
修改为default linux
;找到label linux
部分,修改配置,添加内核参数、ks配置文件路径等。
label linux
net.ifnames=0 biosdevname=0
menu label ^Install PXE+Kickstart_CentOS7
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.202.102/ks/ks.cfg ksdevice=eth0
4. 安装Syslinux
1. **安装syslinux**:安装syslinux以获取pxelinux.0引导加载程序。[root@master ~]# yum install syslinux -y
- 复制文件
[root@master ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@master ~]# cp /mnt/cdrom/isolinux/* /var/lib/tftpboot/
- 验证:重启新建的测试虚拟机,若出现相关安装引导界面,则说明配置成功。
5. 配置HTTP
1. 安装HTTP[root@master ~]# yum install httpd -y
- 启动HTTP
[root@master ~]# systemctl start httpd
[root@master ~]# systemctl enable httpd
- 复制文件:将光盘全部内容复制到http的根目录
/var/www/html/pub
下。
[root@master ~]# mkdir /var/www/html/pub
[root@master ~]# cp -r /mnt/cdrom/ /var/www/html/pub
- 验证:在浏览器输入
http://192.168.202.102/pub
,若能正确显示目录内容,则配置成功。
6. 配置本地yum源
修改本地yum源信息,编辑`/etc/yum.repos.d/CentOS-Media.repo`,设置`name`为“development”,指定`baseurl`,关闭`gpgcheck`。[root@master ~]# vim /etc/yum.repos.d/CentOS-Media.repo
name=CentOS7 [development]
baseurl=file:///mnt/cdrom
gpgcheck=0
7. 安装kickstart并设置
1. **安装kickstart**[root@master ~]# yum install system-config-kickstart -y
- 启动kickstart:可在桌面环境的“应用程序-系统工具”中找到Kickstart,也可通过命令启动。
[root@master ~]# system-config-kickstart
- Kickstart配置:依次完成基本配置(语言、键盘、时区、Root密码等)、安装方法(选择HTTP方式)、引导装载程序选项、分区信息、网络配置、验证配置、防火墙配置、显示配置、软件包选择、安装后脚本等设置。完成配置后,点击“文件-预览”预览配置参数,点击“保存”将配置文件
ks.cfg
保存到root用户家目录,并复制到/var/www/html/ks/
目录下。