PXE网启环境搭建

Linux IT敢客 4个月前 (08-11) 1550次浏览 已收录 0个评论 扫描二维码

        PXE(preboot execute environment,预启动执行环境)是由 Intel 公司开发的最新技术,工作于 Client/Server 的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配 IP 地址,再用 TFTP(trivial file transfer protocol)或 MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE 可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux,vmware 系列系统等。

       下面讲述一下 PXE 环境的搭建过程。主要从以下几个方面讲述:

  • 网络无人职守安装
  • 动态主机配置协议(DHCP)
  • DHCP 服务器
  • DHCP 配置项
  • 预启动施行环境(PXE)
  • 配置 PXE
  • PXELINUX
  • Kickstart 和 PXELINUX
  • 试验实例
  • 服务器端安装软件包
  • 配置服务器环境
  • 配置 dhcp 服务
  • 设置 tftp 服务
  • 配置 NFS 提供安装内容目录的服务
  • 生成 kickstart 文件
  • 设置 Apache 服务器
  • 启动 dhcpd 服务
  • 客户端设置

1.1节 动态主机配置协议(DHCP)

  1. 服务端端口 67/UDP
  2. 客户端端口 68/UDP
  3. 客户端发送 DHCPDISCOVER 在网络中寻求地址分配
  4. 服务端回应 DHCPDISCOVER 请求
  5. 客户端发送 DHCPREQUEST
  6. 服务端发送 DHCPACK
  7. 客户端得到地址

       DHCP 是 DynamicHostConfigurationProtocol 的缩写﹐它的前身是 BOOTP。BOOTP 原本是用于无盘主机连接的网络上面的﹕网络主机使用 BOOTROM 而不是磁盘起动并连接上网络﹐BOOTP 则可以自动地为那些主机设定 TCP/IP 环境。但 BOOTP 有一个缺点:您在设定前须事先获得客户端的硬件 MAC 地址,而且与 IP 的对应是静态的。换而言之,BOOTP 非常缺乏”动态性”,若在有限的 IP 资源环境中,BOOTP 的一对一的对应关系会造成非常大的浪费。

       DHCP 可以看作是 BOOTP 的增强版本﹐它分为两个部份﹕服务器端和客户端。所有的 IP 地址设定资料都由 DHCP 服务器集中管理﹐并负责处理客户端的 DHCP 要求﹔而客户端则会使用从服务器分配下来的 IP 环境资料。比较起 BOOTP,DHCP 透过”租约”的概念,有效且动态的分配客户端的 TCP/IP 设定,而且作为兼容考量,DHCP 也完全照顾了 BOOTPClient 的需求。

       DHCP 的工作原理 如下:

       当 DHCP 客户端第一次登录网络的时候,也就是客户发现本机上没有任何 IP 资料,它会向网络发出一个 DHCPDISCOVER 封包。因为客户端还不知道自己属于哪一个网络,所以封包的来源位址会为 0.0.0.0 ,而目的位址则为 255.255.255.255 ,然后再附上 DHCPDISCOVER 的信息,向网络进行广播。 当 DHCP 服务器监听到客户端发出的 DHCPDISCOVER 广播后,它会从那些还没有租出的 IP 地址范围内按一定顺序选出一个 IP 地址 ,连同其它 TCP/IP 设置,回应给客户端一个 DHCPOFFER 封包。由于客户端在开始的时候还没有 IP 位址,所以在其 DHCPDISCOVER 封包内会带有其 MAC 地址信息,并且有一个 XID 编号来辨别该封包,DHCP 服务器回应的 DHCPOFFER 封包则会根据这些资料传递给要求租约的客户。根据服务器端的设置,DHCPOFFER 封包会包含一个租约期限的信息。如果客户端收到网络上多台 DHCP 服务器的回应,只会挑选其中一个 DHCPOFFER(通常是最先抵达的那个),并且会向网络发送一个 DHCPREQUEST 广播封包,告诉所有 DHCP 服务器它将指定接受哪一台服务器提供的 IP 地址。同时,客户端还会向网络发送一个 ARP 封包,查询网络上面有没有其它机器使用该 IP 地址;如果发现该 IP 已经被占用,客户端则会送出一个 DHCPDECLINE 封包给 DHCP 服务器,拒绝接受其 DHCPOFFER,并重新发送 DHCPDISCOVER 信息。 当 DHCP 服务器接收到客户端的 DHCPREQUEST 之后,会向客户端发出一个 DHCPACK 回应,以确认 IP 租约的正式生效,也就结束了一个完整的 DHCP 工作过程。

1.2DHCP服务器

  1. dhcp 软件包
  2. /etc/dhcpd.conf 配置文件
  3. 例子配置文件/usr/share/doc/dhcp­<version>/dhcpd.conf.sample

       不像大多数 RPM 那样,默认情况下 dhcp 的 RPM 包并没有默认的/etc/dhcpd.conf 配置文件,但是你可以根据/usr/share/doc/dhcp­<version>/dhcpd.conf.sample 文件修改出适合你网络配置文件。

1.3       DHCP配置项

  1. ddns­update­style
  2. subnet
  3. option
  4. range dynamic­bootp
  5. default­lease­time
  6. max­lease­time
  7. host

       DHCP.CONF 配置文件中常用的全局设置如下:

       ddns­update­style 参数用来设置 DHCP 服务器与 DNS 服务器的动态信息更新模式.可选配置项为 ad­hoc、interim 和 none。interim 为 DNS 互动更新。

       subnet 是 DHCP.CONF 文件中最常用的声明,用于在子网中设置动态分配的地址的网络属性。如果在/etc/sysconfig/dhcp 中设置了 DHCPDARGS=eth0,那么 subnet 则只针对 eth0 设备。subnet 的设置中有很多 option 设置,可以为 DHCP 客户设置默认网关、子网掩码、NIS 域、DNS 服务器地址和时间设置等。

       range dynamic­bootp 为 DHCP 服务器设置可动态分配的 IP 地址池。

       default­lease­time 为 DHCP 客户设置默认的地址租期,单位为秒。

       max­lease­tiime 为 DHCP 客户设置最长的地址租期,单位为秒。

       host 设置特定主机声明,主要用于绑定特定 MAC 地址的主机和 IP 地址。

 

       dhcpd.conf 例子文件:

ddns-update-style interim; //配置使用 DHCP 更新 DNS
ignore client-updates; //忽略客户端更新
subnet 192.168.0.0 netmask 255.255.255.0 { //设置子网声明
option routers 192.168.0.254 //为 DHCP 客户设置默认网关
option subnet-mask 255.255.255.0; //为 DHCP 客户设置子网掩码
option nis-domain notuplooking.com ; //“    ”    为 DHCP 客户设置 NIS 域
option domain-name uplooking.com ; //“ ”    为 DHCP 客户设置 DNS 域
option domain-name-servers 192.168.0.254; //为 DHCP 客户设置 DNS 地址,如果网络中没有 DNS 服务器和有 DNS 却没有反向解析的时候,不要设置此项,会影响客户机的启动和安装速度
option ntp-servers 192.168.0.254; //为 DHCP 客户设置网络时间服务器的 ip 地址
range dynaic-bootp 192.168.0.100 192.168.0.130; //设置地址池
default-lease-time 21600; //为 DHCP 客户设置默认的地址租期(单位 s)
max-lease-time 43200; //为 DHCP 客户设置最长的地址租期(单位 s)
host stu1 { //设置主机声明
next-server server.uplooking.com; //设置用于定义服务器从引导文件中装入的主机名, 用于无盘工作站
hardware Ethernet 12:34:56:78:AB:CD; //指定 DHCP 客户的 MAC 地址
fixed-address 192.168.0.1; //对指定的 MAC 地址分配固定的 IP 地址
 }
}

1.4       预启动施行环境(PXE)

  1. 通过网卡引导计算机
  2. 网卡和 BIOS 必须支持 PXE
  3. 需要使用 DHCP 和 TFTP 服务

       PXE(Preboot Execution Environment)是由 Intel 设计的协议,它可以使计算机通过网络启动。协议分为客户端和服务器两端,PXE 客户端在网卡的 ROM 中,当计算机引导时 BIOS 把 PXE 客户端调入内存执行,并显示出命令菜单,经用户选择后,PXE 客户端将放置在远端的操作系统通过网络下载到本地运行。

       PXE 协议的成功运行需要解决以下两个问题:第一,IP 由谁和如何分配分配;第二,客户端所需系统内核和其他文件从哪里得到。

       对于第一个问题,可以通过 DHCP 服务解决,由 DHCP 服务来给 PXE 客户端分配一个 IP 地址,同时在配置 DHCP Server 时,需要增加相应的 PXE 特有配置。比如告诉 PXE 客户端所需文件到哪里找。

       至于第二个问题,在 PXE 客户端所在的 ROM 中,已经存在了 TFTP 客户端。PXE 客户端使用 TFTP 客户端,通过 TFTP 协议到 TFTP 服务器上下载所需的文件。

       PXE 的工作过程:

       PXE 客户端是需要 PXE 启动的计算机,TFTP 服务器和 DHCP 服务器可以运行在单一的 Linux 服务器上,也可以安装在两个独立的 Linux 服务器上。Bootstrap 文件、配置文件、内核文件以及内核启动其他必须文件都放置在运行 TFTP 服务器的 TFTP 服务根目录下。   

       PXE 客户端是作为 kickstart 安装方式启动还是无盘工作站方式启动,在最终文件需求上有所不同。kickstart 安装方式需要在 bootstrap 文件或 bootstrap 所需 boot 配置文件中指定 kickstart 文件的位置,而无盘工作站则要指定 nfsroot 的位置。具体的流程参见下图

PXE 网启环境搭建

1.5       配置PXE

  1. 配置 DHCP 服务器和 TFTP 服务器
  2. conf 中的两个配置项:filename 和 next­server
  3. tftp 的 bootstrap 文件:/tftpboot/filename

       安装 DHCP 服务软件包,并正确配置 DHCP 服务的配置文件/etc/dhcpd.conf。如下为最简单的 dhcpd.conf 配置:

ddns-update-style interim;
ignore client-updates;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.254;
option subnet-mask 255.255.255.0;
next-server 192.168.0.254;
filename="pxelinux.0";
range dynamic-bootp 192.168.0.200 192.168.0.240;
default-lease-time 21600;
max-lease-time 43200;
}

       此配置文件中指定了 TFTP 服务器 IP 地址为 192.168.0.254,同时指定了 bootstrap 文件为 192.168.0.254 这台 TFTP 服务器/tftpboot 目录下的 pxelinux.0 的文件。

       安装 tftp­server 软件包后,会自动建立/tftpboot 目录,但是要启动 tftp­server 需要同时指定 xinetd 服务和 tftp 服务, 因为 tftp 服务是基于 xinetd 的。

# chkconfig xinetd on
# chkconfig tftp on
# service xinetd restart

1.6      PXELINUX

  1. SYSLINUX 启动工具主要用以启动 CD/DVD
  2. 放入/tftpboot 目录的 bootstrap 文件名必须保证和 conf 中配置的一样
  3. (pxelinux.0)
  4. Linux 安装和无盘工作站所需要的内核文件(vmlinuz 和 img)也要放在/tftpboot/目录
  5. /tftpboot/pxelinux.cfg/目录放置网络启动配置文件

       PXELINUX 是 SYSLINUX 和 ISOLINUX 类似的软件。PXELINUX 让我们可以使用符合 Intel PXE (Pre­eXecution Environment) 规格的网卡 boot ROM,直接从区域网络上启动 Linux 核心及整个系统。系统安装了 syslinux 的 RPM 包后就可以在/usr/lib/syslinux 目录中找到 pxelinux.0 这个文件,这个文件就是用来从无盘客户端引导、启动和安装 Linux 系统的关键文件。

       在 PXE 客户端装入 pxelinux.0 引导器文件后,它将按 pxelinux.0 文件内建的规则读取 pxelinux.cfg/目录下的配置文件。它找寻配置文件的方法是先比对 MAC 地址而后是 IP 地址,如果均无匹配,则将文件名为 default 的文件作为配置文件。例如请求的 PXE 客户端 MAC 地址为 00:16:D3:24:EB:DB,分配的 IP 地址为 192.168.0.1(十六进制表示方式为 C0A80001)。它请求一个 TFTP 服务器上的 PXELINUX 配置文件的顺序就是:

/tftpboot/pxelinux.cfg/00-16-d3-24-eb-db
/tftpboot/pxelinux.cfg/C0A80001
/tftpboot/pxelinux.cfg/C0A8000
/tftpboot/pxelinux.cfg/C0A800
/tftpboot/pxelinux.cfg/C0A80
/tftpboot/pxelinux.cfg/C0A8
/tftpboot/pxelinux.cfg/C0A
/tftpboot/pxelinux.cfg/C0
/tftpboot/pxelinux.cfg/C
/tftpboot/pxelinux.cfg/default

1.7     Kickstart PXELINUX

  1. kickstart 文件位置由 PXELINUX 的启动配置文件告知安装内核
  2. kickstart 文件可以由 nfs 或 http 服务器提供
  3. 安装包源位置由 kickstart 文件指定

       一个简单的 PXELINUX 配置文件:

# cat /tftpboot/pxelinux.cfg/default
default local
prompt 1
timeout 60
display boot.msg
label local
localboot 1
label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192
label ksinstall
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192 ks=http://192.168.0.254/ks.conf
label vncinstall
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192 vnc vncpassword= password

 

2章 试验实例

2.1节 服务器端安装软件包

#mount 192.168.0.254:/var/ftp/pub/ /mnt
#cd /mnt/{redhat_file_tree_dir}/{rpm_dir}
#rpm -ivh dhcp-*.rpm
#rpm -ivh xinetd*.rpm
#rpm -ivh tftp-server*.rpm
#rpm -ivh syslinux*.rpm
#rpm -ivh nfs-utils-*.rpm
#rpm -ivh httpd*.rpm
#rpm -ivh system-config-kickstart*.rpm

       由于不同版本的 RedHat 或 Fedora 系统的 rpm_dir 目录名不同,所以请根据实际情况选择合适的目录。

2.2节 配置服务器环境

第 2.2.1 节 配置 dhcp 服务

       设置 dhcpd.conf 文件

#vi /etc/dhcpd.conf
ddns-update-style interim;
ignore client-updates;
allow bootp;
allow booting;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.254;
option subnet-mask 255.255.255.0;
next-server 192.168.0.x ; // 将此处的 ip 地址改为你本地的 ip 地址
filename="pxelinux.0";
option time-offset -18000;
range dynamic-bootp 192.168.0.200 192.168.0.240;
default-lease-time 21600;
max-lease-time 43200;
}

       先不要启动 dhpc 服务,保证你所处的网络中没有其它 dhpc 服务的情况下再启动,否则会出现 ip 分配竞争的问题。

第 2.2.2 节 设置 tftp 服务

       设置 tftp 服务随 xinetd 服务一同启动

#chkconfig xinetd on
#chkcfonfig tftp on

       将网络安装所需要的启动和映像文件拷贝到/tftpboot

#cd /mnt/{redhat_file_tree_dir}/images/pxeboot
#cp vmlinuz /tftpboot
#cp initrd.img /tftpboot
#cp /usr/lib/syslinux/pxelinux.0 /tftpboot

       然后在/tftpboot 中建立 pxelinux.cfg 文件夹

#mkdir /tftpboot/pxelinux.cfg

       在 pxelinux.cfg 文件夹中建立 pxe 配置文件­­default

#cd /tftpboot/pxelinux.cfg
#vi default

       写入最简单的本地硬盘引导和远程 kickstart 安装配置项

default local
prompt 1
timeout 60
label  local
localboot 1
label install
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192 ks=http://192.168.0.x/ks/ks.conf

       记得将 192.168.0.x 改为你本地的 ip 地址重启 xinetd 服务,使 tftp 服务生效

#service xinetd restart

第 2.2.3 节 配置 NFS 提供安装内容目录的服务

       准备一个共享的安装目录

#mkdir /var/ftp/pub/RedHat

       将光盘中安装文件目录或 192.168.0.254 服务器上的安装文件目录完全复制到这个目录中,形成安装文件目录树

#cp -a /mnt/{redhat_file_tree_dir}  /var/ftp/pub/RedHat

        配置 nfs 共享目录配置文件

#vi /etc/exports

       写入

/var/ftp/pub/RedHat 192.168.0.0/255.255.255.0

       从新启动 nfs 服务

#service nfs restart

第 2.2.4 节 生成 kickstart 文件生成 ks.conf 配置文件

#system-config-kickstart

       需要注意的地方是,设置系统安装方式为网络安装,设置安装源为 nfs 方式,安装文件服务器为你的 ip 地址,安装文件目录为 /var/ftp/pub/RedHat/{redhat_file_tree_dir}, 其它的你就随意吧!

       设置并生成 ks.conf 文件后,为了方便共享使用,按/tftpboot/pxelinux.cfg/default 文件里设置的访问方式,将 ks.conf 文件放在/var/www/html/ks 目录下

#mkdir /var/www/html/ks
#cp ks.conf /var/www/html/ks

第 2.2.5 节 设置 Apache 服务器

       如果你之前没有配置过 apache,现在启动 httpd 服务就可以了;如果你之前配置过 apache,请将/etc/httpd/conf/httpd.conf 配置文件恢复。

#service httpd start

第 2.2.6 节 启动dhcpd服务

请确保你所在的网络中没有其它 dhcp 服务器

#server dhcpd start

2.3节 客户端设置

       将服务器和安装客户端用网线和路由器相连,如果你无法保证网络中仅有一台 dhcp 服务器,请使用对连线将服务器和客户端相连。

       设置客户端从网卡启动,并且保证网卡支持 pxe 启动方式。

       重启客户端,如果看到 boot:提示符出现,证明服务器端 dhcp 和 tftp 服务工作正常。如果在 boot:提示符后键入 install 并回车,可以正确的安装, 说明其它服务也正常运行了。


IT 敢客 , 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:PXE 网启环境搭建
喜欢 (5)
[313176056@qq.com]
分享 (0)
IT敢客
关于作者:
“我所做的一切都是为了方便我的生活~~~“
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址