Loading... # PXE的定义 - 严格来说,PXE 并不是一种安装方式,而是一种引导方式。 - PXE (preboot execute environment ,预启动执行环境)工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统。 - 进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议使计算机可以通过网络启动。 - 协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。 - 运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。 - DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。(bootp booting等选项)。 - 此外,在 PXE client 的 ROM 中,已经集合了 TFTP Client。PXE Client 通过 TFTP 协议就可以 到 TFTP Server 上下载网络引导 所需的文件。 # PXE使用所需条件 - 客户端的网卡必须要支持PXE功能,并且开机选择从网卡启动,进入PXE程序。 - PXE服务器必须要提供至少含有DHCP以及TFTP的服务。 - DHCP服务提供客户端网络,并且告知TFTP所在的位置。 - FTP提供客户端boot loader及kernel file下载路径。 # PXE工作流程图  # Kickstart的定义 - Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。 - 目的是为了 减少系统安装的过程中的人机交互,提高安装效率 # Kickstart工作流程图  # 部署环境 - 客户端可以是裸机,客户端和服务器,必须处于同一 广播域 - 客户端的网卡,必须拥有 PXE ROM (preboot execution Enviroment)芯片,远程引导技术。 - 客户端的 BIOS 开启网络启动功能,并将网络引导作为首选启动项。 > 使用一台服务器搭建,实现全自动化部署 > dhcp + tftp + http + kickstart > 系统的安装方式可以选择HTTP、FTP、 NFS,这里介绍HTTP方式的安装 ## 0x01 配置网卡 DHCP 网口需要配置静态 IP,以下示例为 CentOS 7 基础配置。 ```shell TYPE=Ethernet BOOTPROTO=static NAME=ens192 DEVICE=ens192 ONBOOT=yes IPADDR=192.168.1.11 # 根据实际情况配置(此地址将作为 HTTP、TFTP服务器地址) GATEWAY=192.168.1.254 # 根据实际情况配置 NETMASK=255.255.255.0 ``` ## 0x02 关闭防火墙以及SELinux ```shell # 停止防火墙服务 systemctl stop firewalld # 禁止防火墙自启动 systemctl disable firewalld # 禁用 SELinux setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=disable/g' /etc/selinux/config ``` ## 0x03 安装配置DHCP服务 ```shell # 安装 dhcp 服务 yum install dhcp -y # 编辑 dhcpd.conf 配置文件 vim /etc/dhcp/dhcpd.conf ``` ```shell cat <<EOF >> /etc/dhcp/dhcpd.conf subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.100 192.168.1.200; # DHCP 服务为客户端分配的 IP 范围 option subnet-mask 255.255.255.0; # 掩码 option routers 192.168.1.254; # 网关 next-server 192.168.1.11; # 指定 TFTP 服务器的地址 即本机IP filename "pxelinux.0"; # 指定 PXE 引导程序的文件名 } EOF ``` ```shell # 启动 dhcp 服务并设置自启 systemctl restart dhcpd systemctl enable dhcpd ``` ## 0x04 安装配置TFTP服务 ```shell # 安装 tftp 与 xinetd # tftp 安装时是安装 tftp-server 并且它被 xinetd 所管理 yum install tftp-server xinetd -y # 编辑 tftp 服务配置 vim /etc/xinetd.d/tftp # 将 disable 项设置为 no disable = no ``` ```shell # 重启 xinetd 服务并设置自启 systemctl restart xinetd systemctl enable xinetd # 重启 tftp 服务并设置自启 systemctl restart tftp systemctl enable tftp ``` ## 0x05 安装HTTPD服务 默认服务路径为 `/var/www/html` ```shell yum install httpd -y ``` ```shell # 启动 http 服务并设置自启 systemctl restart httpd systemctl enable httpd ``` ## 0x06 安装 syslinux 加载器 ```shell yum install syslinux -y ``` ## 0x07 引导与安装文件准备 ```shell # 创建主目录 mkdir /var/www/html/centos7 # 此目录用于挂载镜像文件 mkdir /var/www/html/centos7/iso # 此目录用于存放 kickstart 文件 mkdir /var/www/html/centos7/ks # 此目录用于存放自定义脚本 mkdir /var/www/html/centos7/scripts #复制 pxelinux.0 到 tftpboot 目录 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot # 将镜像文件挂载至 http 服务下的镜像目录 mount centos7.iso /var/www/html/centos7/iso # 复制引导内核文件 initrd.img 和 vmlinuz 到 tftp 目录 mkdir /var/lib/tftpboot/centos7 cp /var/www/html/centos7/iso/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7 # 创建 pxelinux.cfg/default 配置文件 mkdir /var/lib/tftpboot/pxelinux.cfg cat <<EOF >> /var/lib/tftpboot/pxelinux.cfg/default default centos7 label centos7 kernel centos7/vmlinuz append initrd=centos7/initrd.img ks=http://192.168.1.11/centos7/ks/example.cfg EOF ``` ## 0x08 修改ks文件中的安装文件获取方式 默认值为 cdrom ```shell # Use CDROM installation media cdrom ``` 需要修改为从 http 服务器获取 ```shell # Use CDROM installation media url --url=http://192.168.1.11/centos7/iso ``` ## 0x09 开始安装 > 将服务器或物理机的引导选项设置为 PXE 启动即可 ## 0x10 自定义脚本执行 > 待完善··· 最后修改:2022 年 08 月 12 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏
7 条评论
大佬请问下用的什么主题啊,是否收费。
写的很好,支持一下
大佬,你懈怠了啊,好久才更新一篇。
话说,我换域名了
最近事多,随便水水了
哈哈,水水更健康
不像我,数据都丢干净了,从头开始呐
你的主题真好看。