Linux PXE网络装机

一、何为PXE

    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系列系统等。

   想要了解PXE网络装机,不得不提正常的装机过程.

    非PXE装机:

    1.准备系统光盘或U盘

    2.进入BIOS,修改默认启动程序,将其设置位优先启动光盘

    3.进入PE模式进行系统安装

    4.系统还原,自动安装

    5.重启机器,安装完成

  以上步骤,人为参与的步骤为1,2,3,人为参与度非常高,想象一下如果有100台裸机,相同的步骤要做100次,非常消耗时间.

  而PXE网络装机极大的减少了人为参与度,操作员只需要准备好PXE装机服务器,让服务器自动安装系统就好了.

  PXE工作原理简述:

   1.准备PXE服务器,在该服务器上准备待安装的系统

   2.准备好一个服务,这个服务可以给裸机分配ip地址,只有分配了ip地址,服务器才可以定位这些裸机

   3.裸机从服务器上下载启动软件包到内存,从而实现起机操作

   4.PXE服务器上提前配置好的无人值守系统可以代替操作员进行系统安装

   5.PXE服务器引导裸机下载PXE上准备的待安装系统,并且安装

  以上步骤并不绝对,可以打乱,但是必须保证PXE服务器配置的完整性,即不可省略任意一步

  蓝色为路由器,使其处于同一网段,PXE装机服务器一台,裸机若干台

  Linux PXE网络装机_第1张图片

二、PXE装机服务器上必须有什么

  PXE组件及过程分析
• 需要哪些服务组件?
– DHCP服务,分配IP地址、定位引导程序
– TFTP服务,提供引导程序下载
– HTTP服务(或FTP/NFS),提供yum安装源

 要实现一个完整的PXE装机服务器,以上三种服务是必须的,我们要弄清的是这些服务之间的被使用顺序,已经这些服务具体实现什么功能.看看下面一张图,PXE服务器分三个部分,图什么虽然将他们分开表示,但是实际上它们一般是在一台服务器上的,这里为了演示具体的调用过程而分开.

– PXE client 集成在网卡的启动芯片中
– 当计算机引导时,从网卡芯片中把PXE client调入内存
执行,获取PXE server配置、显示菜单,根据用户选
择将远程引导程序下载到本机运行

 

– DHCP Server 服务器上的一个必备服务

– 它的作用在于为裸机分配ip地址,让下一个服务可以地位到这台机器

 

– Install/Boot Server 当客户机被分配到ip后 这个服务就可以找到客户机了

– 它的作用是为客户机提供启动文件,写到客户机的内存里

– 一般是一些驱动文件

 

– OS Server 当客户机下载完启动文件后,这台机器就确认可以启动了,但是这台机器还是空的,没有安装操作系统软件

– 它可以是web服务或者ftp服务,目的是将文件放到这个服务下,以便客户机下载

– 在这个过程中,涉及很多人工选项,如果说前两部是固定不变的话,那这一步就提醒了客户机的差异性

– 为了解放人类的双手,我们可以用无人值守服务为我们工作

Linux PXE网络装机_第2张图片

三、Linux系统使用PXE网络装机

 0.环境准备

    两台虚拟机,一台作为PXE服务器(ip : 192.168.4.7),一台为裸机,

    裸机选用PXE引导安装,注意两个地方,一是选择PXE引导安装,二是选择与服务器相同的虚拟网卡

Linux PXE网络装机_第3张图片   Linux PXE网络装机_第4张图片

 1.DHCP服务     

部署DHCP服务器
• Dynamic Host Configuration Protocol
– 动态主机配置协议,由 IETF(Internet 网络工程师任
务小组)组织制定,用来简化主机地址分配管理

• 主要分配以下入网参数
– IP地址/子网掩码/广播地址
– 默认网关地址、DNS服务器地址

• DHCP地址分配的四次会话,以广播进行,先到先得
– DISCOVERY --> OFFER --> REQUEST -->ACK

  一个网络中,只能有一台DHCP服务器

• 服务端基本概念
– 租期:允许客户机租用IP地址的时间期限,单位为秒
– 作用域:分配给客户机的IP地址所在的网段
– 地址池:用来动态分配的IP地址的范围

   1)安装DHCP服务

       [root@server /]# yum -y install dhcp      

    2)修改配置文件

       [root@svr7 /]# vim /etc/dhcp/dhcpd.conf

    文件默认没有参数,如下

           # DHCP Server Configuration file.
           #   see /usr/share/doc/dhcp*/dhcpd.conf.example
           #   see dhcpd.conf(5) man page
         

     追加参数

          subnet 192.168.4.0 netmask 255.255.255.0 {       #子网网段  /  子网掩码
           range 192.168.4.100 192.168.4.200;                   # 被分配的ip地址范围       --地址池
           option domain-name-servers 192.168.4.7;          # pxe服务器ip
           option routers 192.168.4.254;                              # 路由地址
           default-lease-time 600;                                        # 租期 最小租期
           max-lease-time 7200;                                          # 租期 最大租期
           next-server  192.168.4.7;                                     # 指定下一个服务器tftp服务器地址
           filename  "pxelinux.0";                                         # 指定网卡引导文件名称
}   

       3)重启服务
      [root@svr7 /]# systemctl restart dhcpd

  2.构建tftp服务,提供众多的引导文件

       DHCP配置好后,裸机就可以访问到pxe服务器了,这时候dhcp就会告诉客户机去找下一个服务器tftp的服务器地址,在这个服务器上有客户机需要的引导文件

      tftp:简单的文件传输协议   默认端口 69
         默认共享路径:/var/lib/tftpboot/

      所谓引导文件就是一个裸机能够调用硬件的那部分驱动,在这个基础上才可以安装操作系统(操作系统就是一个软件)

      我们把用的到的引导文件放到tftp的默认共享文件路径下/var/lib/tftpboot/

      1)安装软件tftp-server
         [root@svr7 /]# yum -y install tftp-server           
         [root@svr7 /]# systemctl restart tftp                 #重启服务

      2)部署syslinux

       syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。不仅支持采用BIOS结构的主板,而且从6.0版也开始支持采用EFI结构的新型主板。

公认的文件扩展名(不区分大小写)

扩展名

英文说明

中文说明

none or other

Linux kernel image

Linux内核映像

.0

PXE bootstrap program (NBP) [PXELINUX only]

PXE 启动引导程序(NBP)

.bin

"CD boot sector" [ISOLINUX only]

“光盘引导扇区”

.bs

Boot sector [SYSLINUX only]

“磁盘引导扇区”

.bss

Boot sector, DOS superblock will be patched in [SYSLINUX only]

“磁盘引导扇区”,

.c32

COM32 image (32-bit COMBOOT)

COM32映像文件

.cbt

COMBOOT image (not runnable from DOS)

COMBOOT映像文件

.com

COMBOOT image (runnable from DOS)

COMBOOT映像文件

.img

Disk image [ISOLINUX only]

磁盘映像文件

.ima

Floppy image [ISOLINUX only]

软盘映像文件

    我们要用到的就是后缀位.0的文件,PXE 启动引导程序(NBP),把他放到tftp共享文件目录下

    所有的syslinux默认配置都可以在一个名为syslinux.cfg的文件里面更改。

     syslinux会在下列位置搜索syslinux.cfg配置文件:


      [root@svr7 /]# yum -y install syslinux
      [root@svr7 /]# rpm -ql syslinux | grep pxelinux.0  #查询软件安装清单

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

    3)部署菜单文件 
      [root@svr7 /]# poweroff   #关闭机器,图形添加光驱设备,放入光盘镜像文件,提供软件包
      [root@svr7 /]# mount /dev/cdrom  /mnt/
      [root@svr7 /]# ls /mnt/

      [root@svr7 /]# mkdir /var/lib/tftpboot/pxelinux.cfg           #在tftp共享文件目录下创建pxelinux.cfg
      [root@svr7 /]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default   #isolinux.cfg 镜像配置文件

     SYSLINUX或ISOLINUX制作启动U盘或光盘 SYSLINUX/ISOLINUX 是专门用来引导可移动介质的轻量级引导程序,因为这样的介质通常不会固定只针对一种硬件。我们主要介绍以下ISOLINUX 引导安装程序。ISOLINUX其实是一个简单的Linux系统。

     要使用这个ISOLINUX引导程序需要配置isolinux.cfg

   4)部署图形模块与背景图片
        vesamenu.c32(图形模块)
        splash.png(背景图片)

        在系统安装时必须有界面,这一步骤提供了可视界面,提高了阅读性

      [root@svr7 ~]# cp /mnt/isolinux/vesamenu.c32 /mnt/isolinux/splash.png /var/lib/tftpboot/

      [root@svr7 ~]# ls /var/lib/tftpboot/                       #目前拥有的文件
      pxelinux.0  pxelinux.cfg  splash.png  vesamenu.c32

   

    5)部署启动内核与驱动程序
      vmlinuz(启动内核)
      initrd.img(驱动程序)

      [root@svr7 ~]# cp /mnt/isolinux/vmlinuz   /var/lib/tftpboot/ 

      [root@svr7 ~]# cp /mnt/isolinux/initrd.img  /var/lib/tftpboot/

      [root@svr7 ~]# ls /var/lib/tftpboot/         #需要的文件有这6个
          initrd.img  pxelinux.cfg  vesamenu.c32
          pxelinux.0  splash.png    vmlinuz

  

    6)修改菜单文件

      需要对配置文件做一些修改default就是pxelinux.cfg,也就是isolinux引导文件的配置文件
       [root@svr7 ~]# vim  /var/lib/tftpboot/pxelinux.cfg/default
       末行模式 开启行号  :set nu

  1 default vesamenu.c32   #默认加载图形的模块
  2 timeout 600            #读秒时间   1/10秒

  10 menu background splash.png  #背景图片
  11 menu title LINUX PXE Server   #系统标题

  61 label linux
  62   menu label  Install CentOS 7   #菜单的显示内容   
  63   menu default         #读秒结束后默认选择
  64   kernel vmlinuz       #加载启动内核
  65   append initrd=initrd.img    #加载驱动程序

  这个文件默认下有数个label , 这里只需要一个就可以了 删除其他的label,实现最轻量配置

 3.构建Web服务器 

        构建Web服务器,,共享众多的软件包 ,这里可以选择http服务,或者ftp服务,我这里选择的是http

        [搭建http和ftp服务教程,戳这里] https://blog.csdn.net/ck784101777/article/details/95305699

       1)安装软件包
        [root@svr7 ~]# yum -y install httpd
       2)重启httpd服务
        [root@svr7 ~]# systemctl  restart httpd
       3)挂载光驱设备
        [root@svr7 ~]# mkdir /var/www/html/centos       #创建一个文件夹用于挂载软件包
        [root@svr7 ~]# mount /dev/cdrom  /var/www/html/centos  #挂载光盘  
        [root@svr7 ~]# systemctl restart httpd         #挂载完后重启一下服务

        [root@svr7 ~]# firefox 192.168.4.7/centos   #用浏览器查看一下是否可以访问到文件

   4.实现无人值守安装,生成应答文件

        Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录人工干预填写的各种参数,并生成一个名为ks.cfg的文件。如果在自动安装过程中出现要填写参数的情况,安装程序首先会去查找ks.cfg文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便会弹出对话框让安装者手工填写。所以,如果ks.cfg文件涵盖了安装过程中所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处下载ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启/关闭系统,并结束安装。

        1)安装可以生成应答文件的软件包
           [root@svr7 ~]# yum -y install system-config-kickstart 

        2#运行system-config-kickstart          
           [root@svr7 ~]# LANG=en  system-config-kickstart  #英文进行运行
         #点击 "软件包选择(Package Selection)" 查看是否可以进行选择
          需要Yum仓库的支持:指向光盘的内容仓库,标识必须为[development]

          [root@svr7 ~]# vim /etc/yum.repos.d/local.repo 
            [development]
            name=CentOS-$releasever - Base
            baseurl=ftp://192.168.4.254/centos-1804     #web服务器软件包地址
            enabled=1
            gpgcheck=0

            [root@svr7 ~]# LANG=en  system-config-kickstart
            点击 "软件包选择(Package Selection)" 查看是否可以进行选择

            下面展示11张图大家参考配置

            一共11个选项,下面一一配置

             选择时间区,选择亚洲/上海

             填写待安装机器的root密码

             安装后重启

              Linux PXE网络装机_第5张图片

  安装方式选择 执行新的安装

   web服务选择http(步骤3讲的) 添加服务器ip和访问地址(网络地址)

Linux PXE网络装机_第6张图片

 安装方式,启用新的加载

Linux PXE网络装机_第7张图片

分区信息 :

  选择清空主机boot记录(用于解决非裸机情况)

  选择清空磁盘分区

  选择初始化新的磁盘分区

Linux PXE网络装机_第8张图片

挂载点选择根目录 , 选择填满磁盘

Linux PXE网络装机_第9张图片

添加裸机网卡,eth0.代表第一张网卡

Linux PXE网络装机_第10张图片

加密方式,默认即可

Linux PXE网络装机_第11张图片

 防火墙,选择Disabled 不安装 裸机安装防火墙可能出现一些安全阻拦问题

Linux PXE网络装机_第12张图片

默认即可

Linux PXE网络装机_第13张图片

选择安装软件,最小化安装,System下的Base,注意这里以实验为目的进行最小化安装,但是真实环境要根据真实需求来填写

Linux PXE网络装机_第14张图片

添加执行脚本,这里为了让大家体验到脚本的执行,创建了一个用户

这是无人值守的精髓所在,一个优秀的脚本可以让系统安装你的想法安装

Linux PXE网络装机_第15张图片

 配置完后点击File 选择save 存到根目录下            

[root@svr7 ~]# ls /root/ks.cfg 
               /root/ks.cfg

3)利用Web服务器将ks.cfg进行共享
[root@svr7 ~]# cp /root/ks.cfg  /var/www/html/
[root@svr7 ~]# ls /var/www/html/

4)修改菜单文件,指定应答文件位置
[root@svr7 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default 
label linux
  menu label ^Install CentOS 7
  menu default
  kernel vmlinuz
  append initrd=initrd.img ks=http://192.168.4.7/ks.cfg        #添加ks=http://192.168.4.7/ks.cfg 无人值守配置文件

  到这里就结束了,大家试一下,有问题可以留言,或者加微信ck971001

你可能感兴趣的:(Linux基础)