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

相关推荐

  • 磁盘分区

      1、创建一个10G分区,并格式化为ext4文件系统;    (1)要求其block大小为2048,预留空间百分比为2,卷标为MYDATA,默认挂载属性包含acl;   (2)挂载至/data/mydata目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间戳 第一步:创建一个10G的分区     [r…

    Linux干货 2016-12-18
  • CentOS6主机启动流程

    CentOS6主机启动流程 流程 一台Linux主机从开机到登录界面提示输入账号密码的时间中进行了好多动作,了解这些动作有助于了解Linux系统的过程,并能够对开机过程出现的故障进行troubleshooting。 主机启动后最先运行的是主板阶段,一旦电源开启,主板进行POST加点自检动作,自检完成后无故障,主板会读取BIOS信息,根据BIOS信息中的Boo…

    Linux干货 2017-05-13
  • 组管理与grep匹配

    1、复制/etc/skel目录为/home/tuser1,要求/home/tuser1及其内部文件的属组和其它用户均没有任何访问权限。     ~]# cp -r /etc/skel /home/tuser1     ~]# chmod -R 700 /home/tuser1 2…

    Linux干货 2016-10-17
  • N26-博客作业-week7

    1、创建一个10G分区,并格式为ext4文件系统;      (1) 要求其block大小为2048, 预留空间百分比为2, 卷标为MYDATA, 默认挂载属性包含acl;     ~]# fdisk /dev/sda Welcome to fdisk (util-li…

    Linux干货 2017-03-19
  • 第三周练习

    列出当前系统上所有已经登录的用户的用户名,注意:同一用户登录多次,只显示一次。                     ~]# who | cut -d" " …

    Linux干货 2016-11-09
  • N22-妙手 第4天视频课程练习

    一、Globbing文件名通配练习 练习1:显示/var目录下所有以l开头,以一个小写字母结尾,且中间出现任意一位字符的目录 [root@localhost ~]# ls -d /var/l?[[:lower:]] /var/lib  /var/log 练习2:显示/etc目录下,以任意一位数字开头…

    Linux干货 2016-08-22