搭建PXE服务器

    1、功能:使客户端主机自动安装操作系统。批量安装操作系统或经常需要安装操作系统或主机没有光驱时,搭建PXE。

    2、案例需求:为192.168.1.0/24网络内的主机搭建pxe服务器,通过pxe服务器能够安装rhel5.9的操作系统,pxe服务器能够为客户端主机分配tarena.com区域的主机名、ip地址、子网掩码、网关、dns

    3、PXE(Pre-boot Execution Exvironment)

       是由Intel设计的协议

       它可以使计算机通过网络启动

       协议分为client和server

       工作原理:client --------> dhcp-server

                     < --------(next-server,filename)

                    ----------->tftp(/tftpboot)

                    <---------- (pxelinux.0 vmlinuz initrd.img default(ks=nfs:))

                   ------------->nfs(/etc/exports)

                   <------------ /ks/ks.cfg(nfs --server),/mnt

                  --------------->安装

       系统构成:DNS服务——分配主机名(可选)

                 DHCP服务——分配IP地址(必须有)

                 NFS服务——共享rpm软件包、安装时的自应答文件(kickstart)

                 TFTP服务——共享网卡引导文件和系统引导文件

                 YUM服务——自动安装软件包、通过图形的方式生成自安装时的自应答文件

4、配置

  1)给服务器配置固定的IP地址

  2)配置YUM源:yum源的名字必须以rhel开头(否则不能获取rpm包的名字而不能生成自应答文件)

[root@ser1 ~]# cat /etc/yum.repos.d/server.repo

[rhel-server]

name=Red Hat Enterprise Linux Server

baseurl=file:///mnt/Server

enabled=1

gpgcheck=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release

   3)配置DNS

安装软件包 bind bind-chrootcaching-nameserver

编辑主配置文件/var/named/chroot/etc/named.conf

              4)配置DHCP

              安装软件包dhcp

             编辑主配置文件/etc/dhcpd.conf ,分配IP地址的范围要与DNS反解中的范围相同

              5)配置TFTP:传输小文件,不需要密码,非独立服务,协议TCPUDP,监听端口69

               安装软件包tftp-server

            编辑配置文件/etc/xinet.d/tftp

[root@ser1 ~]# cat /etc/xinetd.d/tftp

service tftp

{

        socket_type             = dgram

        protocol                = udp

        wait                    = yes

        user                    = root

        server                  = /usr/sbin/in.tftpd

        server_args             = -s /tftpboot      //tftp共享文件的目录

        disable                 = no     //xinetd启动时tftp也随之启动

        per_source              = 11

        cps                     = 100 2

        flags                   = IPv4

        启动服务

[root@ser1 ~]# netstat -anptu | grep :69

[root@ser1 ~]# service xinetd restart  //重启xinetd

[root@ser1 ~]# netstat -anptu | grep :69

udp        0      0 0.0.0.0:69                  0.0.0.0:*                               5436/xinetd         

共享网卡引导文件,Syslinux 软件包提供网卡引导文件pxelinux.0tftp共享目录为/tftpboot

[root@ser1 ~]# rpm -ql syslinux | grep "pxelinux.0"

/usr/share/syslinux/gpxelinux.0

/usr/share/syslinux/pxelinux.0

[root@ser1 tftpboot]# cp /usr/share/syslinux/pxelinux.0  ./

[root@ser1 tftpboot]# ls

linux-install  pxelinux.0

[root@ser1 tftpboot]# ll

total 36

drwxr-xr-x 4 root root  4096Nov 30 23:39 linux-install

-rw-r--r-- 1 root root 26828 Jan 20 11:30 pxelinux.0

共享系统引导文件,光盘中isolinuxp_w_picpaths目录存放引导文件

[root@ser1 isolinux]# pwd

/misc/cd/isolinux

[root@ser1 isolinux]# cp vmlinuz /tftpboot/            //内核

[root@ser1 isolinux]# cp initrd.img /tftpboot/           //内核镜像文件

共享default文件(设置默认安装的操作系统,存放在/tftpboot/pxelinux.cfg,模板文件为光盘isolinux/isolinux.cfg

[root@ser1 tftpboot]# mkdir /tftpboot/pxelinux.cfg

[root@ser1 pxelinux.cfg]# pwd

/tftpboot/pxelinux.cfg

[root@ser1 pxelinux.cfg]# cp /misc/cd/isolinux/isolinux.cfg  ./default

[root@ser1 pxelinux.cfg]# vim default

default rhel5       //默认引导的操作系统,名称与下面的lable同名

prompt 1          //是否使用交互式安装 ,1

timeout 600        //安装默认操作系统的等待时间 ,毫秒

display boot.msg    //引导时的背景图片,没有时为黑色

F1 boot.msg

F2 options.msg

F3 general.msg

F4 param.msg

F5 rescue.msg

label rhel5     //定义标签名

  kernel vmlinuz        // 内核

  appendinitrd=initrd.img ks=nfs:192.168.1.1:/ks/ks.cfg  //镜像文件,ks指定自应答文件

[root@ser1~]#chmod +r /ks/ks.cfg

6)搭建NFS,共享自应答文件(安装操作系统时的配置信息)和软件包

   编辑配置文件/etc/exports

[root@ser1~]# cat /etc/exports

/ks  *(ro)

/misc/cd   *(ro)

        重启服务

[root@ser1 ~]# service portmap restart

[root@ser1 ~]# service nfs restart

        测试

[root@ser1 ~]# showmount -e localhost

Export list for localhost:

/ks *

/misc/cd *

生成自应答文件(ks.cfg

方法一:用kickstart工具生成

配置YUM源(命名时以rhel开头)

安装提供kickstart工具的软件包system-config-kickstart

图形界面下执行命令system-config-kickstart,保存,生成文件

编辑生成的ks.cfg

[root@ser1 ~]# cat /ks/ks.cfg

auth  --useshadow  --enable

key –skip   //跳过注册码

bootloader --location=mbr --md5pass=$1$bVYp18Ek$n9A9LqeFbs.W1Pfn09DrF1

zerombr

clearpart --all --initlabel

graphical

firewall --disabled

firstboot --disable

keyboard us

lang zh_CN

logging --level=info

nfs --server=192.168.1.1 --dir=/mnt //指定rpm包位置

network --bootproto=dhcp --device=eth0 --onboot=on

reboot

rootpw  123456

selinux --disabled

timezone  Asia/Shanghai

install

xconfig --defaultdesktop=GNOME --depth=8 --resolution=800x600 --startxonboot

part /boot --bytes-per-inode=4096 --fstype="ext3"--size=100

part swap --bytes-per-inode=4096 --fstype="swap"--size=512

part / --bytes-per-inode=4096 --fstype="ext3" --grow--size=1

 

%packages

@gnome-desktop

@system-tools

@development-tools

@x-software-development

@gnome-software-development

@admin-tools

@base-x

@development-libs

@graphical-internet

@legacy-software-development

@legacy-software-support

@chinese-support

@text-internet

@server-cfg

@editors

 

方法二:用anaconda-ks.cfg文件

[root@ser1 ~]# cp anaconda-ks.cfg /ks/ks.cfg

[root@ser1 ~]# vim /ks/ks.cfg

到此,kickstart无人值守就配置完成了