目录
PXE (Preboot eXcution Environment)
前言
虽然现在的工作中已经很少碰到大量装机的情况了,我们依然要了解如何去批量装机。这是一门非常方便的技术。对我们的工作的帮助也是很大的。我们可以使用它简化我们的工作流程。当遇到类似的项目我们总是能更轻松的解决问题。
PXE (Preboot eXcution Environment)
预启动执行环境,在操作系统之前运行。
PKE严格来说并不是一种安装方式,而是一种引导的方式。
PXE批量部署的优点
规模化:同时装配多台服务器
自动化:安装系统、配置各种服务
远程实现:不需要光盘、U盘等安装介质
PXE的c/s功能
服务端
运行DHCP服务,用来分配地址、定位引导程序(next server)
运行TFTP服务,提供引导程序下载
客户端
网卡支持PXE协议
主板支持网络引导
PXE服务器和客户机的工作过程
- PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。
- DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个I地址给PXE客户机,并且告知IPXE浸客户机:TPP服务器的IP地址和PE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftpboot/下
- PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。
- TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。
- PXE客户机通过网络来启动到系统安装主界面。
- PXE客户机向文件共享服务器(ftp、http、nfs等)发起获取centos或windows系统安装文件的请求。
- 文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。
- PXE客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作
搭建PXE远程安装服务器所需安装包
vsftpm #用来放置安装镜像,通过ftp访问镜像安装
dhcp.x8(6_64 12:4.2.5-7pd-3.0.2-27.el7.x86_64.r9.el7.centos #用来给客户机分配
ipsyslinux-4.05-15.el7.x86_64.rpm #用来提供pxe的引导程序
tftp-server.x86_64 0:5.2-22.el7.rpm #用来提供引导镜像文件的下载xinetd.x86_64 xinetd.x86_64 2:2.3.15-14.el7 #用来托管tftp
system-config-kickstart.noarch 0:2.9.7-1.el7.rpm #用来无人值守安装
项目部署
1、安装并启用DHCP 服务
yum -y install dhcp
cp -rfp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
vim /etc/dhcp/dhcpd.conf
ddns-update-style none; //禁止动态更新
subnet 192.168.117.0 netmask 255.255.255.0 { //配置网段
range 192.168.117.40 192.168.117.50; //配置地址池
option routers 192.168.117.20; //配置网关
option domain-name-servers 114.114.114.114;
next-server 192.168.117.20; //指定tftp服务器的地址(*)
filename "pxelinux.0"; //指定pxe引导程序的文件名(*)
}
systemctl start dhcpd
systemctl enable dhcpd
2、安装并启用TFTP服务
yum -y install tftp-server
vim /etc/xinetd.d/tftp //tftp被xinet所托管,xinetd默认没有安装配置文件xinetd即extended internet
service tftp
{
socket_type = dgram
protocol = udp
wait =no // wait
no表示客户机可以多台一起连接,yes表示客户机只能一台一台连接,表示是否开启多线程一起工作,否则需要等待
user =root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot //指定TFTP根目录(引导文件的存储路径)-c允许上传
disable = no //disable no表示开启TFTP服务
per_source =11 //通过限制一个主机的最大连接数,从而防止某个主机独占某个服务,这里每IP地址的连接数是11个
cps =100 2 //表示服务器最多启动100个连接,如果达到这个数目将停止启动新服务2秒。在此期间不接受任何请求
flags =IPv4
}
#准备tftp 需要共享出去的文件
mount /dev/cdrom /mnt
cd / mnt /images/pxeboot/
#内核文件内核初始化镜像文件
/var/lib/tftpboot/ 站点
cp initrd.img vmlinuz /var/lib/tftpboot/
systemctl start xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp
3、准备PXE 引导程序pxelinux.0
yum provides */pxelinux.0 #查找这个文件是由哪个软件包安装的,当不是一个路径和一个软件包时用*/
yum -y install syslinux
rpm -ql syslinux | grep pxelinux #查找pxe引导程序的位置
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #拷贝到tftp的根目录下,系统引导文件注,只有安装了system-config-kickstart软件包,才会有/usr/share/syslinux/目录及目录中的文件
4、配置启动菜单文件
mkdir /var/lib/tftpboot/pxelinux.cfg //默认pxelinux.cfg是没有的需要手动创建,注意它是一个目录而非文件虽然是以.cfg结尾
vim /var/lib/tftpboot/pxelinux.cfg/default
default auto //指定默认入口名称,对应下面的label auto
prompt 0 //设置是否等待用户选择,1表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式
label auto //默认的图形安装
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.117.20/ks.cfg //method必须指定网络路径
label linux text //文本安装模式,出现boot:时输入linux text
kernel vmlinuz
append text initrd=initrd.img ks=ftp://192.168.117.20/ks.cfg
label linux rescue //救援模式,出现boot:时输入linux rescue
kernel vmlinuz
append rescue initrd=initrd.img ks=ftp://192.168.117.20/ks.cfg
5、安装ftp服务,准备centos 7安装源
yum -y install vsftpd
mount /dev/cdrom /mnt
mkdir /var/ftp/centos7
cp -rf / mnt/* /var/ftp/centos7 #将镜像复制其中
systemctl start vsftpd
6、实现Kickstart无人值守安装
yum install -y system-config-kickstart #在CentOS 7系统中安装 system-config-kickstart
vim /root/ftp/ks.cfg
#Install OS instead of upgrade
install //全新安装
#Keyboard layouts
keyboard 'us' //英文键盘
#Root password
rootpw --iscrypted $1$9Rn8w7vF$npbKh8CeIbTxjwHUlcw4n0 //root密码
#Use network installation
url --url="ftp://192.168.117.20/centos7" //网络安装路径
# System language
lang en_us //系统语言,zh_CN表示中文
#system authorization information
auth --useshadow --passalgo=sha512
#Use text mode install
text //字符模式安装,graphical表示图形化安装
firstboot --disable
#SELinux configuration
selinux --disabled //禁用selinux
#Firewall configuration
firewall --disabled //禁用防火墙
#Network information
network --bootproto=dhcp --device=ens33 //网卡配置
#Reboot after installation
reboot //安装完重启
#System timezone
timezone Asia/ shanghai //时区:上海
#system bootloader configuration
bootloader --location=mbr // mbr引导
#clear the Master Boot Record
zerombr
#Partition clearing information
clearpart --all --initlabel //清除所有分区信息和初始化分区标签
#Disk partitioning information
part / --fstype="xfs" --grow --size=1 //分区配置
part swap --fstype=" swap" --size=2048
part /boot --fstype="xfs"" --size=300
%packages
@base //安装基础软件包
@^gnome-desktop-environment //安装桌面环境
%end
总结
无人值守安装非常方便,最大的便利之处便在于,当我们偶尔遇到装机的情况的时候,我们可以使用设置好的服务器来进行自动装机,这样就可以名正言顺的摸鱼了,毕竟我们的工作是保证服务器的正常运行,而不是代替服务器去运行。既然服务器有这个功能,我们为什么要自己手动操作。