简述PXE+DHCP+TFTP+KS无人值守批量装机

 

原创作品

http://starli.blog.51cto.com/8813574/1670284

为什么需要PXE+DHCP+TFTP+KS实现无人值守批量装机?

一台两台服务器,你拿光盘去装是可以应付的。那么有100台服务器需要装机的时候,你也拿光盘去装吗?显然是不现实的,因此PXE+DHCP+TFTP+KS实现无人值守批量装机就可以满足多台服务器需要装机的需求。


PXE+DHCP+TFTP+KS组件:

PXE(preboot execute environment):预启动执行环境,可以利用此技术通过网络启动操作系统。

DHCP(Dynamic Host Configuration Protocol动态主机配置协议,可以利用此技术给局域网内的用户分配IP地址、子网掩码、网关等网络相关的配置信息。端口号     UDP:67

TFTP(Trivial File Transfer Protocol):简单文件传输协议,通常在局域网内传输文件大小比较小的文件。端口号    UDP:69

KS (kickstart):anaconda的配置文件,anaconda能够利用此配置文件实现操作系统自动化安装。

         PS:anaconda是centos系列系统的操作系统安装程序。


centos系列光盘安装的安装过程:

wKioL1WVAD2CC3g9AAB0sWLoEig416.jpg

 步骤:

        1、CPU会根据BIOS中的boot sequence寻找启动设备。(用光盘安装时,要保证boot sequence中光盘在引导次序的最前面)。

        2、CPU会执行找到的光盘中的的MBR中的Bootloader,之后Bootloader会把用于执行系统安装的内核和initrd.img文件调入内存解压并执行。

        3、内核会启动当前光盘上的anaconda安装程序。根据软件的提示,用户手动输入安装参数(若此时光盘中有用户定义好的ks.cfg文件,并把ks文件路径传递内核,即可以实现光盘自动化安装)。


centos系列pxe网络安装的安装过程:

       在实现网络安装的这种方式时,要确保网卡支持PXE功能,且此网卡中有一段程序能够让CPU执行。此类型的网卡在可以在没有操作系统的情况下从DHCP服务器请求IP地址等信息,并配置在网卡上。这种网卡还具有TFTP功能,可以到TFTP服务器上请求文件。

wKioL1WVDePRs9AbAADRygeXN6Y928.jpg

 步骤:

       1、CPU会根据BIOS中的boot sequence寻找启动设备。(用网络安装时,要保证boot sequence中网卡在引导次序的最前面

       2、CPU执行找到的网卡中的程序,此程序会让网卡发送请求向DHCP服务请求IP地址。(类型的DHCP服务器的配置文件中会有next-server和filename两个指令来指明TFTP服务器的IP地址和要从TFTP服务器上下载的文件

       3、网卡中的程序首先会下载TFTP服务器中的pxelinux.0文件此文件由系统光盘上的syslinux软件包提供),接着会下载TFTP服务器中的vesamenu.c32、splash.jpg、default文件来给用户提供一个启动选择界面。界面如下:

wKiom1WZ22XwNKeoAAMu2uwjRUM091.jpg

      4、选择第一项之后,网卡中的程序会根据选择下载TFTP服务器中的vmlinuz(内核文件)和initrd.img(虚拟根文件系统)到内存中解压并执行。之后内核会根据传给ks.cfg文件url路径从服务器中下载ks.cfg文件,而后内核会根据ks.cfg指定的url路径从服务器中下载anaconda程序让CPU执行。最后运行的anaconda程序会读取ks.cfg文件中指定的配置完成自动化安装。

       

PXE+DHCP+TFTP+KS无人值守批量装机具体实现步骤:

      

       配置前准备 :    

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth1 
   DEVICE="eth0"
   BOOTPROTO="static"
   IPV6INIT="no"
   MTU="1500"
   NM_CONTROLLED="no"
   ONBOOT="yes"
   TYPE="Ethernet"
   IPADDR="172.16.0.1"
   NETMASK="255.255.0.0"
  [root@localhost ~]# service network restart 
  # 给服务器配置静态IP地址

 

 


 

        PS:若用yum安装软件时,先要配置好yum源

   

      1、安装配置tftp-server

 

[root@localhost ~]# yum -y install tftp-server 
    # 安装tftp-server程序的时候会装一个xinetd程序,xinetd服务是管理tftp-server等服务的超级守护进程,其管理的服务通常称之为瞬时守护进程。   
     
    [root@localhost ~]# rpm -ql tftp-server     
    /etc/xinetd.d/tftp    
    /usr/sbin/in.tftpd     
    /usr/share/doc/tftp-server-0.49    
    /usr/share/doc/tftp-server-0.49/CHANGES  
    /usr/share/doc/tftp-server-0.49/README   
    /usr/share/doc/tftp-server-0.49/README.security     
    /usr/share/doc/tftp-server-0.49/README.security.tftpboot    
    /usr/share/man/man8/in.tftpd.8.gz     
    /usr/share/man/man8/tftpd.8.gz     
    /var/lib/tftpboot         # 此目录是tftp服务的根目录    
    # 查看tftp-server程序安装后生成的文件 
      
    [root@localhost ~]# chkconfig tftp on      
    [root@localhost ~]# chkconfig --list tftp    
    tftp             启用    
    # 配置tftp服务开机启动 
      
    [root@localhost ~]# service xinetd start    
    正在启动 xinetd:                 [确定]   
    [root@localhost ~]# ss -unlp | grep 69    
     UNCONN     0      0                         *:69                       *:*      users:(("xinetd",4315,5)) 
    # 查看tftp服务的69号端口是否开启       
      
    [root@localhost ~]# yum install syslinux   
    # pxe安装所需的pxelinux.0文件在此程序安装的/usr/share/syslinux/pxelinux.0    
    [root@localhost ~]# cp /cdrom/isolinux/{vesamenu.c32,vmlinuz,initrd.img,splash.jpg} /var/lib/tftpboot/    
    [root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg    
    [root@localhost ~]# cp /cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default 
    # 复制pxe网络安装系统时需要的文件

 

 

 

 

      2、安装配置dhcp服务 

 

 

[root@localhost tftpboot]# yum -y install dhcp    
   [root@localhost tftpboot]# rpm -q dhcp     
   dhcp-4.1.1-38.P1.el6.centos.x86_64    
     
   [root@localhost tftpboot]# vim /etc/dhcp/dhcpd.conf     
    option domain-name "cyccn.net";     
    option domain-name-servers 202.106.46.151;        
    default-lease-time 600;     
    max-lease-time 86400;       
    subnet 172.16.0.0 netmask 255.255.0.0 {       
    range 172.16.0.100 172.16.0.200;      
    next-server 172.16.0.1;       
    filename "pxelinux.0";     
    }    
    # 配置文件中输入以上内容   
     
   [root@localhost tftpboot]# service dhcpd start     
   [root@localhost tftpboot]# ss -unlp | grep 67     
   UNCONN     0      0                         *:67                       *:*      users:(("dhcpd",4470,7))  
   # 验证dhcp服务是否启动  
      
   [root@localhost tftpboot]# service iptables stop     
   # 确保iptables处于关闭状态    
     
   [root@localhost tftpboot]# setenforce 0     
   setenforce: SELinux is disabled     
   # 确保selinux处于关闭状态

 

 

 

  

    3、配置http的yum源

 

 

 [root@localhost ~]# yum install httpd       
   [root@localhost ~]# service httpd start     
   正在启动 httpd:                  [确定]     
    
   [root@localhost ~]# ss -ntlp | grep 80    
   LISTEN     0      128                      :::80                      :::*      users:(("httpd",28969,4),("httpd",28972,4),("httpd",28973,4),("httpd",28974,4),("httpd",28975,4),("httpd",28976,4),("httpd",28977,4),("httpd",28978,4),("httpd",28979,4))     
   # 确认httpd服务的80端口是否开启    
     
   [root@localhost ~]# mkdir /var/www/html/centos6    
   [root@localhost ~]# mount /dev/cdrom /var/www/html/centos6     
   # /var/www/html/目录是rpm安装httpd的默认网页文档目录       
     
   [root@localhost ~]# mv /etc/yum.repos.d/* ~/

 

  

    4、创建anaconda软件的ks.cfg配置文件           

 

[root@localhost ~]# vim /var/www/html/ks.cfg   
    #platform=x86, AMD64, 或 Intel EM64T 
    #version=DEVEL 
    # Firewall configuration 
    firewall --disabled 
    # Install OS instead of upgrade 
    install
    # Use network installation 
    url --url="http://172.16.0.1/centos6"
    # Root password 
    rootpw --iscrypted $1$ZRZM7Xhy$CuOUIwUmj9eUcXr9bn.Sw1 
    # System authorization information 
    auth  --useshadow  --passalgo=sha512 
    # Use text mode install 
    text 
    firstboot --disable 
    # System keyboard 
    keyboard us 
    # System language 
    lang zh_CN 
    # SELinux configuration 
    selinux --disabled 
    # Installation logging level 
    logging --level=info 
    # Reboot after installation 
    reboot 
    # System timezone 
    timezone  Africa/Abidjan
    # System bootloader configuration 
    bootloader --location=mbr 
    # Clear the Master Boot Record 
    zerombr 
    # Partition clearing information 
    clearpart --all --initlabel  
    # Disk partitioning information 
    part /boot --fstype="ext4" --size=200 
    part swap --fstype="swap" --size=2048 
    part / --fstype="ext4" --grow --size=1 
      
    %packages 
    @chinese-support 
      
    %end  
    # 在ks.cfg配置文件中输入以上内容

 

 

    

  5、通过/var/lib/tftpboot/pxelinux.cfg/default文件传给内核anaconda程序的配置文件url路径

[root@localhost ~]# vim /var/lib/tftpboot/pxelinux.cfg/default     
  label linux   
  menu label ^Install or upgrade an existing system    
  menu default    
  kernel vmlinuz   append initrd=initrd.img ks=http://172.16.0.1/ks.cfg

 

 

 

 

 

 

         #  在default文件中label为linux中指令为append的后面添加ks=http://172.16.0.1参数

  

   6、配置pxe客户端从网卡启动(我这以vmware workstation虚拟机为例)

        调整测试机的网卡和pxe服务器的网卡在同一个虚拟交换机上

        开机启动时按F2进入 BIOS配置界面,把boot中的Network boot调到最前面

wKiom1WaABHgu6hNAAIko-U7L44620.jpg

       调整完成后按F10,选择yes保存并退出BIOS,而后系统会自动重启。

       重启后,如果一切正常会出现以下界面:

wKiom1WaAU6y6sLFAAMu2uwjRUM086.jpg

       

      选择第一项,pxe客户端则会自动进行系统安装。根据ks文件中的定义,安装完成后会重启系统。

      下图是系统安装是软件包的安装过程

     

wKioL1WaBUPh5ld6AAEBynWyCYw638.jpg

 

 

你可能感兴趣的:(服务器,操作系统,配置文件,局域网,IP地址)