作为运维,要养成把复杂多样的事情简单化程序化,而最基本的linux系统安装调优我们就暂交给PXE来做了。

  PXE运行原理:在PC上从网络启动Red Hat Linux安装程序的PXE协议,同时需要tftp服务PXE(Pre-boot Execution Environment)是由Intel设计的协议,它可以使计算机通过网络启动。协议分为client和server两端,PXEclient在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,并显示出命令菜单,经用户选择后,PXE client将放置在远端的操作系统通过网络下载到本地运行。

 

  DHCP+TFTP+http+KICKSTART模式:1.使用TFTPClient,通过TFTP协议到TFTP Server上下载所需的文件,2. DHCP Server是用来给DHCP Client动态分配IP地址的协议,不过由于这里是给PXE Client分配IP地址,所以在配置DHCP Server时,需要增加相应的PXE特有配置,3.kickstart提供无人值守流程。

 

  安装步骤:

  1,关闭防火墙:service iptables stop

       关闭selinux:

       #vim /etc/sysconfig/selinux

         SELINUX=disabled

  2,yum环境的搭建

     光盘文件copy:

    #mount /dev/cdrom /mnt

    #mkdir /var/www/html/centos -p

    #cp –r /mnt/* /var/www/html/centos    #将光盘内容全部复制到下载目录,自建目录用来存放系统

                                                              镜像文件,也可用其他软件直接将解压的镜像文件传到目录

    yum的搭建:

   #vim /etc/yum.repo.d/pxeserver.repo

       [base]

       name=base

       baseurl=file:///var/www/html/centos            #指定yum指令路径

       gpgcheck=no

 

测试yum的搭建是否正确: #yum list


  3,安装dhcpd

     yum -y install dhcpd

     vim /etc/dhcp/dhcpd.conf

  

subnet 192.168.0.0 netmask 255.255.255.0 {     #dhcpserver 分配ip的子网192.168.0网段,必须

                                               和PXEserver的一个网卡同一个网段
range 192.168.0.100 192.168.0.200;                   #为客户端分配ip范围
option
domain-name "192.168.0.105";
option
domain-name-servers 192.168.0.105;     #此项不写可能在自动安装时让您手动添加,

                                              这样达不到自动化的目的
option
routers 192.168.0.111;
default-lease-time 600;
max-lease-time 7200;
next-server 192.168.0.105;                    #指定tftp server的ip
filename "pxelinux.0";                        #通过tftp找到pxelinux.0文件,并下载
}


DHCP介绍:

ddns-update-style interim:这个是动态获取IP地址啦。必须放在第一项哇。

ignore client-updates:服务端与客户端传输相关

Subnet:获取IP段,要配置正确。

Routers:是路由地址

Range:dhcp分配IP段。

next-server:是tftp地址。

Allow booting bootp:放行传输和协议。


TFTP介绍:

Default:用在于tftp建立传输入协议后会去tftpboot里找文件,啥都找不着之后就会找default。

tftp-server :这个是用来传送引导文件的,

Initrd.img/vmlinux: 看用来安装前的一些工作。但tftp是用来传输这些文件的协议。


网络结构:

如图为网络安装环境的一个原理示意,安装环境由一个局域网和连接到该局域网的启动服务器、安装服务器和待安装客户端,其中启动服务器和安装服务器可以部署在同一台物理机上。


服务相关作用:

Dhcpd: 分发IP地址。

Tftpd: 分发启动文件安装。

Httpd:分发系统文件安装。


   3.1 启动dhcpd及自启动

       service dhcpd start

       chkconfig --add dhcpd

       chkconfig dhcpd on

 

  

   4,apache的安装与配置

          #yum install httpd

          启动并设置开机启动:

          #service httpd start

          #chkconfig httpd on

      保证通过浏览器访问:http://192.168.0.105/centos可以看到安装文件,http默认读取/var/www/hrml/目录下文件

(注意:iptables selinux


   

    5,tftp的安装与配置以及syslinux的安装

       #yum install tftp*

       #vim /etc/xinetd.d/tftp        ---tftp依赖于xinetd内核程序,所以配置文件在其目录下

       service tftp
        {
        socket_type = dgram
        protocol = udp
        wait = yes                   --改为no的话就是多线程安装,多台同时操作
        user = root
        server = /usr/sbin/in.tftpd
        server_args = -s /var/lib/tftpboot #tftp服务目录
        disable = no
        per_source = 11
        cps = 100 2
        flags = IPv4
        }

    启动tftp服务并设置开机启动:

    #service xinetd start            --直接启动xinetd进程

    #chkconfig xinetd on


      6,安装syslinux

        #yum install syslinux

       主要用其提供的pxelinux.0文件


       copy内核文件到/var/lib/tftpboot目录下:

       # cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/     


       #cp /var/www/html/centos/isolinux/initrd.img /var/lib/tftpboot


       #cp /var/www/html/centos/isolinux/vmlinuz /var/lib/tftpboot

 

       #cp /var/www/html/centos/isolinux/vesamenu.c32 /var/lib/tftpboot

    

     创建目录:

     #mkdir /var/lib/tftpboot/pxelinux.cfg

     #cp /var/www/html/centos/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

   

     修改default文件:

       #vim /var/lib/tftpboot/pxelinux.cfg/default

    

     default vesamenu.c32
     #prompt 1
     timeout 30 #这个时间改为30,30秒后自动帮您选择install

     display boot.msg

     menu background splash.jpg
     menu title Welcome to Red Hat Enterprise Linux 6.0!
     menu color border 0 #ffffffff #00000000
     menu color sel 7 #ffffffff #ff000000
     menu color title 0 #ffffffff #00000000
     menu color tabmsg 0 #ffffffff #00000000
     menu color unsel 0 #ffffffff #00000000
     menu color hotsel 0 #ff000000 #ffffffff
     menu color hotkey 7 #ffffffff #ff000000
     menu color scrollbar 0 #ffffffff #00000000

    

     label linux
     menu label ^Install or upgrade an existing system
     menu default
     kernel vmlinuz
     append initrd=initrd.img ks=http://192.168.0.105/centos/ks.cfg #指明ks.cfg文件的位置

        append initrd=initrd.img ks=ftp://192.168.0.105/ks.cfg   #指明ftp方式ks.cfg文件的位置

       

     7kickstart 的安装与配置

            #yum install system-config-kickstart

            启动kickstark并生成ks.cfg文件到/root目录下:

          

            #system-config-kickstart &                   --根据需要设置,一般是最简为主

            #mv /root/ks.cfg /var/www/html/centos


这一步可能遇到的问题:

a.yum 安装kickstart任然缺少依赖包

解决方法:

yum源换成Centos6.2的源,众所周知rhel和centos是兼容的;把pxeserver.repo文件内容换为:

#vim /etc/yum.repos.d/pxeserver.repo

[base]
name=CentOS-6.2 - Base
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

#released updates
[updates]
name=CentOS-6.2 - Updates
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

#packages used/produced in the build but not released
[addons]
name=CentOS-6.2 - Addons
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

#additional packages that may be useful
[extras]
name=CentOS-6.2 - Extras
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

#additional packages that extend functionality of existingpackages

[centosplus]
name=CentOS-6.2 ¨C Plus
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

#contrib - packages by Centos Users
[contrib]
name=CentOS-6.2 - Contrib
baseurl=http://mirrors.163.com/centos/6.2/os/$basearch/
http://mirrors.163.com/centos/6.2/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.163.com/centos/6.2/os/i386/RPM-GPG-KEY-CentOS-6

这样就解决了

b.kickstart启动不了

因为kickstart启动要弹出一个图形化界面,如果你没有安装xwindwow或者不支持桌面,那么kickstart就启动不了。

解决方法:安装桌面环境

#yum groupinstall “X Window System”

#yum groupinstall “Desktop”

再次#system-config-kickstart & 启动就ok了


   8,测试

    将客户机设置为网络启动,看看效果


   9,还有其他的组合方式如nfsftpcd-rom还是Hard Drive,


参考博文http://linuxme.blog.51cto.com/1850814/878294