PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。
想要了解PXE网络装机,不得不提正常的装机过程.
非PXE装机:
1.准备系统光盘或U盘
2.进入BIOS,修改默认启动程序,将其设置位优先启动光盘
3.进入PE模式进行系统安装
4.系统还原,自动安装
5.重启机器,安装完成
以上步骤,人为参与的步骤为1,2,3,人为参与度非常高,想象一下如果有100台裸机,相同的步骤要做100次,非常消耗时间.
而PXE网络装机极大的减少了人为参与度,操作员只需要准备好PXE装机服务器,让服务器自动安装系统就好了.
PXE工作原理简述:
1.准备PXE服务器,在该服务器上准备待安装的系统
2.准备好一个服务,这个服务可以给裸机分配ip地址,只有分配了ip地址,服务器才可以定位这些裸机
3.裸机从服务器上下载启动软件包到内存,从而实现起机操作
4.PXE服务器上提前配置好的无人值守系统可以代替操作员进行系统安装
5.PXE服务器引导裸机下载PXE上准备的待安装系统,并且安装
以上步骤并不绝对,可以打乱,但是必须保证PXE服务器配置的完整性,即不可省略任意一步
蓝色为路由器,使其处于同一网段,PXE装机服务器一台,裸机若干台
PXE组件及过程分析
• 需要哪些服务组件?
– DHCP服务,分配IP地址、定位引导程序
– TFTP服务,提供引导程序下载
– HTTP服务(或FTP/NFS),提供yum安装源
要实现一个完整的PXE装机服务器,以上三种服务是必须的,我们要弄清的是这些服务之间的被使用顺序,已经这些服务具体实现什么功能.看看下面一张图,PXE服务器分三个部分,图什么虽然将他们分开表示,但是实际上它们一般是在一台服务器上的,这里为了演示具体的调用过程而分开.
– PXE client 集成在网卡的启动芯片中
– 当计算机引导时,从网卡芯片中把PXE client调入内存
执行,获取PXE server配置、显示菜单,根据用户选
择将远程引导程序下载到本机运行
– DHCP Server 服务器上的一个必备服务
– 它的作用在于为裸机分配ip地址,让下一个服务可以地位到这台机器
– Install/Boot Server 当客户机被分配到ip后 这个服务就可以找到客户机了
– 它的作用是为客户机提供启动文件,写到客户机的内存里
– 一般是一些驱动文件
– OS Server 当客户机下载完启动文件后,这台机器就确认可以启动了,但是这台机器还是空的,没有安装操作系统软件
– 它可以是web服务或者ftp服务,目的是将文件放到这个服务下,以便客户机下载
– 在这个过程中,涉及很多人工选项,如果说前两部是固定不变的话,那这一步就提醒了客户机的差异性
– 为了解放人类的双手,我们可以用无人值守服务为我们工作
两台虚拟机,一台作为PXE服务器(ip : 192.168.4.7),一台为裸机,
裸机选用PXE引导安装,注意两个地方,一是选择PXE引导安装,二是选择与服务器相同的虚拟网卡
部署DHCP服务器
• Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任
务小组)组织制定,用来简化主机地址分配管理
• 主要分配以下入网参数
– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址
• DHCP地址分配的四次会话,以广播进行,先到先得
– DISCOVERY --> OFFER --> REQUEST -->ACK
一个网络中,只能有一台DHCP服务器
• 服务端基本概念
– 租期:允许客户机租用IP地址的时间期限,单位为秒
– 作用域:分配给客户机的IP地址所在的网段
– 地址池:用来动态分配的IP地址的范围
1)安装DHCP服务
[root@server /]# yum -y install dhcp
2)修改配置文件
[root@svr7 /]# vim /etc/dhcp/dhcpd.conf
文件默认没有参数,如下
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.example
# see dhcpd.conf(5) man page
追加参数
subnet 192.168.4.0 netmask 255.255.255.0 { #子网网段 / 子网掩码
range 192.168.4.100 192.168.4.200; # 被分配的ip地址范围 --地址池
option domain-name-servers 192.168.4.7; # pxe服务器ip
option routers 192.168.4.254; # 路由地址
default-lease-time 600; # 租期 最小租期
max-lease-time 7200; # 租期 最大租期
next-server 192.168.4.7; # 指定下一个服务器tftp服务器地址
filename "pxelinux.0"; # 指定网卡引导文件名称
}
3)重启服务
[root@svr7 /]# systemctl restart dhcpd
DHCP配置好后,裸机就可以访问到pxe服务器了,这时候dhcp就会告诉客户机去找下一个服务器tftp的服务器地址,在这个服务器上有客户机需要的引导文件
tftp:简单的文件传输协议 默认端口 69
默认共享路径:/var/lib/tftpboot/
所谓引导文件就是一个裸机能够调用硬件的那部分驱动,在这个基础上才可以安装操作系统(操作系统就是一个软件)
我们把用的到的引导文件放到tftp的默认共享文件路径下/var/lib/tftpboot/
1)安装软件tftp-server
[root@svr7 /]# yum -y install tftp-server
[root@svr7 /]# systemctl restart tftp #重启服务
2)部署syslinux
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。
扩展名 |
英文说明 |
中文说明 |
---|---|---|
none or other |
Linux kernel image |
Linux内核映像 |
.0 |
PXE bootstrap program (NBP) [PXELINUX only] |
PXE 启动引导程序(NBP) |
.bin |
"CD boot sector" [ISOLINUX only] |
“光盘引导扇区” |
.bs |
Boot sector [SYSLINUX only] |
“磁盘引导扇区” |
.bss |
Boot sector, DOS superblock will be patched in [SYSLINUX only] |
“磁盘引导扇区”, |
.c32 |
COM32 image (32-bit COMBOOT) |
COM32映像文件 |
.cbt |
COMBOOT image (not runnable from DOS) |
COMBOOT映像文件 |
.com |
COMBOOT image (runnable from DOS) |
COMBOOT映像文件 |
.img |
Disk image [ISOLINUX only] |
磁盘映像文件 |
.ima |
Floppy image [ISOLINUX only] |
软盘映像文件 |
我们要用到的就是后缀位.0的文件,PXE 启动引导程序(NBP),把他放到tftp共享文件目录下
所有的syslinux默认配置都可以在一个名为syslinux.cfg的文件里面更改。
syslinux会在下列位置搜索syslinux.cfg配置文件:
[root@svr7 /]# yum -y install syslinux
[root@svr7 /]# rpm -ql syslinux | grep pxelinux.0 #查询软件安装清单
[root@svr7 /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@svr7 /]# ls /var/lib/tftpboot/
3)部署菜单文件
[root@svr7 /]# poweroff #关闭机器,图形添加光驱设备,放入光盘镜像文件,提供软件包
[root@svr7 /]# mount /dev/cdrom /mnt/
[root@svr7 /]# ls /mnt/
[root@svr7 /]# mkdir /var/lib/tftpboot/pxelinux.cfg #在tftp共享文件目录下创建pxelinux.cfg
[root@svr7 /]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default #isolinux.cfg 镜像配置文件
SYSLINUX或ISOLINUX制作启动U盘或光盘 SYSLINUX/ISOLINUX 是专门用来引导可移动介质的轻量级引导程序,因为这样的介质通常不会固定只针对一种硬件。我们主要介绍以下ISOLINUX 引导安装程序。ISOLINUX其实是一个简单的Linux系统。
要使用这个ISOLINUX引导程序需要配置isolinux.cfg
4)部署图形模块与背景图片
vesamenu.c32(图形模块)
splash.png(背景图片)
在系统安装时必须有界面,这一步骤提供了可视界面,提高了阅读性
[root@svr7 ~]# cp /mnt/isolinux/vesamenu.c32 /mnt/isolinux/splash.png /var/lib/tftpboot/
[root@svr7 ~]# ls /var/lib/tftpboot/ #目前拥有的文件
pxelinux.0 pxelinux.cfg splash.png vesamenu.c32
5)部署启动内核与驱动程序
vmlinuz(启动内核)
initrd.img(驱动程序)
[root@svr7 ~]# cp /mnt/isolinux/vmlinuz /var/lib/tftpboot/
[root@svr7 ~]# cp /mnt/isolinux/initrd.img /var/lib/tftpboot/
[root@svr7 ~]# ls /var/lib/tftpboot/ #需要的文件有这6个
initrd.img pxelinux.cfg vesamenu.c32
pxelinux.0 splash.png vmlinuz
6)修改菜单文件
需要对配置文件做一些修改default就是pxelinux.cfg,也就是isolinux引导文件的配置文件
[root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
末行模式 开启行号 :set nu
1 default vesamenu.c32 #默认加载图形的模块
2 timeout 600 #读秒时间 1/10秒
10 menu background splash.png #背景图片
11 menu title LINUX PXE Server #系统标题
61 label linux
62 menu label Install CentOS 7 #菜单的显示内容
63 menu default #读秒结束后默认选择
64 kernel vmlinuz #加载启动内核
65 append initrd=initrd.img #加载驱动程序
这个文件默认下有数个label , 这里只需要一个就可以了 删除其他的label,实现最轻量配置
构建Web服务器,,共享众多的软件包 ,这里可以选择http服务,或者ftp服务,我这里选择的是http
[搭建http和ftp服务教程,戳这里] https://blog.csdn.net/ck784101777/article/details/95305699
1)安装软件包
[root@svr7 ~]# yum -y install httpd
2)重启httpd服务
[root@svr7 ~]# systemctl restart httpd
3)挂载光驱设备
[root@svr7 ~]# mkdir /var/www/html/centos #创建一个文件夹用于挂载软件包
[root@svr7 ~]# mount /dev/cdrom /var/www/html/centos #挂载光盘
[root@svr7 ~]# systemctl restart httpd #挂载完后重启一下服务
[root@svr7 ~]# firefox 192.168.4.7/centos #用浏览器查看一下是否可以访问到文件
Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。
1)安装可以生成应答文件的软件包
[root@svr7 ~]# yum -y install system-config-kickstart
2#运行system-config-kickstart
[root@svr7 ~]# LANG=en system-config-kickstart #英文进行运行
#点击 "软件包选择(Package Selection)" 查看是否可以进行选择
需要Yum仓库的支持:指向光盘的内容仓库,标识必须为[development]
[root@svr7 ~]# vim /etc/yum.repos.d/local.repo
[development]
name=CentOS-$releasever - Base
baseurl=ftp://192.168.4.254/centos-1804 #web服务器软件包地址
enabled=1
gpgcheck=0
[root@svr7 ~]# LANG=en system-config-kickstart
点击 "软件包选择(Package Selection)" 查看是否可以进行选择
下面展示11张图大家参考配置
一共11个选项,下面一一配置
选择时间区,选择亚洲/上海
填写待安装机器的root密码
安装后重启
安装方式选择 执行新的安装
web服务选择http(步骤3讲的) 添加服务器ip和访问地址(网络地址)
安装方式,启用新的加载
分区信息 :
选择清空主机boot记录(用于解决非裸机情况)
选择清空磁盘分区
选择初始化新的磁盘分区
挂载点选择根目录 , 选择填满磁盘
添加裸机网卡,eth0.代表第一张网卡
加密方式,默认即可
防火墙,选择Disabled 不安装 裸机安装防火墙可能出现一些安全阻拦问题
默认即可
选择安装软件,最小化安装,System下的Base,注意这里以实验为目的进行最小化安装,但是真实环境要根据真实需求来填写
添加执行脚本,这里为了让大家体验到脚本的执行,创建了一个用户
这是无人值守的精髓所在,一个优秀的脚本可以让系统安装你的想法安装
配置完后点击File 选择save 存到根目录下
[root@svr7 ~]# ls /root/ks.cfg
/root/ks.cfg
3)利用Web服务器将ks.cfg进行共享
[root@svr7 ~]# cp /root/ks.cfg /var/www/html/
[root@svr7 ~]# ls /var/www/html/
4)修改菜单文件,指定应答文件位置
[root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://192.168.4.7/ks.cfg #添加ks=http://192.168.4.7/ks.cfg 无人值守配置文件
到这里就结束了,大家试一下,有问题可以留言,或者加微信ck971001