详解Linux系统下PXE服务器的部署过程

在大规模安装服务器时,需要批量自动化方法来安装服务器,来减少日常的工作量.

但是批量自动化安装服务器的基础是网络启动服务器(bootserver). 
下面我们就介绍一下 网络启动服务器的 安装和配置方法,供大家实践之用!
1. 本文用到的术语解释
PXE
PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络而不是从本地硬盘、光驱等设备启动。现代的网卡,一般都内嵌支持PXE的ROM芯片。当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行.
DHCP
DHCP(Dynamic Host Control Protocol) 动态主机控制协议.用于集中、动态的给客户机分配IP地址.
TFTP
TFTP(trivial file transfer protocol),一种开销很小的文件传输协议,语法类似ftp.因简单、高效,常用于网络设备的OS和配置更新.
2. PXE 原理
2.1. PXE Client Api (架构)

图 PXE API架构图。(图片来源:PXE Specification Version 2.1)
上图说明: 当BIOS把PXE Client载入记忆体,此时便具有DHCP Client及TFTP Client的能力。
PXE Client具备DHCP Client能力,可以透过DHCP Server来取得IP位址。 
PXE Client具备TFTP Client能力”,可通过TFTP来下载kernel image等文件。
2.2. PXE启动流程图(pxe boot)

上图启动流程说明如下:
PXE Client 向 UDP 67端口 广播 DHCPDDISCOVER 消息.
DHCP SERVER 或者 DHCP Proxy 收到广播消息后,发送DHCPOFFER(包含ip地址)消息 到 PXE Client的 68 端口.
PXE Client 发送 DHCPREQUEST 消息到 DHCP SERVER ,获取启动文件(boot file name).
DHCP SERVER 发送DHCPACK(包含Network Bootstrap Program file name)消息 到PXE Client.
PXE Client 向 Boot Server 获取 NBP(Network Bootstrap Program) 文件.
PXE Client 从TFTP SERVER 下载 NBP,然后在客户端执行NBP文件
注意: 在NBP执行初始化后,NBP会按照自己默认的方式从TFTP SERVER中下载其他所需的配置文件. 
这个时候 PXE 启动流程已经完成了,剩下的工作都是有NBP来执行完成的. 
例如: pxelinux.0(NBP) 他会下载 default 配置文件,来显示菜单,根据需要启动不同的kernel image. 
如果是RIS(window安装)的NBP,会启动 Windows boot loader 来执行安装部署widows任务.
3. PXE BOOT Server 配置过程
以下配置和测试 都是在 Centos5 上完成的,其他系统请酌情参考!
3.1. DHCP的安装与配置
在PXE引导过程中,PXE Client通过DHCP Server 获取ip地址,NBP文件名称,然后从TFTP SERVER 下载NBP文件并在客户端执行,从而启动计算机。
请确认系统中安装 dhcp 软件包
编辑 /etc/dhcpd.conf 配置文件,配置文件内容如下

[[email protected]]# cat /etc/dhcpd.conf
ddns-update-style interim;
allow booting; #定义能够PXE启动
allow bootp; #定义支持bootp
next-server 192.168.0.1; #TFTP Server的IP地址
filename "pxelinux.0"; #bootstrap 文件(NBP)

default-lease-time 1800;
max-lease-time 7200;
ping-check true;
option domain-name-servers 192.168.0.1;

subnet 192.168.0.0 netmask 255.255.255.0
{
range 192.168.0.128 192.168.0.220;
option routers 192.168.0.1;
option broadcast-address 192.168.0.255;
}

注意:在 /etc/dhcpd.conf 配置文件中 filename "pxelinux.0"; 文件目录是相对于 tftp 的根目录(默认是 /tftpboot),
所以文件的绝对路径就是: /tftpboot/pxelinux.0";当然也可以指定为其它的路径.
配置完成后,重启DHCP服务,并将它设为开机自启动

[[email protected]]# /etc/init.d/dhcpd start
启动 dhcpd: [确定]
[[email protected]]# chkconfig --level 35 dhcpd on

3.2. 安装配置TFTP服务器
在PXE引导过程中,PXE Client 使用TFTP协议从TFTP服务器下载bootstrap文件并执行.
请确认系统中安装 tftp-server 软件包
配置tftp服务,tftp 服务由xinetd服务管理 
编辑 /etc/xinetd.d/tftp 文件,将 disable = yes 改为:disable = no .配置文件内容如下:

[[email protected]]# cat /etc/xinetd.d/tftp
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /tftpboot
disable = no
per_source = 11
cps = 100 2
flags = IPv4
}

注意:TFTP服务器的根目录是 /tftpboot,配置完成后重启xinetd服务,使TFTP服务器生效.

[[email protected]]# /etc/init.d/xinetd restart

bootstrap 文件配置 (NBP),这里使用 pxelinux.0
bootstrap文件由syslinux软件包提供,我们只要安装了syslinux,将 pxelinux.0 这个文件复制到 /tftpboot 目录即可:

[[email protected]]# rpm -ql syslinux | grep "pxelinux.0"
/usr/lib/syslinux/pxelinux.0
[[email protected]]# cp /usr/lib/syslinux/pxelinux.0 /tftpboot/

配置 pxelinux.0(NBP) 使用的配置文件
接下来创建/tftpboot/pxelinux.cfg/ 目录,该目录用于存放客户端的配置文件

[[email protected]]# mkdir /tftpboot/pxelinux.cfg

默认配置文件default,文件内容如下、

[[email protected]]# cat /tftpboot/pxelinux.cfg/default

default linux # 默认启动的是 ‘label linux‘ 中标记的启动内核
prompt 1 # 显示 ‘boot: ‘ 提示符
timeout 60 # 等待超时时间,单位为 1/10 秒,超时后自动启动 默认指定的label  
display boot.msg # 显示boot.msg的内容,文件路径是相对tftp server 的根目录(默认 /tftpboot),所以boot.msg文件绝对路径在 /tftpboot/boot.msg .
F1 boot.msg # 按下‘F1‘ 键后显示的文件
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg

label 1 # ‘label‘ 指定你在 ‘boot:‘ 提示符下输入的关键字。
kernel linux/rh44-x86-32/vmlinuz
append initrd=linux/rh44-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

label 2
kernel linux/rh44-x86-64/vmlinuz
append initrd=linux/rh44-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

label 3
kernel linux/rh46-x86-64/vmlinuz
append initrd=linux/rh46-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

label 4
kernel linux/rh46-x86-32/vmlinuz
append initrd=linux/rh46-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

label 5 
kernel image/linux/rh38-x86-32/vmlinuz
append initrd=image/linux/rh38-x86-32/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

label 6
kernel linux/rh38-x86-64/vmlinuz
append initrd=linux/rh38-x86-64/initrd.img ramdisk_size=8192 ks=http://install.test.com/conf/ks_module.cfg ksdevice=link

注意事项: 默认 pxelinux.0 和 pxelinux.cfg 一定要在同一个目录下
3.3. pxelinx.0(NBP)程序配置文件搜索顺序
由于多个客户端可以从一个PXE服务器引导,PXE引导映像使用了一个复杂的配置文件搜索方式来查找针对客户机的配置文件. 
假设 客户端服务器的网卡的MAC地址为 88:99:AA:BB:CC:DD ,对应的IP地址为192.168.1.195,那么客户端的pxelinux.0 程序 搜索顺序如下:
首先以MAC地址为文件名匹配的配置文件,如果不存在,继续查找.
其次以IP地址来查找.根据IP地址16进制命名的配置文件查找,从小范围到打大分为查找(子网掩码由小到大),如果不存在,继续查找.
最后尝试default文件
总体来说,pxelinux.0 搜索的文件的顺序是(可以通过tcpdum得到结果):

/tftpboot/pxelinux.cfg/01-88-99-aa-bb-cc-dd 
/tftpboot/pxelinux.cfg/C0A801C3
/tftpboot/pxelinux.cfg/C0A801C
/tftpboot/pxelinux.cfg/C0A801
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default

4. 总结(Summary)

时间: 2024-10-10 14:04:21

详解Linux系统下PXE服务器的部署过程的相关文章

使用 ipmitool 实现 Linux 系统下对服务器的 ipmi 管理

http://www.ibm.com/developerworks/cn/linux/l-ipmi/ 1.简介 IPMI(Intelligent Platform Management Interface)即智能平台管理接口是使硬件管理具备“智能化”的新一代通用接口标准.用户可以利用 IPMI 监视服务器的物理特征,如温度.电压.电扇工作状态.电源供应以及机箱入侵等.Ipmi 最大的优势在于它是独立于 CPU BIOS 和 OS 的,所以用户无论在开机还是关机的状态下,只要接通电源就可以实现对服

使用 ipmitool 实现 Linux 系统下对服务器的BMC管理

IPMI是智能型平台管理接口(Intelligent Platform Management Interface)的缩写,是管理基于 Intel结构的企业系统中所使用的外围设备采用的一种工业标准,该标准由英特尔.惠普.NEC.美国戴尔电脑和SuperMicro等公司制定.用户可以利用IPMI监视服务器的物理健康特征,如温度.电压.风扇工作状态.电源状态等. IPMI工作原理: IPMI的核心是一个专用芯片/控制器(叫做服务器处理器或基板管理控制器(BMC)),其并不依赖于服务器的处理器.BIOS

详解linux系统的启动过程及系统初始化

一.linux系统的启动流程 关于linux系统的启动流程我们可以按步进行划分为如下: POST加电自检 -->BIOS(Boot Sequence)-->加载对应引导上的MBR(bootloader)-->主引导设置加载其 BootLoader-->Kernel初始化-->initrd—>/etc/init进程加载/etc/inittab,其进程流 程图如下: 二.剖析详细启动过程 ⑴. POST开机自检:电脑主机打开电源的时候,随后会听到滴的一声,系统启动开始了开机

Apache httpd(apache2)服务配置详解,Mac下设置虚拟主机部署多个web项目,及反向代理部署Java项目

Apache httpd服务配置详解 查看版本:httpd -v Server version: Apache/2.4.33 (Unix) Server built:   Apr  3 2018 17:54:07 文件路径:/etc/apache2/httpd.conf # 服务目录(全局配置)用于指定Apache的安装路径,# 此选项参数值在安装Apache时系统会自动把Apache的路径写入ServerRoot "/usr" # 设置互斥对象的目录# Mutex default:/

Linux系统下的SVN Server搭建过程

一.摘要 主要在Linux操作系统下使用SVN服务器 二.安装步骤 0.验证是否有svnserver (svnserve --version)1.安装svnserver (yum install -y subversion)2.验证是否安装成功 (svnserve --version)3.进入到svn的资源目录 (cd /home/svndir)4.创建svn资源库 (svnadmin create myProject)5.新增用户 6.配置用户权限 7.配置资源库权限 8.启动或者重启 9.测

Linux系统下配置squid代理服务器的过程详解

简单记录一下Squid透明代理服务器的配置 环境:VirtualBox + CentOS 6.0 + squid-3.1.4-1.el6.i686 0.检查squid是否默认安装,没有安装的先安装 [[email protected] ~]# rpm -qa squidsquid-3.1.4-1.el6.i686 1.虚拟机添加双网卡,全部设置桥接,配置IP,eth0作为外网,eth1作为内网,注意配置文件里的网卡MAC地址要和设备匹配! [[email protected] ~]# vim /

详解Linux(centos7)下安装OpenSSL安装图文方法

OpenSSL是一个开源的ssl技术,由于我需要使用php相关功能,需要获取https的文件所以必须安装这个东西了,下面我整理了两种关于OpenSSL安装配置方法. 安装环境:  操作系统:CentOs7安静 OpenSSL Version:openssl-1.0.2j.tar.gz 目前版本最新的SSL地址为http://www.openssl.org/source/openssl-1.0.2j.tar.gz 1.将下载的压缩包放在根目录, 2.在文件夹下解压缩,命令:tar -xzf ope

Linux系统下FTP服务器的配置

FTP服务器的配置   一FTP服务器的安装 1)ftp服务器安装后生成的相关文件 /etc/logrotate.d/vsftpd  #实现日志滚动的程序 /etc/pam.d/vsftpd  #用户认证配置文件 /etc/rc.d/init.d/vsftpd  #服务脚本 /etc/vsftpd #配置文件所在目录 /etc/vsftpd/ftpusers  #控制哪些用户是否可登陆ftp /etc/vsftpd/user_list  #控制哪些用户是否可登陆ftp /etc/vsftpd/v

linux系统下too many files open如何定位与解决

当应用进程打开的文件句柄数大于系统设置的句柄数,服务就会报错too many files open,那么如何解决这个问题呢? 1:查看当前系统设置的最大句柄数 命令:ulimit -a:可以看见系统设置的最大句柄数为:65535 2:统计系统中当前打开的总文件句柄数 lsof|awk '{print $2}' |wc -l 3:根据打开文件句柄的数量降序排列,其中第一行是打开的文件句柄数量,第二行是进程号.可以看出来进程28811打开的进程数是:612 命令:lsof -n|awk '{prin