欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

程序员文章站 2022-03-21 22:12:52
...

一、PXE服务简介

大家应该都会使用光盘镜像或U盘进行安装操作系统,但在生产环境中遇到上百台的服务器时再使用人工一台一台安装系统就不太现实了,这之后PXE服务就应运而生了。

​ PXE(Preboot eXecute Environment,预启动执行环境)是由Intel 公司开发的技术,可以让计算机通过网络来启动操作系统(前提是计算机上安装的网卡支持PXE 技术),主要用于在无人机值守安装系统中引导客户端主机安装Linux 操作系统。Kickstart 是一种无人值守的安装方式,其工作原理是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg 文件,当安装过程中需要填写参数时则自动匹配Kickstart 生成的文件。所以只要Kickstart 文件包含了安装过程中需要人工填写的所有参数,那么从理论上来讲完全不需要运维人员的干预,就可以自动完成安装工作。
​ 由于客户端主机并没有完整的操作系统,也就不能完成FTP 协议的验证了,所以
需要使用TFTP 协议帮助客户端获取引导及驱动文件。vsftpd 服务程序用于将完整的系统安装
镜像通过网络传输给客户端。

二、详细搭建步骤

实验环境:VMware Workstation 15.5、X Shell 6、Centos7.6(PXE服务器)

1、首先为PXE服务器设置双网卡(NAT+仅主机)

ps:使用双网卡是因为NAT模式下需要联网下载所需服务软件包,而仅主机网卡则保证服务器与客户机在同一局域网中
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

2、将待部署操作系统客户机的网卡也设置成仅主机
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

3、进入服务器网卡配置文件目录,查看网卡信息

[aaa@qq.com ~]# cd /etc/sysconfig/network-scripts/

其中只有一块网卡的信息,现在需要再创建仅主机模式的网卡

直接复制一份ens33的配置文件改名为ens36

[aaa@qq.com network-scripts]# cp ifcfg-ens33 ifcfg-ens36

编辑ens36网卡

[aaa@qq.com network-scripts]# vi ifcfg-ens36

以下为配置信息:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.10.100
NETMASK=255.255.255.0

【注意】:请删除UUID和网关(GATEWAY)信息,并且要将ens33改为ens36!

4、重启网卡

[aaa@qq.com network-scripts]# service network restart

5、安装dhcp服务

[aaa@qq.com network-scripts]# yum -y install dhcp

6、编辑dhcp服务配置文件

## dhcp配置文件存放在:/etc/dhcp/dhcpd.conf中,但是打开会发现让你去另一个目录中找配置文件模板,所以要复制一份过来

[aaa@qq.com network-scripts]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf    ## 复制模板并替换原配置文件
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes       ## 输入yes替换


[aaa@qq.com dhcp]# vi /etc/dhcp/dhcpd.conf    ## 编辑配置文件

修改以下内容:

# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.

subnet 192.168.10.0 netmask 255.255.255.0 {     ## 网段及子网掩码
  range 192.168.10.150 192.168.10.200;         ##分配IP地址池
  option routers 192.168.10.100;            ## 网关
  option domain-name-servers 192.168.10.100;      ##DNS服务器地址
  next-server 192.168.10.100;         ## 
  filename "pxelinux.0";           ## 
}

7、dhcp配置完成,下面安装tftp及引导程序

[aaa@qq.com network-scripts]# yum -y install tftp-server
[aaa@qq.com network-scripts]# yum -y install syslinux

8、编辑tftp服务配置文件

[aaa@qq.com network-scripts]# vi /etc/xinetd.d/tftp
将disabled=yes改为no

9、将pxelinux.0引导程序拷贝的TFTP站点目录下

[aaa@qq.com xinetd.d]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

10、安装VSFTP服务

[aaa@qq.com xinetd.d]# yum -y install vsftpd

10、进入ftp站点目录,新建挂载目录,然后将光盘镜像挂载到新建的目录中

[aaa@qq.com xinetd.d]# cd /var/ftp/
[aaa@qq.com ftp]# mkdir centos7
[aaa@qq.com ftp]# mount /dev/cdrom /var/ftp/centos7/

ps:如果光盘之前已经挂载到其他地方,可以使用umount命令对其进行卸载后再挂载

11、进入光盘镜像中,将其中的压缩内核与初始化镜像文件拷贝到TFTP站点目录中

[aaa@qq.com ftp]# cd /var/ftp/centos7/images/pxeboot/
[aaa@qq.com pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/

12、进入TFTP站点目录,新建一个引导配置文件存放目录,进入该目录并新建一个名为default的配置文件,编辑该文件

[aaa@qq.com pxeboot]# cd /var/lib/tftpboot/
[aaa@qq.com tftpboot]# mkdir pxelinux.cfg
[aaa@qq.com tftpboot]# cd pxelinux.cfg/
[aaa@qq.com pxelinux.cfg]# vi default

## 下入以下内容:

default auto
prompt 1

label auto
  kernel vmlinuz
  append initrd=initrd.img method=ftp://192.168.10.100/centos7

label linux text
  kernel vmlinuz
  append text initrd=initrd.img method=ftp://192.168.10.100/centos7

label linux rescue
  kernel vmlinuz
  append rescue initrd=initrd.img method=ftp://192.168.10.100/centos7
  
## 编辑完成后保存退出

13、开启服务前关闭系统核心防护及防火墙

[aaa@qq.com pxelinux.cfg]# setenforce 0
[aaa@qq.com pxelinux.cfg]# systemctl stop firewalld

14、启动三项服务(DHCP、TFTP、FTP)

[aaa@qq.com pxelinux.cfg]# systemctl start dhcpd
[aaa@qq.com pxelinux.cfg]# systemctl start tftp
[aaa@qq.com pxelinux.cfg]# systemctl start vsftpd

15、返回需要安装操作系统的客户机,单击“开启此虚拟机”按钮

机器客户机首先会通过dhcp服务获取IP,然后通过tftp与ftp加载内核与镜像进行安装,稍后就会弹出安装界面了
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

如果几台机器还好,但如果是成百上千的机器根本不可能让人工去手动操作安装系统,所以这个时候需要用到Kickstart(无人值守)来自动部署

16、在服务器上安装Kickstart服务软件

[aaa@qq.com pxelinux.cfg]# yum -y install system-config-kickstart

17、在图形化界面左上角点击“应用程序”按钮,选择“系统工具”中的Kickstart打开软件
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

18、软件界面非常简洁,只需要简单配置即可

①基本配置(设置默认语言、时区,勾选给root密码加密,与安装后重启)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

②安装方法(单击FTP,配置FTP服务器IP并设置FTP目录)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

③引导装载程序选项(单击安装新引导装载程序、在主引导记录中安装引导装载程序)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

④分区信息(根据实际需求添加分区,点击“添加“按钮即可)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

⑤网络配置(单击”添加网络设备“按钮,输入”ens33“)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

⑥防火墙配置(请选择禁用SELinux,是否禁用防火墙根据实际情况而定)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

⑦安装后脚本(勾选使用解释程序,并输入/bin/bash)
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

配置完成后保存文件到桌面即可

19、编辑服务器系统家目录下的配置文件:vi anaconda-ks.cfg ,将其中安装的所有软件包列表复制,粘贴到刚才生成的ks.cfg配置文件中

%packages
@^gnome-desktop-environment
@backup-client
@base
@compat-libraries
@core
@desktop-debugging
@development
@dial-up
@directory-client
@fonts
@gnome-apps
@gnome-desktop
@guest-agents
@guest-desktop-agents
@input-methods
@internet-applications
@internet-browser
@java-platform
@legacy-x
@multimedia
@network-file-system-client
@networkmanager-submodules
@office-suite
@print-client
@security-tools
@smart-card
@system-admin-tools
@x11
chrony
kexec-tools

%end

Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

19、因为我们创建了用户配置文件,所以要修改default配置文件让其识别到ks.cfg文件

编辑default文件,在其中添加以下内容

[aaa@qq.com pxelinux.cfg]# vi /var/lib/tftpboot/pxelinux.cfg/default

添加内容:
append initrd=initrd.img method=ftp://192.168.10.100/centos7 ks=ftp://192.168.10.100/ks.cfg

Centos 7 使用PXE+Kickstart实现无人值守安装操作系统

修改完后将之前生成的ks.cfg用户配置文件移动到ftp目录中

[aaa@qq.com ~]# cd 桌面/ && mv ks.cfg /var/ftp/

20、重新开启客户机,查看是否能实现自动安装系统
Centos 7 使用PXE+Kickstart实现无人值守安装操作系统
系统正在根据ks.cfg中的配置自动安装

相关标签: Linux