搞它!!!2020年了,你还不会PXE+kickstart 一键式部署安装系统么
文章目录
前言
PXE是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。
PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。
一、部署PXE远程安装服务
1、启动步骤详解
1、服务器加电启动,从DHCP服务器获取IP地址并加载(PXEClient)。
2、通过TFTP服务器获取网络引导程序(pxelinux.0)。
3、引导程序读取配置文件(pxelinux.cfg本例中文件名为:default)。
4、引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz)、自动应答程序(ks.cfg)。
5、按自动应答文件中指定的网络安装方式,以FTP方式安装linux系统。
2、使用工具
A、tftp-server
B、vsftpd
C、syslinux
D、dhcpd
3、 PXE安装过程
wKiom1SX4kHh1RWYAAHds9-3LXA997.jpg
第一步:PXE client向DHCPserver发送请求
首先,开机启动PXE安装,此时PXE client会通过 PXE Boot ROM(自动芯片)以UDP(简单用户数据协议)的形式在网络中发送一个广播请求,请求DHCP服务器分配IP地址等相关信息。
第二步:DHCP服务器应答PXE client
DHCP验证是否是合法的PXE client的请求,验证通过后,回应PXE client,回应中包含了为PXE client分配的ip之地址、TFTP(pxelinux启动程序)的位置,以及配置文件所在的位置。
第三步:PXE client请求下载启动文件
客户端收到DHCP的回应后,向TFTP服务器请求传送启动系统安装所需要的文件,这些文件包括:pxelinux0、pxelinux.cnf/default(内核文件)、vmlinuz、initrd.img等文件
第四步:TFTP服务器响应客户端请求并传送文件
当 TFTP收到客户端的请求之后,发给客户端所需要的启动文件,BootROM由TFTP通讯协议从BootServer下载启动安装程序所必须的文件 (pxelinux0、pxelinux.cnf/default),default文件下载完之后会根据该文件定义的引导顺序,启动linux安装程序 的引导内核。
第五步:请求下载自动应答文件(ftp服务器)
PXE client通 过default文件成功的引导linux安装内核后,安装程序首先确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS、HTTP、 FTP),则会在这个时候初始化网络,并定位安装系统所需的二进制包以及配置文件的位置,接着会读取该文件中指定的自动应答文件ks.cfg,然后根据 ks.cfg中的文件位置请求下载相关文件。
第六步:根据ks.cfg文件内容进行安装系统
将ks.cfg文件下载回来后,通过该文件找到OS Server,并按照该文件的配置请求下载安装过程需要的软件包
二、部署PXE远程安装服务
第一步在服务器设置双网卡
目的为了虚拟机能上网 能下载软件
'第一步,在服务器设置双网卡'
在centos 7添加一个网络适配器,并设置为仅主机模式。 '用来装机,做服务器的网卡'
原本的网络适配器保持NAT模式不变。 '用来安装yum包'
第二步,设置添加的网卡IP地址,关闭防火墙
'第二步,设置添加的网卡IP地址,关闭防火墙'
[aaa@qq.com ~]# cd /etc/sysconfig/network-scripts
[aaa@qq.com network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36
[aaa@qq.com network-scripts]# ls
[aaa@qq.com network-scripts]# vim 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"
UUID="fe60a0ac-7d04-46a3-b29c-633a50b88f33" 'UUDI删除掉'
DEVICE="ens36"
ONBOOT="yes"
IPADDR=192.168.100.100
NETMASK=255.255.255.0
GATEWAY=192.168.100.1
[aaa@qq.com network-scripts]# systemctl restart network
[aaa@qq.com network-scripts]# ifconfig '发现设置成功'
[aaa@qq.com network-scripts]# systemctl stop firewalld.service
[aaa@qq.com network-scripts]# setenforce 0
第三步,设置DHCP服务
'第三步,设置DHCP服务'
[aaa@qq.com ~]#yum install dhcp* -y
[aaa@qq.com ~]# vim /etc/dhcp/dhcpd.conf
[aaa@qq.com ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
[aaa@qq.com ~]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.20 192.168.100.30;
option routers 192.168.100.100;
option domain-name-servers 6.6.6.6;
next-server 192.168.100.100; '指定TFTP服务器地址'
filename "pxelinux.0"; 'filename:指定要下载的引导程序文件'
}
第四步:设置TFTP–配置安装tftp-server
'第四步:设置TFTP--配置安装tftp-server'
[aaa@qq.com ~]# yum install tftp-server -y
[aaa@qq.com ~]# rpm -ql tftp-server
/etc/xinetd.d/tftp '配置文件'
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot '站点'
[aaa@qq.com network-scripts]# vim /etc/xinetd.d/tftp '编辑配置文件'
disable = no '将此改成no'
[aaa@qq.com network-scripts]# cd /var/lib/tftpboot '进入站点'
[aaa@qq.com tftpboot]# ls
## 第五步:安装并设置syslinux
第五步:安装并设置syslinux
'第五步:安装并设置syslinux'
[aaa@qq.com tftpboot]# yum install syslinux -y '安装syslinux'
[aaa@qq.com tftpboot]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[aaa@qq.com tftpboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot '将syslinux中的pxelinux.0复制过来'
[aaa@qq.com tftpboot]# ls
pxelinux.0
[aaa@qq.com tftpboot]# yum install vsftpd -y
[aaa@qq.com tftpboot]# rpm -ql vsftpd '查看站点'
...省略内容
/var/ftp
/var/ftp/pub
[aaa@qq.com tftpboot]# mkdir /var/ftp/centos7 '创建centos7目录用来挂载'
[aaa@qq.com tftpboot]# cd /var/ftp
[aaa@qq.com ftp]# ls
centos7 pub
[aaa@qq.com ftp]# ls centos7 '发现镜像文件中没有东西'
'挂载之前先点击已连接'
[aaa@qq.com ftp]# mount /dev/sr0 /var/ftp/centos7/ '挂载'
mount: /dev/sr0 is write-protected, mounting read-only
[aaa@qq.com ftp]# df -hT
[aaa@qq.com ftp]# ls centos7 '再次查看centos7文件,发现有了内容'
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
第六步,在镜像中复制出文件
'第六步,在镜像中复制出文件'
[aaa@qq.com ftp]# cd centos7/images
[aaa@qq.com images]# cd pxeboot
[aaa@qq.com pxeboot]# ls '发现目标文件,准备复制'
initrd.img TRANS.TBL vmlinuz
[aaa@qq.com pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ '将文件复制到tftp站点中'
[aaa@qq.com pxeboot]# ls /var/lib/tftpboot
initrd.img pxelinux.0 vmlinuz
第七步,设置默认配置文件
‘第七步,设置默认配置文件’
[aaa@qq.com pxeboot]# cd /var/lib/tftpboot
[aaa@qq.com tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[aaa@qq.com tftpboot]# mkdir pxelinux.cfg ‘创建pxelinux配置文件’
[aaa@qq.com tftpboot]# cd pxelinux.cfg/
[aaa@qq.com pxelinux.cfg]# vim default ‘创建默认配置文件’
‘输入以下内容’
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.100.100/centos7
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.100.100/centos7
[aaa@qq.com pxelinux.cfg]#systemctl start dhcpd
[aaa@qq.com pxelinux.cfg]#systemctl start tftp
[aaa@qq.com pxelinux.cfg]#systemctl start vsftpd
第八步 开启裸金属虚拟机
三、实现Kickstart无人值守安装
1、准备安装应答文件
kickstart无人值守技术
创建应答文件,预先定义好各种安装设置
免去交互设置过程,从而实现全自动化安装
通过添加%post脚本,完成安装后的各种配置操作
应答文件的内容
2、实现批量自动装机
[aaa@qq.com ~]# yum install system-config-kickstart -y
'安装kickstart工具'
3、开启kickstart软件
[aaa@qq.com ~]# cd /var/ftp
[aaa@qq.com ftp]# ls
centos7 ks.cfg pub
[aaa@qq.com ftp]# cd
[aaa@qq.com ~]# ls
anaconda-ks.cfg initial-setup-ks.cfg 下载 公共 图片 文档 桌面 模板 视频 音乐
[aaa@qq.com ~]# vim anaconda-ks.cfg
...'复制以下内容'
%packages
@^graphical-server-environment
@base
@core
@desktop-debugging
@dial-up
@fonts
@gnome-desktop
@guest-agents
@guest-desktop-agents
@hardware-monitoring
@input-methods
@internet-browser
@multimedia
@print-client
@x11
chrony
kexec-tools
%end
[aaa@qq.com ~]# vim /var/ftp/ks.cfg '复制的粘贴到此'
[aaa@qq.com ~]# cd /var/lib/tftpboot/
[aaa@qq.com tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[aaa@qq.com tftpboot]# cd pxelinux.cfg/
[aaa@qq.com pxelinux.cfg]# ls
default
[aaa@qq.com pxelinux.cfg]# vim default
..
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.100.100/centos7 ks=ftp://192.168.100.100/ks.cf
g '在原本此段内容后面输入ks=ftp://192.168.100.100/ks.cf
g'
[aaa@qq.com pxelinux.cfg]# systemctl restart dhcpd '重启服务'
[aaa@qq.com pxelinux.cfg]# systemctl restart tftp
[aaa@qq.com pxelinux.cfg]# systemctl restart vsftpd
上一篇: 本地mysql数据库开启远程访问