做者:JackTian
微信公众号:杰哥的IT之旅(Jake_Internet)linux
一、什么是 PXE?
严格来讲,PXE 并非一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个 PXE 支持的网卡(NIC),即网卡中必需要有 PXE Client。vim
PXE (Pre-boot Execution Environment)协议使计算机能够经过网络启动。协议分为 client 和 server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS 把 PXE client 调入内存执行,由 PXE client 将放置在远端的文件经过网络下载到本地运行。服务器
运行 PXE 协议须要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,因为是给 PXE client 分配 IP 地址,因此在配置 DHCP 服务器时须要增长相应的 PXE 设置。微信
此外,在 PXE client 的 ROM 中,已经存在了 TFTP Client。PXE Client 经过 TFTP 协议到 TFTP Server 上下载所需的文件。网络
二、什么是 Kickstart?
KickStart 是一种无人职守安装方式,KickStart 的工做原理是经过记录典型的安装过程当中所需人工干预填写的各类参数,并生成一个名为 ks.cfg 的文件;app
在其后的安装过程当中(不仅局限于生成 KickStart 安装文件的机器)当出现要求填写参数的状况时,安装程序会首先去查找 KickStart 生成的文件。dom
当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才须要安装者手工干预。socket
这样,若是 KickStart 文件涵盖了安装过程当中出现的全部须要填写的参数时,安装者彻底能够只告诉安装程序从何处取 ks.cfg 文件,而后去忙本身的事情。等安装完毕,安装程序会根据 ks.cfg 中设置的重启选项来重启系统,并结束安装。ide
三、PXE 网络装机原理说明
PXE Client:表示须要安装操做系统的机器,统称客户端。工具
TFTP Server:表示安装 TFTPD 服务的机器。
DHCP Server:表示安装 DHCPD 服务的机器。
在实际的操做中每每将 TFTP Server,DHCP Server 部署在一台机器上,统称服务端。
四、PXE 网络装机的基本流程
客户端向服务端上的 DHCP 发送请求 IP 地址消息,DHCP 检查客户端是否合法,若是合法则返回客户端的IP地址,同时将启动文件 pxelinux.0 的位置信息一并传送给客户端;
客户端向服务器上的 TFTP 发送获取 pxelinux.0 消息,TFTP 接受到消息以后再向客户端发送 pxelinux.0 大小信息,试探客户端是否满意。当 TFTP 收到客户端返回的赞成大小信息以后,正式向客户端发送 pxelinux.0;
客户端运行接收到的 pxelinux.0 文件;
客户端向 TFTP 发送针对本机的配置文件信息(记录在 TFTP 上的 pxelinux.cfg 目录下),TFTP 将配置文件发给客户端,客户端根据配置文件执行后续操做;
客户端向 TFTP 发送请求 Linux 内核信息,TFTP 接受到消息以后将内核发送给客户端;
客户端向 TFTP 发送根文件请求,TFTP 接受到消息以后返回 Linux 根文件系统;
客户端启动 Linux 内核;
客户端进入安装模式;
五、PXE 网络装机的适用场景
服务器无光驱或者光驱损坏,须要安装 Linux 操做系统
对系统维护不恰当,致使须要频繁安装 Linux 操做系统
须要大规模批量部署 Linux 操做系统(应用于企业)
六、PXE 网络装机的前提条件
客户机网卡支持 PXE 协议(集成 BOOTROM 芯片),主板支持网络引导(BIOS 中调整);
网络中有 DHCP 服务器为客户机自动分配网络地址,而且指定引导文件位置;
服务器经过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载;
PXE(Pre-boot Execution Environment,预启动执行环境)结合 Kickstart 配置实现无人值守自动安装
七、PXE 环境部署
服务端IP:192.168.200.254
# service iptables stop # setenforce 0
配置YUM仓库
# mount /dev/cdrom /mnt/ # rpm -i /mnt/Packages/vsftpd-2.2.2-11.el6_4.1.x86_64.rpm # umount /dev/cdrom # mkdir /var/ftp/rhel6 # mount /dev/cdrom /var/ftp/rhel6/ # service vsftpd restart
# vim /etc/yum.repos.d/yum.repo [base] //仓库类别 name=Red Hat Enterprise Linux 6 //仓库名称 baseurl=ftp://192.168.3.10/rhel6 //URL访问路径 gpgcheck=0 //验证软件包的签名
安装并启用 TFTP 服务
TFTP 服务由 tftp-server 软件包提供,默认经过 xinetd 超级服务进行管理,须要将 /etc/xinetd.d/tftp 中的 disable=yes 修改成 disable=no。并重启 xinetd 服务。
# yum -y install tftp-server # vim /etc/xinetd.d/tftp service tftp { socket_type = dgram protocol = udp wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot disable = no per_source = 11 cps = 100 2 flags = IPv4 } # service xinetd restart
准备 Linux 内核,初始化镜像文件
用于 PXE 网络安装的 Linux 内核,初始化镜像文件可从光盘中找到分别为 vmlinuz 和 initrd.img 位于 images/pxeboot 下,将两个文件复制到 tftp 服务的根目录下。
# cd /var/ftp/rhel6/images/pxeboot/ # cp vmlinuz initrd.img /var/lib/tftpboot/
准备 PXE 引导程序,启动菜单文件
用于 PXE 网络安装的引导程序为 pxelinux.0 由软件包 syslinux 提供,安装软件包后将文件复制到 tftp 服务的根目录下。
# yum -y install syslinux # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot
启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像,默认的启动菜单为 default,应放置 tftp 根目录的 pxelinux.cfg 子目录中。
# mkdir /var/lib/tftpboot/pxelinux.cfg # cat /var/lib/tftpboot/pxelinux.cfg/default
default auto // 默认入口名称
prompt 1 // 1:表示等待用户控制
label auto
kernel vmlinuz
append initrd=initrd.img devfs=nomount ramdisk_size=8192
定义了三个引导入口,分别是图型安装(默认),文本安装,救援模式
Prompt:设置是否等待用户选择
Label:定义并分隔启动项
Kernel append:定义引导参数
无人值守安装只须要一个入口
安装并启用DHCP服务
用来为客户机(裸机)自动分配地址并指定引导文件位置
# yum -y install dhcp # cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"?y
# vim /etc/dhcp/dhcpd.conf ddns-update-style none; next-server 192.168.200.254; # TFTP 服务器地址 filename "pxelinux.0"; # PXE 引导程序文件名 subnet 192.168.200.0 netmask 255.255.255.0 { option routers 192.168.200.254; option subnet-mask 255.255.255.0; option domain-name "crushlinux.com"; option domain-name-servers 202.106.0.20, 8.8.8.8; range 192.168.200.100 192.168.200.200; default-lease-time 21600; max-lease-time 43200; } # service dhcpd start
验证PXE网络安装
新购买的服务器不须要额外的设置直接启动;
在boot:直接回车 或者输入auto,将会进入默认的图形安装入口
选择相应的语言
设置键盘类型
选择经过URL安装
编辑网卡
设置PXE网络安装服务器
实现 Kickstart 无人值守安装
使用 kickstart 工具配置安装应答文件,自动安装安装过程当中的各类设置,无需手动干预,提升装机效率
经过系统中 system-config-kickstart 工具生成配置文件
# yum -y install system-config-kickstart # system-config-kickstart
在生产环境中
预安装脚本:可用户安装加载一些外置卡的驱动,例如RAID卡
安装后脚本:可用于设置一些初始化配置
将文件取名为 ks.cfg,并保存到 /var/ftp/pub 下
# ll /var/ftp/pub/ks.cfg -rw-r--r--. 1 root root 1204 12月 19 00:31 /var/ftp/pub/ks.cfg
编辑引导菜单文件 default
# vim /var/lib/tftpboot/pxelinux.cfg/default default auto prompt 0 label auto kernel vmlinuz append ks=ftp://192.168.200.254/pub/ks.cfg initrd=initrd.img devfs=nomount ramdisk_size=8192
PS: 另外,杰哥建了个学习交流群,群氛围仍是蛮不错的,你们有问题能够在群里交流,有须要的小伙伴能够加一下。