原文地址

 下面我要介绍的是一个基于网络的PXE和kickstart自动安装系统的实验,这也是我从学习linux不久,一直想要实现的功能,这里,我将实验过程和自己的理解贴出来。


实验拓扑图如下所示:

PXE、kickstart实现Linux安装自动化_linux


实验环境准备:

PXE、kickstart实现Linux安装自动化_IP地址_02

注意:以上的三台服务器和一台普通PC都要位于同一个网段,而且PC先不配置地址

 

实现过程原理讲解:(如有不懂之处,先理解,做完实验就会理解,建议看看)

  1、普通PC启动后,将其启动项调为基于网卡启动,如下图

  PXE、kickstart实现Linux安装自动化_拓扑图_03

  

  2、 由于网卡本身还没有地址,然后,它就会向它所在的局域网内发起DHCP DISCOVER的广播包


  3、 然后DHCP服务器就会响应它,经过相互确定后,会给这台PC的网卡分配一个IP地址,于此同时,DHCP服务器会告诉网卡有下一个服务器,然后指定网卡到下一个服务器上去下载某个文件。


  4、网卡获得地址后,就会去下一个服务器,即TFTP服务器上去下载一个为pexlinux.0的文件,然后,下载至本地(网卡内部嵌有TFTP客户端程序),pexlinux.0的功能就相当于grub引导程序了

 

  5、网卡下载到pxelinux.0文件后,在普通PC的内存中展开,然后就需要kernel和ramdisk,到TFTP服务器上去下载这两个文件,启动虚拟的系统。


  6、接下来,下载.cfg的文件,实现自动安装,该文件中指定了安装的源服务器,即上面的Web服务器,我们把Web服务器当成了yum源,之后普通的PC就会到Web上去下载安装时需要的包。


实验过程:

   一、服务器环境搭建

      1、 配置DHCP服务器,子网为:192.168.100.0,地址池为:192.168.100.10-           192.168.100.30,我们还要将TFTP服务器和Web服务器的地址进行绑定。

         I、在DHCP服务上运行setup命令,配置DHCP地址。      

  I、在DHCP服务上运行setup命令,配置DHCP地址。      

 PXE、kickstart实现Linux安装自动化_局域网_04       

       

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 II、然后把系统的安装盘挂载到dhcp这台主机上,安装DHCP服务。

 

#mkdir/media/cdrom             #创建文件夹,以供挂载
#mount/dev/cdrom /media/cdrom  #将光盘进行挂载
#cd /media/cdrom/Packages      
#ls | grep dhcp                #查看DHCP服务的包有哪些
#rpm –ivh dhcp-4.1.1-38.P1.e16.centos.x86_64.rpm     #这里我们只需要安装这个包

 III、接下来,修改DHCP的配置文件,并启动服务

        注意:DHCP服务的配置文件在/etc/dhcp/下,为dhcpd.conf,默认情况下,该配置文件为空,但是,

        安装服务时,给我们提供了一个模板://usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample

 

#cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf
#对原来的文件进行覆盖

编辑
/etc/dhcp/dhcpd.conf,配置如下,修改时,不要忘记分号";"
optiondomain-name "mageedu.com";
optiondomain-name-servers 192.168.100.10, 192.168.0.254;
  
default-lease-time86400;
max-lease-time 100000;
  
   subnet192.168.100.0 netmask 255.255.255.0 {          #指定子网、掩码
       range 192.168.100.10 192.168.100.30;               #指定地址池信息
       option routers 192.168.100.10;                     #网关地址
  
        #将Web服务器和TFTP服务器进行地址绑定
       host Tftp {
         hardware ethernet 00:0C:29:9F:6A:25;     #在TFTP服务器下通过ifconfig查看
         fixed-address 192.168.100.11;
        }
       host Web {
          hardware ethernet 00:0C:29:CD:B8:B9;     #在TFTP服务器下通过ifconfig查看   
          fixed-address 192.168.100.12;
        }
    }

 

 保存退出,之后再检查DHCP的配置文件是否错误

 #service dhcpd configtest
Syntax: OK #语法正确,可以启动服务了
#service dhcpd start
         
#把dhcp服务加入开机自动启动       
#chkconfig dhcpd on
#chkconfig --list | grep dhcp
dhcpd             0:off   1:off   2:on    3:on    4:on    5:on    6:off

 

 

 IV:开启Web服务器和Tftp服务器,查看其IP地址

           TFTP服务器自动获取到的IP地址       

        PXE、kickstart实现Linux安装自动化_拓扑图_05

            Web自动获取到的IP地址

     PXE、kickstart实现Linux安装自动化_局域网_06    


   2、Web服务器上挂载光盘,安装httpd服务,建立yum

#mkdir /media/cdrom                                 #创建目录,作为挂载点
#mount /dev/cdrom  /media/cdrom                     #进行挂载
#cd  /media/cdrom/Packages                          #切换到软件包的目录
#rpm -ivh httpd-2.2.15-29.el6.centos.x86_64.rpm     #安装web程序,httpd
#mkdir  /var/www/html/centos6                       #在web目录下创建目录

 

绑定/media/cdrom/var/www/html/centos6,这样,我们的Web上就有yum源了,其实就是安装光盘

 

#mount --bind /media/cdrom  /var/www/html/centos6

接下来启动httpd服务,并把它设为开机自动启动:
 
#service httpd  start
#ss -tnl                  #查看80端口是否在监听
#chkconfig  httpd  on

 

重要的还要一步,挂载是不会自动执行的,我们可以写入/etc/rc.d/rc.local文件中

 

 

mount /dev/cdrom  /media/cdrom
mount --bind  /media/cdrom  /var/www/html/centos6

   这样,只要系统启动完成后,这两步就会执行,是系统启动的最后两步


   3、在TFTP服务器上修改yum的配置文件,原来的备份,然后安装tftp-server服务

 

#cd /etc/yum.repos.d/
#mkdir  backup
#mv * backup               #备份原有的yum配置文件
     
#vim pxe.repo
 [base]
 name=the pexautoinstall yum
 baseurl=http://192.168.100.12/centos6/        #指定Web为其yum源 
 enabled=1
 gpgcheck=0   
 
安装TFTP服务
#yum  install  tftp-server  #这是服务端程序

  扩展:这里的tftp服务是由xinetd超级进程管理的

 如何启动TFTP服务呢,编辑如下:

#vim /etc/xinetd.d/tftp
disable                 = no   #默认为yes,我们修改为no

 

保存上面文件,并且启动xinetd服务

 

#service xinetd start
#chkconfig xinetd on
#ss  -unl               #查看服务是否启动,tftp监听的是UDP的69号端口

 二、
上面的三步主要是搭建了这三个服务器,下面,我们就开始进入正题,搭建
PXE
环境。
    以下步骤,未特殊说明,都在TFTP服务器上进行
    1、将系统的安装光盘挂载到TFTP服务器上  
#mkdir /media/cdrom
#mount /dev/cdrom  /media/cdrom            #挂载
 2、提供PXE工作环境

       普通PC要先到TFTP服务器上下载pexlinux.0的文件,拿回来,放到内存中展开之后就需要kernelramdisk文件,再需要安装文件。

      I、pexlinux.0这个文件要syslinux程序生成

 
#rpm –qa |grep syslinux      
#yuminstall syslinux
#rpm–ql syslinux
#pexlinux.0文件在/usr/share/syslinux/下

 网卡能够下载pxelinux.0,TFTP的目录在/var/lib/tftpboot/,所有拷贝过去 
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/  

3、提供引导内核等文件  
#cd/var/lib/tftpboot       #将下列文件都拷贝到该目录
#cp /media/cdrom/p_w_picpaths/pxeboot/vmlinuz .        #内核
#cp/media/cdrom/p_w_picpaths/pxeboot/initrd.img .      #ramdisk
#cp /media/cdrom/isolinux/splash.jpg .            #安装系统的图片
#cp /media/cdrom/isolinux/vesamenu.c32 .          #安装时显示的菜单
#cp /media/cdrom/isolinux/boot.msg .             # 

4、最后我们要提供kf文件(在Web服务下进行)
      ks文件是由kickstart生成的文件,在linux上可以用工具system-config-kickstart生成
 在xwindow下启动system-config-kickstart工具
        我们可以导入当前系统安装时所生成的文件,在/root目录下,名为anaconda.cfg
       然后更改部分内容,下面这项,关于url的一定要改一下,原来的不一定适应你的环境
保存称为.cfg结尾的文件,例如:ks.cfg,保存至/var/www/html/目录下,即web服务根下

注意:如果在安装过程中,如果大家出现了问题,一般是ks.cfg文件配置有问题,可能是分区的被注释掉了,把前面的"#"删除掉,由于每个人的情况可能不一样,所有遇到问题就在网上多查查吧
    
    5、更改boot时的选项,TFTP服务器上操作 
 # mkdir /var/lib/tftpboot/pxelinux.cfg/
# cp/media/cdrom/isolinux/isolinux.cfg ./pxelinux.cfg/default
    label linux
      menu label ^Install orupgrade an existing system
      menu default
     kernel vmlinuz
      append textinitrd=initrd.img text ks=http://192.168.100.12/ks.cfg    #添加内容

 6、最后一点,在DHCP的配置文件下指定下一个服务器,和获取的文件  
  
subnet 192.168.100.0 netmask 255.255.255.0 {
      range 192.168.100.10 192.168.100.30;
      option routers 192.168.100.10;
         
      #指定TFTP服务器的地址,指定下载的文件为pexlinux.0
      next-server 192.168.100.11;
      filename "pxelinux.0"; 

    再次加载DHCP的配置文件:  
#service  dhcpd  force-reload


三、测试阶段:

    开启普通PC,它会自动以PXE的方式运行,下面,我将以图片的形式展示

   

 PXE、kickstart实现Linux安装自动化_IP地址_07

    


PXE、kickstart实现Linux安装自动化_拓扑图_08


  安装各种安装包

PXE、kickstart实现Linux安装自动化_linux_09


安装结束后,系统会自动重启,下面就是平时Linux的开机环境了,是不是很熟悉。

PXE、kickstart实现Linux安装自动化_IP地址_10


PXE、kickstart实现Linux安装自动化_IP地址_11



   总结:这个PXE的实验要求思路要清除,所以,大家在做实验之前,一定要理清思路,然后再开始,遇到问题了,一定要多多自己解决,解决问题才能成长。