PXE基本原理概述
什么是PXE?
PXE:pre-boot executionenvironment预启动执行环境
由intel公司开发的技术
工作于C/s的网络模式
Client通过网络从server下载映像,并通过网络启动操作系统
应用场景
liveOS
OS安装
PXE基本原理
Client向PXE Server上的DHCP发送IP地址请求消息,DHCP检测Client是否合法(主要是检测Client的网卡MAC 地址),如果合法则返回Client的IP 地址,同时将启动文件pxelinux.0 的位置信息一并传送给Client
Client向PXE Server上的TFTP发送获取pxelinux.0请求消息,TFTP 接收到消息之后再向Client发送pxelinux.0大小信息,试探Client 是否满意,当TFTP 收到Client 发回的同意大小信息之后,正式向Client 发送pxelinux.0
Client 执行接收到的pxelinux.0 文件
Client 向TFTP Server 发送针对本机的配置信息文件(在TFTP 服务的pxelinux.cfg目录下),FTP 将配置文件发回Client ,继而Client 根据配置文件执行后续操作。
Client 向TFTP 发送Linux 内核请求信息,TFTP 接收到消息之后将内核文件发送给Client。
Client 向TFTP 发送根文件请求信息,TFTP接收到消息之后返回Linux 根文件系统。
Client 启动Linux 内核。
构建自动化安装系统的pxe服务
准备工作
关闭防火墙和seLinux
[root@centos7 ~]# iptables -F [root@centos7 ~]# setenforce 0 |
配置DHCP服务器
[root@centos7 ~]# yum -y install dhcp [root@centos7 ~]# cat /etc/dhcp/dhcpd.conf subnet 192.168.10.0 netmask 255.255.255.0{ range 192.168.10.100 192.168.10.200; next-server 192.168.10.1; #TFTP服务器地址 filename "pxelinux.0"; #Bootstrap文件名称 } [root@centos7 ~]# systemctl restart dhcpd |
创建kiskstart文件
kickstart文件可以三种生成方式:
手动书写
通过system-config-kickstart图形工具
anaconda安装程序自动生成
[root@centos7 ~]# yum install -y system-config-kickstart [root@centos7 ~]# system-config-kickstart 启动kickstart图形工具 |
启动后按照自定义生成文件与安装系统界面相同这里不再阐述。
注意:centos7.3如果使用光盘镜像做的yum源会出现下面包无法选择的情况
需要修改yum仓库名称为development才可以选择安装包。
[root@centos7 ~]# cat /etc/yum.repos.d/base.repo [development] #这个地方修改为development name=zachary baseurl=file:///mnt/cdrom gpgcheck=0 |
根据图形向导生成一个ks.cfg的文件。
安装syslinux软件包
[root@centos7 ~]# yum -y install syslinux |
配置FTP服务器
此步骤可以使用其他类型服务器,比如nfs或者http
#安装ftp服务器 [root@centos7 ~]# yum -y install vsftpd #配置安装系统所需的软件仓库 [root@centos7 ~]# mkdir -pv /var/ftp/pub/centos/{6,7} [root@centos7 ~]# mount /dev/sr0 /var/ftp/pub/centos/7 [root@centos7 ~]# mount /dev/sr1 /var/ftp/pub/centos/6 [root@centos7 ~]# mkdir –v /var/ftp/pub/ks [root@centos7 ~]# mv ks6.cfg ks7.cfg /var/ftp/pub/ks/ks.cfg [root@centos7 ks]# chmod +r /var/ftp/pub/ks/* #注意权限 |
注意:在配置完成ftp中的软件仓库后,一定要验证该仓库可用(浏览器查看一下)
TFTP服务器配置
[root@centos7 ~]# yum -y install tftp-server [root@centos7 ~]# cp /usr/share/syslinux/{pxelinux.0,menu.c32} /var/lib/tftpboot/ [root@centos7 ~]# mkdir –v /var/lib/tftpboot/{pxelinux.cfg,centos7.3,centos6.9} [root@centos7 ~]# cp -v /var/ftp/pub/centos/7/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.3/ [root@centos7 ~]# cp -v /var/ftp/pub/centos/6/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos6.9/ [root@centos7 pxelinux.cfg]# cat default default menu.c32 timeout 300 menu title ########## PXE Boot Menu ########## label centos6.9 menu label ^Kickstart Inatall CentOS 6.9 menu default kernel centos6.9/vmlinuz append ks=ftp://192.168.10.3/pub/ks/ks6.cfg initrd=centos6.9/initrd.img label centos7.3 menu label ^Kickstart Inatall CentOS 7.3 menu default kernel centos7.3/vmlinuz append ks=ftp://192.168.10.3/pub/ks/ks7.cfg initrd=centos7.3/initrd.img |
注意:如果使用centos6来搭建pxe 服务器,tftp由xinetd服务来管理这种非独立服务。
设置相关服务启动
[root@centos7 ~]# systemctl enable dhcpd.service [root@centos7 ~]# systemctl start dhcpd.service [root@centos7 ~]# systemctl enable tftp.socket [root@centos7 ~]# systemctl start tftp.socket [root@centos7 ~]# systemctl enable vsftpd.service [root@centos7 ~]# systemctl start vsftpd.service |
测试
排错思路
每个服务器在测试过程中的排错都是根据其原来和返回的错误信息来进行错误的排查。PXE也不例外。
1客户端要使用pxe安装操作系统,首先要有一块支持pxea安装的网卡。
2 网卡获取ip地址 。网卡要正确获取ip地址和tftp服务器地址(next-sever)就需要检查dhcp配置选项。
3 正确获取ip地址后,tftp服务无法使用的常见情况有下面几种
dhcp配置文件中next-server地址与地址不符。
防火墙和selinux不允许访问tftp,这时可以对其做相应配置。简单方法是直接关闭。
tftp配置出现错误,可以通过这个目录树结构检查
[root@centos7 tftpboot]# tree . ├── centos6.9 │?? ├── initrd.img │?? └── vmlinuz ├── centos7.3 │?? ├── initrd.img │?? └── vmlinuz ├── menu.c32 ├── pxelinux.0 └── pxelinux.cfg ├── default |
4 出现菜单文件后,基本上就与tftp没什么太大关系了。这时如果出现错误就是内核选项的参数问题,或者镜像仓库问题。以及ks文件的问题。如果在搭建过程中搭建软件仓库的那个步骤做过详细检查的话,一般这里不会出现大的错误。
问题一般出现在权限问题,路径问题。
5 特别提醒:在tftp服务器中的内核文件和ramfs一定要与安装镜像中的一致。
转载于:https://blog.51cto.com/yangzhiheng/1966365