Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)

Linux上基于网络自动化安装系统(CentOS6.5+DHCP+TFTP+PXE)

一、前言

安装系统常用的方式就是,光驱安装,U盘安装,但是这种手动安装方法效率都很低,而且出错概率大。
现在网卡速率也都基本1000M,所以网络安装就显得更简单,把管理员从重复、繁琐的安装操作中解放出来。
当然,这只是一个局域网内的实验配置,生产环境会有更专业的解决方案,但是这个原理都是一样的。

二、原理

本次实验用到的协议和技术有:
    DHCP: Dynamic Host Configuration Protocol 动态主机配置协议
    TFTP: Trivial File Transfer Protocol 小文件传输协议
    PXE: Preboot Execution Environment远程引导技术

上图告诉我们本次网络安装中DHCP,TFTP,PXE的关系和启动的过程,本次实验DHCP和TFTP是在同一台服务器。
详细流程如下:

如图:

 

wKiom1WLuc6RRXpJAAEddHK7DPQ556.jpg




 

1. Target client向DHCP服务器发送DHCP请求
    首先,client端的网卡一定要支持PXE,并且将client的BIOS设置成网络启动为第一顺序,然后PXE BootROM会以UDP协议发送一个广播请求DISCOVER,向网络中的DHCP服务器索取IP地址等信息。

2. DHCP收到广播,并发送广播包回应Client一个OFFER,意义为我可以给你提供ip信息

3. Client收到DHCP的OFFER后,继续发送广播包,向DHCP服务发起REQUEST

4. DHCP服务器收到REQUEST后,验证是否来自合法的PXE Client请求,通过验证后,会响应给client提供:IP地址,pxelinux启动程序位置(TFTP),以及配置文件所在位置

5. Client向TFTP服务器请求下载启动文件,文件包括:
    pxelinux.0, vmlinuz, initrd.img, pxelinux.cfg/default, pxelinux.cfg/list

6. TFTP服务器收到请求后,启动TFTP并开始传送启动文件
    当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM 由 TFTP 通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,系统会下载并读取pxelinux.cfg/list文件,操作人员需要安装list中列出的系统进行选择,启动对应选择的Linux系统并安装程序的引导内核。


三、实验思路

1. 前提条件:
    Client机器必须支持PXE启动
    Client机器,DHCP,TFTP必须在同一个局域网内
    要安装的系统需要有对pxeboot的支持

2. 方案数据:
   
    预安装系统: 
        CentOS6.6

    DHCP服务器(TFTP服务器)信息:
        IP:192.168.100.200
        OS: CentOS6.6

    Client机器信息:
        MAC: 00:0c:29:c1:3a:ab
        ip: 192.168.100.222  (可以在DHCP配置中预留)


四、实验具体操作步骤

1. DHCP服务的配置
   
  1) 安装dhco服务器包:
       

#yum -y install dhcp

  2) 编辑dhcp配置文件:
    a. 可以通过rpm -ql dhcp来查看配置文件的sample,这样编辑起来更容易些:
           

 #rpm -ql dhcp

    查到样例在这里 /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample
   #复制dhcpd.confg.sample到/etc/dhcp/dhcpd.conf
           

#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf

    b. 编辑dhcpd.conf

   

#vim /etc/dhcp/dhcpd.conf

    option domain-name "richie.com";
    option domain-name-servers 8.8.8.8;

    default-lease-time 86400;
    max-lease-time 100000;

    log-facility local7;
    subnet 192.168.100.0 netmask 255.255.255.0 {
    range 192.168.100.201 192.168.100.222;
    #option routers 192.168.100.200;
    next-server 192.168.100.200;   # TFTP服务器的IP(这里就是本机的IP)
    filename "pxelinux.0";
    }


重点注意 next-server 和 filename参数,这里分别指定了TFTP服务器的位置和启动文件的名称

   c. 启动DHCP服务
     启动之前,应该检测下配置文件是否有错误,可以用以下命令:         

#service dhcpd configtest

     如果提示

#Syntax: OK

那就没问题,继续启动DHCP服务

          

#service dhcpd restart

2. TFTP服务器配置
    1) 安装tftp服务包
       

#yum -y install tftp-server

#TFTP的配置文件位于 /etc/xinetd.d/tftp

    2)启动tftp服务
由于tftp是瞬时守护进程,依赖于xinetd来监听,所以启动tftp,必须要重启xinetd来是让配置生效

      #启动tftp两种方式:
          a. 修改tftp配置文件中disable=no

         #vim /etc/xinetd.d/tftp
         #disable=no

          b. 用chkconfig命令

         #chkconfig tftp on

注意,两种方式任选其一都可以实现,但是必须要重启xinetd,命令如下:

#service xinetd restart

  查看udp 69端口是否监听

# ss -unl | grep :69

    3) 准备启动文件
       a. 启动镜像文件pxelinux.0的准备
         获取这个文件,需要安装syslinux包,然后将pxelinux.0复制到/var/lib/tftpboot目录

#yum -y install syslinux
#cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot

       b. 提供引导内核等文件
         同时在/var/lib/tftpboot目录下创建pxelinux.cfg目录
         挂载系统光盘,假设位置为/media/cdrom/

# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
# cp /media/cdrom/isolinux/{splash.jpg,vesamenu.c32,boot.msg} /var/lib/tftpboot
# mkdir /var/lib/tftpboot/pxelinux.cfg/
# cp /media/cdrom/isolinux/isolinux.cfg  /var/lib/tftpboot/pxelinux.cfg/default


3. 提供安装源
    这里我们基于http来提供,挂载CentOS安装光盘镜像
    a. 安装http服务

# yum -y install httpd
# mkdir -pv /var/www/html/centos/6/x84_64

用/6/x86_64这种结构,以后便于用变量来引用这个地址

# mount --bind /media/cdrom /var/www/html/centos/6/x84_64

  --bind可以绑定两个挂载地址

 然后我们就可以用 在ks.cfg指定安装源为 http://192.168.100.200/centos/6/x86_64


4. 提供ks.cfg

这里不详细提供如何配置ks.cfg, 这个是kickstart的脚本。可以使用system-config-kickstart工具来创建

 

ok,基本ok,附图来欣赏下,启动成功的样子吧~~

 

这个tftp的信息会一闪而过,大家就当是了解下过程吧

wKiom1WLufaRt-NLAAHvJu-ibvI667.jpg

wKioL1WLu7LhyVL_AAIKX3axAAM916.jpg



在这个menu状态,按ESC可以进入boot命令行,可以继续键入boot option来指定ks脚本啊,配置ip信息等好多内容,具体的option可以参考redhat的installation guide文档很详细的。

 

wKiom1WLugaS6lU1AAA7AuoBZIM126.jpg


 

本次实验就到这里, 谢谢大家的关注!


本文出自 “Richier” 博客,转载请与作者联系!

你可能感兴趣的:(TFTP,DHCP,pxe)