PXE高效批量网络装机及kickstat自动化安装

一,PXE

1.原理和概念:

预启动执行环境(Preboot eXecution Environment,PXE)也被称为预执行环境,提供了一种使用网络接口(Network Interface)启动计算机的机制。这种机制让计算机的启动可以不依赖本地数据存储设备(硬盘)或本地已安装的操作系统。

服务端:运行DHCP服务,用来分配地址,定位引导程序

​ 运行TFTP服务,提供引导程序下载

客户端:网卡支持PXE协议

​ 主板支持网络引导

优点:

  • 规模化:同时装配多台服务器
  • 自动化:安装系统,配置各种服务
  • 远程实现:不需要光盘,U盘等安装介质

2.PXE服务的流程

PXE服务器和客户机的工作过程:

1.PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。 
 
2.DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftpboot/下
 
3.PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
 
4.TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
 
5.PXE客户机通过网络来启动到系统安装主界面。
 
6.PXE客户机向文件共享服务器(ftp、http、nfs等)发起获取centos或windows系统安装文件的请求。
 
7.文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。

8.PXE客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作

3.配置

前提条件:
●客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
●网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
●服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
1)配置双网卡 一个作用是dhcp,一个是使用网络源安装环境包
2)DHCP部署     
3)tftp-server 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
4)syslinux  //用来提供pxe的引导程序
5)xinetd  //用来托管tftp
6)vsftpd   //用来放置安装镜像,通过ftp访问镜像安装
7)kickstart //用来无人值守安装


在服务器上部署一个 YUM 软件仓库。

[root@localhost ~]# mkdir -p /var/ftp/centos7
[root@localhost ~]# mount /dev/cdrom /mnt
[root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# systemctl enable vsftpd

安装并启用 TFTP 服务
[root@localhost ~]# yum -y install tftp-server
[root@localhost ~]# vi /etc/xinetd.d/tftp
service tftp
{
####省略部分信息
protocol = udp                                            ###TFTP 采用 UDP 传输协议
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot             ###指定 TFTP 根目录
disable = no
####省略部分信息

[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl enable tftp


准备 Linux 内核、初始化镜像文件
[root@localhost ~]#   cd /mnt/images/pxeboot/          ####切换到挂载目录/mntimages/pxeboot/   

[root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/  ###两个文件并将其复制到 tftp 服务的根目录下

准备 PXE 引导程序 pxelinux.0由软件包 syslinux 提供
[root@localhost ~]# yum -y install syslinux
[root@localhost pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/


安装并启用 DHCP 服务
由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。如 PXE 服务器的 IP 地址为 20.0.0.254, DHCP 地址池为 20.0.0.100~20.0.0.200

[root@localhost ~]# yum -y install dhcp
[root@localhost ~]# vi /etc/dhcp/dhcpd.conf
subnet 20.0.0.0 netmask 255.255.255.0 {
option routers 20.0.0.2;		###这是网关
option subnet-mask 255.255.255.0;
option domain-name "bdqn.com";
option domain-name-servers 20.0.0.254,202.106.0.20;
default-lease-time 21600;
max-lease-time 43200;
range 20.0.0.100 20.0.0.200;
next-server 20.0.0.21;                    #####指定 TFTP 服务器的地址
filename "pxelinux.0";                     ####指定 PXE 引导程序的文件名
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl enable dhcpd
配置文件中增加了 netx-server 和filename 这两行记录,分别用来指定 TFTP 服务器的地址和 PXE 引导程序的文件名。
配置启动菜单文件
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下

[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
	kernel vmlinuz
	append initrd=initrd.img method=ftp://20.0.0.21/centos7
label linux text
	kernel vmlinuz
	append text initrd=initrd.img method=ftp://20.0.0.21/centos7
label linux rescue
	kernel vmlinuz
	append rescue initrd=initrd.img method=ftp://20.0.0.21/centos7
	

上述配置记录中定义了三个引导入口,分别为图形安装(默认)、文本安装、救援模式。其中, prompt 用来设置是否等待用户选择; label 用来定义并分隔启动项; kernel 和 append用来定义引导参数。引导入口的个数及内容根据需要自行定义。
验证 PXE 网络安装
搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。对于PC 裸机,一般不需要额外设置;
若要为已有系统的主机重装系统,则可能需要修改BIOS 设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。
如果服务器配置正确,网络连接、 PXE 支持等都没有问题,则客户机重启后将自动配置 IP 地址,然后从 TFTP 服务器中获取引导程序 pxelinux.0,并根据引导菜单配置提示用户指定启动入口,

在提示字串“boot:”后直接按 Enter 键(或执行“auto”命令),将会进入默认的图形
安装入口;若执行“linux text”命令,则进入文本安装入口;若执行“linux rescue”命
令,则进入救援模式。
直接按 Enter 键确认后将自动通过网络下载安装文件,并进入图形安装程序界面

二,Kickstart 无人值守安装

背景:通过 PXE 技术远程安装 CentOS 7 系统的方法,安装介质不再受限于光盘、
移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。

通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。

可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑 CentOS7 安装后自动创建的应答文件(/root/anaconda-ks.cfg)

最小化安装可以通过命令安装图形界面以此来使用Kickstart 配置程序

[root@localhost ~]#  yum -y groupinstall 'GNOME Desktop'		###安装图形界面工具
[root@localhost ~]# systemctl set-default graphical.target		###图形界面启动

安装应答文件
[root@localhost ~]# yum -y install  system-config-kickstart		###安装kickstart

配置安装应答参数
通过桌面菜单“应用程序”→“系统工具”→“Kickstart”即可打开“Kickstart 配
置程序”窗口。在“Kickstart 配置程序”窗口中,可以针对基本配置、安装方法、引导装载程序选项、分区信息、网络配置等各种安装设置进行指定

基本配置:
	默认语言:Chinese (P.R. of China)---中文(简体)
	键盘:U.S English
	时区:Asia/Shanghai
	Root密码:123456
	默认密码:123456
	勾选√:给root密码加密
高级配置:
	目标架构:X86、AMD64、活IntelEm64T
	勾选√:安装后重启
	不勾选:在文本模式中执行安装(默认为图形化模式)
	
安装方法:
	勾选√:执行全新安装

安装方法:
	勾选√:FTP  
	FTP服务器:ftp://20.0.0.21
	FTP目录:centos7
	
安装类型:
	勾选√:安装新引导装载程序
	
分区信息:
/boot  	 xfs 	是   	1024
/home  	xfs 	是 	4096
swap    	swap 	是 	2048
/	xfs	是	1

网络配置:
添加一个网络设备“ens33”,将网络类型设为“DHCP”

防火墙配置:
禁用 SELinux、禁用防火墙

使用解释程序:/bin/bash

安装后脚本的运行

mkdir /etc/yum.repos.d/bak
mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
echo “[local]
name=local
baseurl=ftp://20.0.0.21/centos7
enabled=1
gpgcheck=0" > /etc/yum.repos.d/local.repo

配置好以后保存为ks.cfg文件,保存的路径为/var/ftp下

注意:软件包安装默认是禁用的,如果需要启用必须修改yum源配置文件,将[]里的内容改成development,立即生效
软件包选择
如果需要安装软件包,可以根据需要将/root/anaconda-ks.cfg 的软件包安装脚本复制到 ks.cfg 文件中,只需要复制%packages 到%end 部分即可,在%packages 到%end 之间,包含以@开头的软件包列表,将不需要的软件名删除,剩下的就是系统会自动安装的软件包

最小化安装
####
%packages
@^minimal
%end
####

如果需要自己配置软件包,需要编辑ks.cfg文件
vim ks.cfg
添加至最后

%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@development
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony

%end
添加 ks 引导参数至引导菜单文件
vi /var/lib/tftpboot/pxelinux.cfg/default 
default auto 
prompt 0    ##值为“0”时表示自动执行ks.cfg文件(无人值守)、为“1”时表示手动配置(有人值守
label auto 
kernel vmlinuz 
append initrd=initrd.img method=ftp://20.0.0.21/centos7 ks=ftp://20.0.0.21/ks.cfg

对ks进行优化
vi /var/lib/tftpboot/pxelinux.cfg/default 
default auto
prompt 1

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://20.0.0.21/centos7  ks=ftp://20.0.0.21/ks.cfg

label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://20.0.0.21/centos7  ks=ftp://20.0.0.21/ks.cfg

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://20.0.0.21/centos7  ks=ftp://20.0.0.21/ks.cfg


最后通过新建虚拟机进行验证

posted on 2022-01-16 20:48  杨文昭  阅读(160)  评论(0编辑  收藏  举报