PXE是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1)。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。
PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。
1.1.1:服务器的批量部署
规模化:同时装配多台服务器
自动化:安装系统,配置各种服务
1.1.2:关于PXE网络
PXE,Pre-boot eXcution Environment
预启动执行环境,在操作系统之前运行
可用于远程安装,构建无盘工作站
服务端
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
客户端
网卡支持PXE协议
主板支持网络启动
1.1.3:配置PXE装机服务器
基本部署过程
准备centos 7 安装源(yum仓库)
启动TFTP服务,并提供内核,引导程序
启动DHCP服务,用来分配地址,指导引导程序位置
配置启动菜单
TFTP服务及引导文件
安装tftp-server软件包,启动tftp服务
准备内核文件vmlinuz,初始化镜像initrd.img
准备引导程序文件pxelinux.0(依赖于syslinux)
DHCP服务的PXE设置
subnet 192.168.150.0 netmask 255.255.255.0 {
range 192.168.150.20 192.168.150.50;
option routers 192.168.150.100;
option domain-name-servers 8.8.8.8;
next-server 192.168.150.100; // '指定TFTP服务器地址'
filename "pxelinux.0"; // 'filename:指定要下载的引导程序文件
}
默认的启动菜单文件☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
创建/var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.150.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.150.100/centos7
label linux rescue
kernel vmlinuz
append rescue=initrd.img method=ftp://192.168.150.100/centos7
1.设置双网卡,
2.设置DHCP,用来自动获取IP地址,引导定位TFTP位置
next-server TFTP IP
filename “pxelinux.0”
3.设置TFTP(先安装tftp-server并设置)
1.安装syslinux(包含pxelinux.0)并设置,引导程序
2.压缩内核 vmlinuz (在iso镜像文件中获取)
3.初始化文件 initrd.img (iso镜像文件中获取)
4.默认配置文件 default (自建三个模式,默认时auto,指引FTP镜像系统文件位置)
## 2.3.安装DHCP 服务,配置DHCPd.conf
[root@shanan network-scripts]# vi /etc/dhcp/dhcpd.conf
subnet 192.168.150.0 netmask 255.255.255.0 {
range 192.168.150.20 192.168.150.50;
option routers 192.168.150.100;
option domain-name-servers 8.8.8.8;
next-server 192.168.150.100;
filename "pxelinux.0";
}
[root@shanan network-scripts]# systemctl start dhcpd
[root@shanan network-scripts]# yum install syslinux -y
查看文件位置
[root@shanan ~]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@shanan ~]# yum install -y tftp-server
查看文件路径
[root@shanan ~]# 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 // 站点
[root@shanan ~]#
[root@shanan ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@shanan ~]# ls /var/lib/tftpboot
pxelinux.0
[root@shanan ~]# ls /var/lib/tftpboot
pxelinux.0
[root@shanan ~]# vi /etc/xinetd.d/tftp
[
root@shanan ~]# yum install vsftpd
在其站点下,创建centos7
[root@shanan ftp]# mkdir centos7
[root@shanan ftp]# ls
centos7 pub
[root@shanan ftp]# pwd
/var/ftp
将镜像挂载到FTP
[root@shanan ftp]# mount /dev/sr0 /var/ftp/centos7/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@shanan ftp]# df -h
文件系统 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root 50G 4.5G 46G 9% /
devtmpfs 894M 0 894M 0% /dev
tmpfs 910M 0 910M 0% /dev/shm
tmpfs 910M 11M 900M 2% /run
tmpfs 910M 0 910M 0% /sys/fs/cgroup
/dev/sda1 1014M 179M 836M 18% /boot
/dev/mapper/centos-home 247G 442M 247G 1% /home
/dev/mapper/vg01-lv01 2.9G 9.1M 2.8G 1% /mnt
tmpfs 182M 4.0K 182M 1% /run/user/42
tmpfs 182M 40K 182M 1% /run/user/0
/dev/sr0 4.3G 4.3G 0 100% /var/ftp/centos7
[root@shanan ftp]# cd centos7/
[root@shanan centos7]# ls
CentOS_BuildTag GPL LiveOS RPM-GPG-KEY-CentOS-7
EFI images Packages RPM-GPG-KEY-CentOS-Testing-7
EULA isolinux repodata TRANS.TBL
[root@shanan centos7]# cd images/
[root@shanan images]# ls
efiboot.img pxeboot TRANS.TBL
[root@shanan images]# cd pxeboot/
[root@shanan pxeboot]# ls
initrd.img TRANS.TBL vmlinuz
[root@shanan pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@shanan pxeboot]# ls /var/lib/tftpboot/
initrd.img pxelinux.0 vmlinuz
[root@shanan images]# cd /var/lib/tftpboot/
[root@shanan tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@shanan tftpboot]# mkdir pxelinux.cfg
[root@shanan tftpboot]# cd pxelinux.cfg/
[root@shanan pxelinux.cfg]# vi default
default auto
prompt 1 //此处如果设为0,则自动安装进BOOT不停顿
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.150.100/centos7
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.150.100/centos7
label linux rescue
kernel vmlinuz
append rescue=initrd.img method=ftp://192.168.150.100/centos7
~ ~
[root@shanan pxelinux.cfg]# setenforce 0
setenforce: SELinux is disabled
[root@shanan pxelinux.cfg]# systemctl stop firewalld
[root@shanan pxelinux.cfg]# systemctl start dhcpd
[root@shanan pxelinux.cfg]# systemctl start tftp
[root@shanan pxelinux.cfg]# systemctl start vsftpd
刚刚的操作,感觉还是不够智能,下面介绍无人值守装机,这里在之前基础上继续操作。
[root@shanan ~]# yum install system-config-kickstart -y //安装核心软件
[root@shanan tftpboot]# cd /var/ftp
[root@shanan ftp]# ls
centos7 ks.cfg pub
[root@shanan ftp]# vi ks.cfg
[root@shanan ftp]# cd /var/lib/tftpboot/
[root@shanan tftpboot]# ls
initrd.img pxelinux.0 pxelinux.cfg vmlinuz
[root@shanan tftpboot]# cd pxelinux.cfg/
[root@shanan pxelinux.cfg]# ls
default
[root@shanan pxelinux.cfg]# vi default
[root@shanan pxelinux.cfg]#
### 3.7.1 启动服务
[root@shanan ~]# vi /etc/dhcp/dhcpd.conf
[root@shanan ~]# systemctl restart dhcpd
[root@shanan ~]# systemctl restart tftp
[root@shanan ~]# systemctl restart vsftpd