首页 > 代码库 > 搭建PXE服务器,实现无人值守自动安装系统

搭建PXE服务器,实现无人值守自动安装系统

实验:搭建PXE服务器,实现无人值守自动安装系统

在PXE服务器和新安装的服务器上分别安装http实现均衡负载

建立主从DNS服务器


第一步,先配置DHCP,目的是给需要安装系统的主机分配ip地址


服务器IP地址设为192.168.100.11

[root@localhost ~]# ifconfig eth0 | grep "inet addr"

          inet addr:192.168.100.11  Bcast:192.168.100.255  Mask:255.255.255.0

[root@localhost ~]# 


安装dhcp

[root@localhost ~]# yum -y install dhcp

[root@localhost ~]# rpm -q dhcp

dhcp-3.0.5-31.el5_8.1

[root@localhost ~]# 


dhcp配置文件修改成如下

[root@localhost ~]# cat /etc/dhcpd.conf 

ddns-update-style interim;

next-server 192.168.100.11;

filename "pxelinux.0";

subnet 192.168.100.0 netmask 255.255.255.0 {

        option subnet-mask              255.255.255.0;

        option domain-name              "candy.com";

        option domain-name-servers      192.168.100.11;

        range dynamic-bootp 192.168.100.128 192.168.100.254;

}

[root@localhost ~]# 


启动dhcp

[root@localhost ~]# service dhcpd restart

关闭 dhcpd:                                               [确定]

启动 dhcpd:                                               [确定]

[root@localhost ~]# chkconfig dhcpd on

[root@localhost ~]# 


第二步,配置TFTP服务


tftp默认已安装

[root@localhost ~]# rpm -q tftp

tftp-0.49-2

[root@localhost ~]# rpm -q tftp-server

tftp-server-0.49-2

[root@localhost ~]# 


启动xinetd服务

[root@localhost ~]# vi /etc/xinetd.d/tftp 

        disable                 = no

[root@localhost ~]# /etc/init.d/xinetd restart

停止 xinetd:                                              [确定]

启动 xinetd:                                              [确定]

[root@localhost ~]# chkconfig xinetd on

[root@localhost ~]# 


把内核文件,初始化文件拷贝到tftp目录下

[root@localhost pxeboot]# cp initrd.img vmlinuz /tftpboot/

[root@localhost pxeboot]# pwd

/media/images/pxeboot

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

[root@localhost pxeboot]# 

[root@localhost pxeboot]# cd /tftpboot/

[root@localhost tftpboot]# ls

initrd.img  linux-install  pxelinux.0  vmlinuz

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

[root@localhost tftpboot]# 

[root@localhost tftpboot]# cp /media/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default

[root@localhost tftpboot]# 


第三步,配置NFS共享,使系统安装时能找到安装源

[root@localhost /]# mkdir -p /data/iso/rhel5.9

[root@localhost /]# cp -rf /misc/cd/* /data/iso/rhel5.9/

[root@localhost /]# cat /etc/exports 

/data/iso/rhel5.9       *(ro)

[root@localhost /]# service portmap restart

停止 portmap:                                             [确定]

启动 portmap:                                             [确定]

[root@localhost /]# chkconfig portmap on

[root@localhost /]# service nfs restart

关闭 NFS mountd:                                          [失败]

关闭 NFS 守护进程:                                        [失败]

关闭 NFS quotas:                                          [失败]

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

启动 NFS 守护进程:                                        [确定]

启动 NFS mountd:                                          [确定]

Stopping RPC idmapd:                                       [确定]

正在启动 RPC idmapd:                                      [确定]

[root@localhost /]# chkconfig nfs on

[root@localhost /]# 


第四步,配置DNS(可选)

[root@localhost /]# rpm -q bind bind-chroot caching-nameserver

bind-9.3.6-20.P1.el5_8.5

bind-chroot-9.3.6-20.P1.el5_8.5

package caching-nameserver is not installed

[root@localhost /]# 

[root@localhost /]# 

[root@localhost /]# yum -y install caching-nameserver

[root@localhost /]# rpm -q bind bind-chroot caching-nameserver

bind-9.3.6-20.P1.el5_8.5

bind-chroot-9.3.6-20.P1.el5_8.5

caching-nameserver-9.3.6-20.P1.el5_8.5

[root@localhost /]# 

[root@localhost /]# cd /var/named/chroot/etc/

[root@localhost etc]# cp -p named.caching-nameserver.conf named.conf

[root@localhost etc]# 

[root@localhost etc]# diff named.caching-nameserver.conf named.conf 

15c15

<       listen-on port 53 { 127.0.0.1; };

---

>       listen-on port 53 { 192.168.100.11; };

27,28c27,28

<       allow-query     { localhost; };

<       allow-query-cache { localhost; };

---

>       allow-query     { any; };

>       allow-query-cache { any; };

37,38c37,38

<       match-clients      { localhost; };

<       match-destinations { localhost; };

---

>       match-clients      { any; };

>       match-destinations { any; };

[root@localhost etc]# 

[root@localhost named]# cat candy.com.zone 

$TTL    86400

@               IN SOA  candy.com.      root.candy.com. (

                                        2014092201              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

        IN      NS      dns1.candy.com.

dns1    IN      A       192.168.100.11

$GENERATE 20-30 station$        IN      A       192.168.100.$

[root@localhost named]# 

[root@localhost named]# cat candy.com.arpa 

$TTL    86400

@               IN SOA  candy.com.      root.candy.com. (

                                        2014092201              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

        IN      NS      dns1.candy.com.

11      IN      PTR     dns1.candy.com.

$GENERATE 20-30 $       IN      PTR     station$.candy.com.

[root@localhost named]# 

[root@localhost named]# /etc/init.d/named restart

停止 named:                                               [确定]

启动 named:                                               [确定]

[root@localhost named]# chkconfig named on

[root@localhost named]# 

[root@localhost named]# host station21.candy.com 192.168.100.11

Using domain server:

Name: 192.168.100.11

Address: 192.168.100.11#53

Aliases: 


station21.candy.com has address 192.168.100.21

[root@localhost named]# 

[root@localhost named]# 

[root@localhost named]# host 192.168.100.30 192.168.100.11

Using domain server:

Name: 192.168.100.11

Address: 192.168.100.11#53

Aliases: 


30.100.168.192.in-addr.arpa domain name pointer station30.candy.com.

[root@localhost named]# 



第五步,配置kickstart,实现无人值守安装


配置yum库的时候配置文件中的标题要以rhel开头,否则无法读取软件包


[root@localhost /]# yum -y install system-config-kickstart

[root@localhost ~]# system-config-kickstart


配置完成生产ks.cfg文件

利用http访问文件

[root@localhost ~]# ls /var/www/html/ks.cfg 

/var/www/html/ks.cfg

[root@localhost ~]# 


添加一下语句,是自动安装过程中跳过输入cdkey的步骤

[root@localhost ~]# vi /var/www/html/ks.cfg 

key --skip

[root@localhost ~]# /etc/init.d/httpd restart

停止 httpd:                                               [确定]

启动 httpd:                                               [确定]

[root@localhost ~]# 


修改以下文件,在安装过程中能过读取到ks.cfg文件

[root@localhost ~]# vi /tftpboot/pxelinux.cfg/default 

append ks=http://192.168.100.11/ks.cfg initrd=initrd.img

[root@localhost ~]# 


第六步,在新安装的机器上安装http,并进行配置


在pxe服务器上新建html文件,然后拷贝到新安装的服务器上

[root@localhost ~]# cat /var/www/html/index.html 

<html><title> 2014-09-23 </title>

<head><h1> 201409231400 </h1></head>

<body></body>

</html>

[root@localhost ~]# 

[root@localhost ~]# scp /var/www/html/index.html 192.168.100.21:/var/www/html/index.html

[root@localhost ~]# 


两台服务器都设置相同的名字

[root@localhost ~]# grep ServerName /etc/httpd/conf/httpd.conf 

ServerName www.candy.com:80

[root@localhost ~]# 



[root@station30 /]# grep ServerName /etc/httpd/conf/httpd.conf 

ServerName www.candy.com:80

[root@station30 /]# 


第七步,设置从DNS服务器

修改主DNS的主配置文件,添加授权信息,只允许从DNS服务器更新

[root@localhost ~]# vi /var/named/chroot/etc/named.conf 

        allow-transfer { 192.168.100.21; };

[root@localhost ~]# 


修改zone文件,添加从dns服务器的域名解析,和http服务器的域名解析

[root@localhost ~]# cat /var/named/chroot/var/named/candy.com.zone 

$TTL    86400

@               IN SOA  candy.com.      root.candy.com. (

                                        2014092302              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

        IN      NS      dns1.candy.com.

        IN      NS      dns2.candy.com.

dns1    IN      A       192.168.100.11

dns2    IN      A       192.168.100.21

www     IN      A       192.168.100.11

        IN      A       192.168.100.21

[root@localhost ~]# 

[root@localhost ~]# cat /var/named/chroot/var/named/candy.com.arpa 

$TTL    86400

@               IN SOA  candy.com.      root.candy.com. (

                                        2014092301              ; serial (d. adams)

                                        3H              ; refresh

                                        15M             ; retry

                                        1W              ; expiry

                                        1D )            ; minimum

        IN      NS      dns1.candy.com.

        IN      NS      dns2.candy.com.

11      IN      PTR     dns1.candy.com.

12      IN      PTR     dns2.candy.com.

[root@localhost ~]# 



配置从dns服务器,添加如下配置


[root@station30 /]# tail -10 /var/named/chroot/etc/named.rfc1912.zones 

zone "candy.com" IN {

        type slave;

        file "slaves/candy.com.zero";

        masters { 192.168.100.11; };

};

zone "100.168.192.in-addr.arpa" IN {

        type slave;

        file "slaves/candy.com.arpa";

        masters { 192.168.100.11; };

};

[root@station30 /]# 


重启服务后,自动生成zone文件

[root@station30 /]# /etc/init.d/named restart

停止 named:                                               [确定]

启动 named:                                               [确定]

[root@station30 /]# ls /var/named/chroot/var/named/slaves/

candy.com.arpa  candy.com.zero

[root@station30 /]# 


搭建PXE服务器,实现无人值守自动安装系统