PXE网络引导自动化安装系统详解

一、PXE:预引导加载环境

 1.PXE

         Preboot ExecuteEnvironment:支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)或MTFTP(multicasttrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成Client端自动化基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。

 

  2.基于PXE自动安装系统所需组件

     (1)DHCP服务器

             DHCP动态主机配置协议会在预引导加载操作系统的时候动态自动分配一个IP地址,同时完成网络加载的主机的设定;需要在其地址池subnet配置中配置一下参数:

filename "";

基于网卡引导时要加载的initial  boot file的文件名;

next-server  HOST;

要是一个tftp-servr,简单文件传输协议

   (2)tftp-server服务

            TFTPtrivialfile transfer protocol,简单文件传输协议服务器。基于UDP文件传输,一般该服务器仅用于PXE预引导加载环境。用于提供预引导加载文件pxelinux.0的读取。相关程序包:Server:tftp-serverClient: tftp,监听端口69/udp

           服务启动运行方式:

CentOS6:

# chkconfig tftp on

# service xinetd  restart

CentOS7:

# systemctl start  tftp.socket

   (3)syslinux

          提供适用于不同的操作系统的各种bootloader文件,支持DOSFATfilesystemsLinux ext2/ext3 filesystems(EXTLINUX) PXEnetwork boots(PXELINUX)ISO 9660 CD-ROMs (ISOLINUX);基于网卡引导的bootloader由其提供文件Wie/usr/share/syslinux/pxelinux.0

   (4) file server(yum repository)yum仓库

          基于网络引导加载文件的时候会根据脚本,引导到指定的路径加载yum仓库进行安装程序或者镜像文件,存储此yum仓库的位置称为file server。该file server可以通过http对外通过程序包或者镜像,实现引导之后的安装操作。

          file server可以creatrepo命令手动创建;可以直接复制或者挂载光盘的完整镜像作为通过程序包的文件存储源服务

 

 

 

二、DHCP服务器搭建

1.DHCP协议

    Dynamic Host Configuration Protocol动态主机配置协议局域网的网络协议,使用UDP协议工作

   (1)用途

          给内部网络或网络服务供应商自动分配IP地址给用户或者内部网络管理员作为对所有计算机作中央管理的手段

   (2)实现机制

            rarp:反向地址解析,实现MAC解析到分配IP

            lease(地址租约)机制:动态地址分配时候按照有效期分配IP地址,连续使用需要续租

   (3)C/S架构

             Server:需要配置一个静态地址,能够提供地址池(可用地址列表);监听67/UDP端口

             Client获取动态分配的地址,监听68/UDP端口

 

 2.DHCP交互工作流程

   (1) 常规获取过程

             DHCP获取的过程是通过广播方式进行。Client发出dhcp_discover发现报文,Server响应dhcp_offer报文;Client再次发出dhcp_request请求确认报文,Server作出dhcp_ack确认确认。

   (2) lease续租工作流程

              DHCP引入了lease租约概念,当达到可用时间50%进行续租(单波通信),发出dhcp_request报文。若DHCP服务器没响应,则在总时长限制75%87.5%等多次发起请求,DHCP服务器都未响应则主动放弃地址。若DHCP收到服务响应,则地址可使用时间延长到所设置时间的

   (3) DHCP服务端故障

         DHCP地址池发生该变无法请求到:dhcp会返回dhcp_nak拒绝;客户端会重新发出dhcp_discover发现报文请求分配地址

 

 3.dhcp- relay

       DHCP服务器工作生效范围:当前物理网络(局域网络)。当在两个局域网用一台DHCP服务器提供不同网段地址分配时候就要使用到dhcp relay(dhcp中继代理)概念。

  注意:

       1) 必须保证有本地网段的地址池,先为自己所在的局域网段提供地址

       2) 路由器:单播server通信,广播client;路由器将自己当做DHCP服务器的代理

 

 4.DHCP服务器安装配置

  (1)RPM包安装dhcp程序

           [root@localhost~]# yum install -y dhcp

     注意:

      [root@localhost ~]# rpm -ql dhcp         # 查看dhcp程序生成的相关文件

       1) dhcp程序提供三个服务相关,不能同时启动,分别对应ipv4地址分配、ipv6地址分配、dhcrelay代理中继服务

wKioL1bNiVWCrWvBAAA-XeMMveE875.png

       2) dhcpd.servicedhcp6.service对应的地址信息库,,用于动态IP分配历史记录

wKioL1bNiVaAZWhlAAAkIR4pLoM422.png

 (2) 配置文件

        /etc/dhcp/dhcpd.confiPv4_dhcp服务的主配置文件位置,提供了模板配置/usr/share/doc/dhcp*/dhcpd.conf.example,需要自己复制模板文件覆盖当前文件,在修改配置信息。

[root@localhost ~]# cp/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example   /etc/dhcp/dhcpd.conf

     1)基本配置

option  domain-name

客户端基于非FQDN,会自动补充搜索域

option  domain-name-server

DNS主机地址

default-lease-time  600

默认租约时长,默认单位秒

max-lease-time  7200

最大租约时长,默认单位秒

log-facility  local7

日志信息记录方式,local7指向/etc/rsyslong.conf中自定义的local7位置/var/log/boot.log

     2)地址池配置

subnet

定义网络

range   START END

定义地址分配池范围(起始地址、结束地址),其网段范围必须属于subnet配置的网络范围

option routers

配置网关主机地址

        实例:

 subnet 10.254.239.0 netmask 255.255.255.224{

     range 10.254.239.10 10.254.239.20;

    option routers rtr-239-0-1.example.org,rtr-239-0-2.example.org;

}

     扩展:pxe预引导加载相关配置

filename # ;

基于网络引导是加载的initial  boot file的文件名,网络引导系统加载文件

next-server  HOST;

initial boot  file所在的服务主机地址;

     3)host 配置主机固定分配IP

  host NAME {   }

hardware  ethernet #;

指明网卡的MAC地址

fixed-address  #;

指明固定分配的IP地址,该地址要在网络中,但不能再地址池中防止地址冲突

实例:

host  xuding  {

       hardware ethernet 0:0:c0:5d:bd:95;     

       fixed-address 172.16.210.1;

}

      4) class分类是识别制定地址池

 (3)手动测试DHCP获取命令:dhclient

       dhclient -d:强制显示在前台,获得地址分配过程

wKiom1bNiO7S_RYGAABLr-KjNKM657.png

                                                                                                                        

 

三、基于PXE自动安装系统服务配置(CentOS 7)

说明:演示搭建环境为CentOS 7系统,自动化安装的系统镜像为CentOS 7

  1.安装相关所需程序包

       [root@localhost ~]# yuminstall httpd

       [root@localhost ~]# yuminstall dhcp

       [root@localhost ~]# yuminstallsyslinux

       [root@localhost ~]# yuminstall tftp-sserver

 

  2.准备file server(yumrepository)yum仓库

     此处提供的yum仓库是通过httpweb服务对Client客户端通过程序包

        [root@localhost ~]# mkdir /var/www/html/centos7      # 创建安装程序文件放置位置

        [root@localhost ~]# mount –binf/media/cdrom /var/www/html/centos7      # 通过目录绑定的方式挂载光盘镜像

        [root@localhost ~]# cp  /tmp/centos7.cfg  /var/www/html/centos7   # 将配置好的kickstart文件放置到指定位置

   注意:

        1) yum仓库可以将光盘内的镜像全部复制到/var/www/html/centos7目录下,也可以自己creatrepo创建yum的依赖关系

        2) kickstart文件:anaconda(CentOS系列基于内核启动来实现定制自动安装操作)的配置文件,其可以通过修改/root目录下模板样式anaconda-ks.cfg来实现定制。在此配置文件中需要指明"url –url=http://172.16.0.1/"和需要安装的程序组。

 

  3.配置DHCP

       /etc/dhcp/dhcpd.conf文件中添加如下配置: 

option domain-name"xuding.com";

option domain-anem-servers172.16.0.1;

default-lease-time 3600;

max-lease-time 7200;                                                                                                                                                                               

subnet  172.16.0.0 netmask  255.255.0.0 {

range 172.16.200.101  172.16.200.110;

option route 17216.100.6;

filename "pxelinux.0";

next-server 172.16.100.6;

}

    注意:

option domain-anem-servers的范围大于option route所配置的路由范围,会先找option route 所提供的路由

 

  4.提供预引导加载等相关文件

       (1)syslinux程序包所提供的引导加载程序的库文件中的网络引导程序pxelinux.0复制到tftp对外提供服务的路

                 [root@localhost ~]#   cp   /usr/share/syslinux/pxelinux.0   /var/lib/tftpboot/

       (2) 将镜像文件中的部分文件复制到tftp服务提供使用

                 [root@localhost ~]# cp  /media/cdrom/images/pxelinux/{vmlinuz,initrd.img} /var/lib/tftpboot/

                 [root@localhost ~]#  cp   /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk}  /var/lib/tftpboot/

 

 5.tftp服务下创建程序文件提供pxelinux.cfg的配置

       [root@localhost ~]#  mkdir   /var/lib/tftpboot/pxelinux.cfg/

       [root@localhost ~]#  vim   /var/lib/tftpboot/pxelinux.cfg/default

 配置文件内容类似如下:

 menu.c32提供文本图形化选择界面,显示提手时间、超时时长、全局菜单、单个菜单、指明加载的内核、安装时候yum仓库位置、自动安装时所使用的ks配置

default menu.c32

  prompt 5

  timeout 30

 MENU TITLE  CentOS 7 PXE Menu

 

  LABEL linux

  MENU LABELInstall CentOS 7 x86_64

  KERNEL vmlinuz

  APPENDinitrd=initrd.img inst.repo=http://172.16.100.6/centos7ks=http://172.16.100.6/centos7.cfg

 

  6.启动各服务

[root@localhost ~]# systemctl start httpd.service

[root@localhost ~]# systemctl start dhcpd.service

[root@localhost ~]# systemctl start  tftp.socket

  此时,基于PXE的网络引导已经完成,可以为与该主机在同一网段内分配IP地址池内的IP,并进行自动化引导操作

 

注意:

  CentOS 6CentOS 7的配置有部分不同,参考如下:

cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

cp/media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/

cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg}/var/lib/tftpboot/

mkdir/var/lib/tftpboot/pxelinux.cfg/

cp/media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

Nicolo:http://xuding.blog.51cto.com/4890434/1744751

原创文章,作者:Nicolo,如若转载,请注明出处:http://www.178linux.com/15731

(4)
NicoloNicolo
上一篇 2016-04-30
下一篇 2016-04-30

相关推荐

  • 自用vim环境参数设置

    基本显示设置 set nu mber 显示行号 syntax on 语法高亮 set cursorline 用浅色高亮当前行 set ruler 显示标尺 set showcmd 输入的命令显示出来,看的清楚些 set cmdheight=1 命令行(在状态行下)的高度,设置为1 set tabst…

    Linux干货 2017-04-24
  • grep、egrep、fgrep命令和正则表达式用法

    一、简介  1.1、grep说明    grep命令简单来说就是linux系统实现文本内容筛选过滤的命令。当我们需要快速定位查找文本(通常是配置文件)中我们需要的内容时,使用grep命令绝对算是最有效的处理方式之一。原因就在于grep可以配合包括“管道”、“正则表达式”等命令完成我们想要的关键字筛选过滤功能。个人认为不管是喜欢L…

    Linux干货 2015-08-31
  • Linux文件系统初识

    Linux文件系统初识        文件系统是一种用于向用户提供数据访问的机制,我们的硬盘,U盘等存储设备会被文件系统分割为特定大小的块,系统中的文件就被存储在数据块中,而我们平常接触到的分区,目录,文件等正是文件系统通过组织整合之后才呈现在我们面前的,我们无需去关心我们的数据到底存储在硬盘的那个…

    2017-07-15
  • LVS-几种负载方式的区别

    LVS的原理很重要,很重要。每一个知识点都要做到熟记与脑,谨记于心,张口就来。 LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。本项目在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。 使用集群技术和Linux操作系统实现一个高性能、高可用的服务器. 很好的可伸缩性(Scal…

    Linux干货 2017-05-11
  • 高级变量-有类型变量

    一.高级变量用法– 有类型变量   Shell 变量一般是无类型的,但是bash Shell 提供了declare和 typeset 两个命令用于指定变量的类型,两个命令是等价的 declare [ 选项]  变量名 -r  将变量设置为只读属性 -i  将变量定义为整型数 -a  将变量定义为数…

    Linux干货 2016-11-24