一、 PXE :预引导加载环境
1.PXE
P reboot E xecute E nvironment :支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配 IP 地址,再用 TFTP ( trivial file transfer protocol )或 MTFTP(multicasttrivial file transfer protocol) 协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成 Client 端自动化基本软件设置,从而引导预先安装在服务器中的终端操作系统。 PXE 可以引导多种操作系统,如: Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,li n ux 等。
2. 基于 PXE 自动安装系统所需组件
(1)DHCP 服务器
DHCP 动态主机配置协议会在预引导加载操作系统的时候动态自动分配一个 IP 地址,同时完成网络加载的主机的设定;需要在其地址池 subnet 配置中配置一下参数:
filename ""; |
基于网卡引导时要加载的initial boot file的文件名; |
next-server HOST; |
要是一个 tftp-servr ,简单文件传输协议 |
(2)tftp-server 服务
TFTP : trivialfile transfer protocol ,简单文件传输协议服务器。基于 UDP 文件传输,一般该服务器仅用于 PXE 预引导加载环境。用于提供预引导加载文件 pxelinux.0 的读取。相关程序包: Server:tftp-server ; C lient: tftp ,监听端口 69/udp
服务启动运行方式:
CentOS6:
# chkconfig tftp on
# service xinetd restart
CentOS7:
# systemctl start tftp.socket
(3)syslinux 包
提供适用于不同的操作系统的各种 bootloader 文件,支持 DOSFAT filesystems 、 Linux ext2/ext3 filesystems(EXTLINUX) 、 PXEnetwork boots(PXELINUX) 、 ISO 9660 CD-ROMs (ISOLINUX);基于网卡引导的 bootloader 由其提供文件 Wie /usr/share/syslinux/pxelinux.0
(4) file server(yum repository) yum 仓库
基于网络引导加载文件的时候会根据脚本,引导到指定的路径加载 yum 仓库进行安装程序或者镜像文件,存储此 yum 仓库的位置称为 file server 。该 file server 可以通过 http 对外通过程序包或者镜像,实现引导之后的安装操作。
file server 可以 creatrepo 命令手动创建;可以直接复制或者挂载光盘的完整镜像作为通过程序包的文件存储源服务
二、 DHCP 服务器搭建
1.DHCP 协议
Dynamic Host Configuration Protocol : 动态主机配置协议 , 局域网的网络协议,使用UDP协议工作 。
(1) 用途
给内部网络或网络服务供应商自动分配IP地址 ; 给用户或者内部网络管理员作为对所有计算机作中央管理的手段
(2) 实现机制
rarp :反向地址解析,实现 MAC 解析到分配 IP ,
lease( 地址租约 ) 机制:动态地址分配时候按照有效期分配 IP 地址,连续使用需要续租
(3)C/S 架构
Server :需要配置一个静态地址,能够提供地址池 ( 可用地址列表 ) ;监听 67/UDP 端口
Client : 获取动态分配的地址,监听 68/UDP 端口
2.DHCP 交互工作流程
(1) 常规获取过程
DHCP 获取的过程是通过广播方式进行。 Client 发出 dhcp_discover 发现报文, Server 响应 dhcp_offer 报文; Client 再次发出 dhcp_request 请求确认报文, Server 作出 dhcp_ack 确认确认。
(2) lease 续租工作流程
DHCP 引入了 lease 租约概念,当达到可用时间 50% 进行续租 ( 单波通信 ) ,发出 dhcp_request 报文。若 DHCP 服务器没响应,则在总时长限制 75% 、 87.5% 等多次发起请求, DHCP 服务器都未响应则主动放弃地址。若 DHCP 收到服务响应,则地址可使用时间延长到所设置时间的
(3) DHCP 服务端故障
若 DHCP 地址池发生该变无法请求到: dhcp 会返回 dhcp_nak 拒绝;客户端会重新发出 dhcp_discover 发现报文请求分配地址
3.dhcp- relay
DHCP 服务器工作生效范围:当前物理网络 ( 局域网络 ) 。当在两个局域网用一台 DHCP 服务器提供不同网段地址分配时候就要使用到 dhcp relay(dhcp 中继代理 ) 概念。
注意:
1) 必须保证有本地网段的地址池,先为自己所在的局域网段提供地址
2) 路由器:单播 server 通信,广播 client ;路由器将自己当做 DHCP 服务器的代理
4.DHCP 服务器安装配置
(1)RPM 包安装 dhcp 程序
[root@localhost~]# yum install -y dhcp
注意:
[root@localhost ~]# rpm -ql dhcp # 查看 dhcp 程序生成的相关文件
1) dhcp 程序提供三个服务相关,不能同时启动,分别对应 ipv4 地址分配、 ipv6 地址分配、 dhcrelay 代理中继服务
2) dhcpd.service 和 dhcp6.service 对应的地址信息库 , ,用于动态 IP 分配历史记录
(2) 配置文件
/etc/dhcp/dhcpd.conf 是 iPv4_dhcp 服务的主配置文件位置,提供了模板配置 /usr/share/doc/dhcp*/dhcpd.conf.example ,需要自己复制模板文件覆盖当前文件,在修改配置信息。
[root@localhost ~]# cp/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
1) 基本配置
option domain-name |
客户端基于非 FQDN ,会自动补充搜索域 |
option domain-name-server |
DNS 主机地址 |
default-lease-time 600 |
默认租约时长,默认单位秒 |
max-lease-time 7200 |
最大租约时长,默认单位秒 |
log-facility local7 |
日志信息记录方式, local7 指向 /etc/rsyslong.conf 中自定义的 local7 位置 /var/log/boot.log |
2) 地址池配置
subnet |
定义网络 |
range START END |
定义地址分配池范围 ( 起始地址、结束地址 ) ,其网段范围必须属于 subnet 配置的网络范围 |
option routers |
配置网关主机地址 |
实例:
subnet 10.254.239.0 netmask 255.255.255.224{
range 10.254.239.10 10.254.239.20;
option routers rtr-239-0-1.example.org,rtr-239-0-2.example.org;
}
扩展: pxe 预引导加载相关配置
filename # ; |
基于网络引导是加载的 initial boot file 的文件名,网络引导系统加载文件 |
next-server HOST; |
initial boot file所在的服务主机地址; |
3)host 配置主机固定分配 IP
host NAME { … }
hardware ethernet #; |
指明网卡的 MAC 地址 |
fixed-address #; |
指明固定分配的 IP 地址,该地址要在网络中,但不能再地址池中防止地址冲突 |
实例:
host xuding {
hardware ethernet 0:0:c0:5d:bd:95;
fi xed-address 172.16.210.1;
}
4) class 分类是识别制定地址池
(3) 手动测试 DHCP 获取命令: dhclient
dhclient -d :强制显示在前台,获得地址分配过程
三、基于 PXE 自动安装系统服务配置 (CentOS 7)
说明:演示搭建环境为 CentOS 7 系统,自动化安装的系统镜像为 CentOS 7
1. 安装相关所需程序包
[root@localhost ~]# yuminstall httpd
[root@localhost ~]# yuminstall dhcp
[root@localhost ~]# yuminstall syslinux
[root@localhost ~]# yuminstall tftp-sserver
2. 准备 file server(yumrepository) : yum 仓库
此处提供的 yum 仓库是通过 http 的 web 服务对 Client 客户端通过程序包
[root@localhost ~]# mkdir /var/www/html/centos7 # 创建安装程序文件放置位置
[root@localhost ~]# mount --binf/media/cdrom /var/www/html/centos7 # 通过目录绑定的方式挂载光盘镜像
[root@localhost ~]# cp /tmp/ centos7.cfg /var/www/html/centos7 # 将配置好的 kickstart 文件放置到指定位置
注意:
1) yum 仓库可以将光盘内的镜像全部复制到 /var/www/html/centos7 目录下,也可以自己 creatrepo 创建 yum 的依赖关系
2) kickstart 文件: anaconda (CentOS 系列基于内核启动来实现定制自动安装操作 ) 的配置文件,其可以通过修改 /root 目录下模板样式 anaconda-ks.cfg 来实现定制。在此配置文件中需要指明 " url --url=http://172.16.0.1 /" 和需要安装的程序组。
3. 配置 DHCP
在 /etc/dhcp/dhcpd.conf 文件中添加如下配置:
option domain-name"xuding.com";
option domain-anem-servers172.16.0.1;
default-lease-time 3600;
max-lease-time 7200;
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.200.101 172.16.200.110;
option route 17216.100.6;
filename "pxelinux.0";
next-server 172.16.100.6;
}
注意:
option domain-anem-servers 的范围大于 option route 所配置的路由范围,会先找 option route所提供的路由
4. 提供预引导加载等相关文件
(1) 将 syslinux 程序包所提供的引导加载程序的库文件中的网络引导程序 pxelinux.0 复制到 tftp 对外提供服务的路
[ root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
(2) 将镜像文件中的部分文件复制到 tftp 服务提供使用
[ root@localhost ~]# cp /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftpboot/
[ root@localhost ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot/
5.tftp 服务下创建程序文件提供 pxelinux.cfg 的配置
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
配置文件 内容类似如下:
menu.c32 提供文本图形化选择界面,显示提手时间、超时时长、全局菜单、单个菜单、指明加载的内核、安装时候 yum 仓库位置、自动安装时所使用的 ks 配置
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE Menu
LABEL linux
MENU LABELInstall CentOS 7 x86_64
KERNEL vmlinuz
APPENDinitrd=initrd.img inst.repo=http://172.16.100.6/centos7ks=http://172.16.100.6/centos7.cfg
6. 启动各服务
[root@localhost ~]# systemctl start httpd .service
[root@localhost ~]# systemctl start dhcpd.service
[root@localhost ~]# systemctl start tftp.socket
此时,基于 PXE 的网络引导已经完成,可以为与该主机在同一网段内分配 IP 地址池内的 IP ,并进行自动化引导操作
注意:
CentOS 6 和 CentOS 7 的配置有部分不同,参考如下:
cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp/media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}/var/lib/tftpboot/
mkdir/var/lib/tftpboot/pxelinux.cfg/
cp/media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default