如何为一批服务器安装操作系统?

因为测试需要,经常要安装新的操作系统?

服务器本机没有光驱?

如何实现无人值守,开机即可自动装机?

下面我们就探讨一下如何实现以上这些需求


PxeServer采用Red Hat Enterprise 5.9 来做实验:

实验拓扑:

       

-----PXE Server(vmnet1)-------------Client(vmnet1)------


实验:搭建PXE Server

服务器IP为192.168.8.253,可以给192.168.8.0/24安装RHEL5.9

分别给每台客户端分配主机名,格式如下

stationx.pengpeng.com192.168.8.x

安装所需要的软件包存放在/data/iso/rhel5.9

一、搭建Pxe Server

1、首先配置服务端IP地址

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

重启network 

[root@localhost ~]#  service network restart

查看IP地址

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

          inet addr:192.168.8.253  Bcast:192.168.8.255  Mask:255.255.255.0


2、接下来配置DHCP(给需要安装系统的主机分配IP)

先来看一下系统有没有安装dhcp,

[root@localhost ~]# rpm -q dhcp

package dhcp is not installed

发现没有安装,为避免软件包依赖关系,直接来配YUM安装吧

[root@localhost ~]# cd /etc/yum.repos.d/          (进入YUM的配置文件目录)

[root@localhost yum.repos.d]# ls

rhel-debuginfo.repo

[root@localhost yum.repos.d]# cp rhel-debuginfo.repo rhel5.9.repo  (拷贝下来作为模板)

[root@localhost yum.repos.d]# ls

rhel5.9.repo  rhel-debuginfo.repo

[root@localhost yum.repos.d]# vim rhel5.9.repo   (修改一下YUM配置) 

[rhel-server]

name=Red Hat Enterprise Linux Server

baseurl=file:///misc/cd/Server            (仓库就选系统盘了)

enabled=1                                 (启用此YUM)

gpgcheck=1

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

查看一下YUM配置是否正确

[root@localhost yum.repos.d]# yum clean all   (先清理一下缓存)

[root@localhost yum.repos.d]# yum list | wc -l  (查看一下软件包数量)

3347

配置好YUM 下面就好安装dhcp了:

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

安装完毕,修改一下配置文件

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

保留有效配置的最终语句

ddns-update-style interim;

next-server 192.168.8.253;                       (TFTP服务器的IP地址)

filename "pxelinux.0";                           (网卡引导文件名)

subnet 192.168.8.0 netmask 255.255.255.0 {

        option subnet-mask              255.255.255.0;

        option domain-name              "pengpeng.com";

        option domain-name-servers      192.168.8.253;

        range dynamic-bootp 192.168.8.10 192.168.8.20;

        default-lease-time 21600;

        max-lease-time 43200;

}

重启一下dhcp服务

[root@localhost ~]# service dhcpd restart

启动 dhcpd:                                               [确定]

设置dhcp服务开机启动

[root@localhost ~]# chkconfig dhcpd on

查看dhcp67端口是否被监听

[root@localhost ~]# netstat -tulnp | grep 67

udp        0      0 0.0.0.0:67                  0.0.0.0:*             25545/dhcpd  


3.配置TFTP

先查看是否安装tftp-server

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

tftp-server-0.49-2

由于TFTP服务由xinetd服务管理,监听UDP69端口

所以修改它的配置如下

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

...

 server_args             = -s /tftpboot  (服务根目录)

        disable                 = no     (改为no以启用)

...

重启一下xinetd服务

[root@localhost ~]# service xinetd restart

停止 xinetd:                                              [确定]

启动 xinetd:                                              [确定]

确保该服务开机启动

[root@localhost ~]# chkconfig xinetd on

查看端口是否被监听

[root@localhost ~]# netstat -tulnp | grep :69

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


4、部署linux内核、镜像

从RHEL关盘中拷贝,复制到TFTP根目录

[root@localhost ~]# cd /misc/cd/p_w_picpaths/pxeboot/      

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

[root@localhost pxeboot]# cp /usr/share/syslinux/pxelinux.0 /tftpboot/ (拷贝网卡引导文件到tftp目录下)

[root@localhost pxeboot]# mkdir /tftpboot/pxelinux.cfg    创建pxelinux.cfg文件夹

[root@localhost pxeboot]# cp /misc/cd/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default (拷贝并改名为default)

5、配置NFS共享

[root@localhost ~]# mkdir -p /data/iso/rhel5.9       (递归创建一个目录)

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

[root@localhost ~]# vim /etc/exports (配置NFS)

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

重启portmap、nfs服务

[root@localhost ~]# service portmap restart

停止 portmap:                                             [确定]

启动 portmap:                                             [确定]

[root@localhost ~]# service nfs restart

关闭 NFS mountd:                                          [失败]

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

关闭 NFS quotas:                                          [失败]

启动 NFS 服务:                                            [确定]

关掉 NFS 配额:                                            [确定]

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

启动 NFS mountd:                                          [确定]

Stopping RPC idmapd:                                       [确定]

正在启动 RPC idmapd:                                      [确定]

确保两个服务开机启动

[root@localhost ~]# chkconfig portmap on

[root@localhost ~]# chkconfig nfs on


5、配置DNS (可选)

先检查相关软件bind、bind-chroot、caching-nameserver是否安装

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

package bind is not installed

package bind-chroot is not installed

package caching-nameserver is not installed

都没安装,利用YUM 进行安装

[root@localhost ~]# yum -y install bind bind-chroot caching-nameserver

安装完毕,进入虚拟根环境目录:

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

拷贝模板,用来配置控制文件

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

修改named.conf

         listen-on port 53 { 192.168.8.253; };

...

         allow-query     { any; };

         allow-query-cache { any; };

...

         match-clients      { any; };

         match-destinations { any; };

定义正反向解析文件:

[root@localhost etc]# vim named.rfc1912.zones 

zone "pengpeng.com" IN {

        type master;

        file "pengpeng.com.zone";

};

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

        type master;

        file "pengpeng.com.arpa";

};

检查主控制文件有无语法错误:

[root@localhost etc]# named-checkconf named.conf

[root@localhost etc]# 

无反馈,则正常

进入虚拟配置目录,拷贝模板配置文件,改名为之前定义的正反向解析文件名:

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

[root@localhost named]# cp -p named.local pengpeng.com.zone

[root@localhost named]# cp -p named.local pengpeng.com.arpa

修改两个文件:

[root@localhost named]# vim pengpeng.com.zone 

$TTL    86400

@       IN      SOA     pengpeng.com. root.pengpeng.com.  (

                                      2014090101 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

           IN      NS      dns1.pengpeng.com.

dns1       IN      A       192.168.8.253

$GENERATE  10-20 station$ IN A 192.168.8.$  

(分别给每台客户端分配主机名,格式如下 stationx.pengpeng.com192.168.8.x 在此实现)

[root@localhost named]# vim pengpeng.com.arpa 

$TTL    86400

@       IN      SOA     pengpeng.com. root.pengpeng.com.  (

                                      2014090101 ; Serial

                                      28800      ; Refresh

                                      14400      ; Retry

                                      3600000    ; Expire

                                      86400 )    ; Minimum

          IN      NS      dns1.pengpeng.com.

253       IN      PTR     dns1.pengpeng.com.

$GENERATE 10-20 $ IN PTR station$.pengpeng.com

分别检查配置是否正确

[root@localhost named]# named-checkzone pengpeng.com pengpeng.com.zone

zone pengpeng.com/IN: loaded serial 2014090101

OK

[root@localhost named]# named-checkzone pengpeng.com pengpeng.com.arpa

zone pengpeng.com/IN: loaded serial 2014090101

OK

已通过

重启服务,确保服务开机启动,并验证DNS解析情况

[root@localhost named]# service named restart

停止 named:                                               [确定]

启动 named:                                               [确定]

[root@localhost named]# chkconfig named on

[root@localhost named]# host station10.pengpeng.com 192.168.8.253

Using domain server:

Name: 192.168.8.253

Address: 192.168.8.253#53

Aliases: 


station10.pengpeng.com has address 192.168.8.10

[root@localhost named]# host 192.168.8.10 192.168.8.253

Using domain server:

Name: 192.168.8.253

Address: 192.168.8.253#53

Aliases: 


10.8.168.192.in-addr.arpa domain name pointer station10.pengpeng.com.8.168.192.in-addr.arpa.

[root@localhost named]# 



以上配置完成,就可以在同一网络内,开启一台客户机;选择从网卡启动:

客户机首先会获取到由PXE服务器DHCP服务分配的IP地址;

其次获取到由PXE服务器TFTP提供的启动文件;

最后再获取到PXE服务器nfs提供的操作系统镜像。


接着就是根正常装机一样的步骤,一步一步往下装。




但是这样装机,只不过是系统启动文件和镜像来源和我们通常的不同,也是需要一步一步往下安装。

怎样才能不需要这种交互式的操作,客户机只要开机,就可以全自动的安装,一直到我们需要输入用户名、密码

进入系统呢?


二、Kickstart无人值守安装


首先需要安装一个软件    system-config-kickstart

检查系统有没有安装此软件           

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

package system-config-kickstart is not installed

利用YUM进行安装:   

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

安装完毕

要实现客户机无人值守安装,服务端就需要提供给客户机相关的配置文件,

配置文件放在服务端哪里? 为了更好的利用linux的网络服务,我们将安装由apache提供的web服务站点上

安装httpd

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

创建无人值守配置文件ks.cfg

启动system-config-kickstart

[root@localhost ~]# system-config-kickstart 回车即启动

配置页面如下列图片:

选择在文本模式中执行安装,速度将会非常快:

Linux 搭建PXE Server及Kickstart无人值守安装_服务端

Linux 搭建PXE Server及Kickstart无人值守安装_linux_02

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_03

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_04

Linux 搭建PXE Server及Kickstart无人值守安装_linux_05

Linux 搭建PXE Server及Kickstart无人值守安装_linux_06

Linux 搭建PXE Server及Kickstart无人值守安装_linux_07

Linux 搭建PXE Server及Kickstart无人值守安装_linux_08

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_09

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_10

Linux 搭建PXE Server及Kickstart无人值守安装_linux_11

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_12

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_13

Linux 搭建PXE Server及Kickstart无人值守安装_linux_14

Linux 搭建PXE Server及Kickstart无人值守安装_linux_15

Linux 搭建PXE Server及Kickstart无人值守安装_linux_16

拷贝此文件到web默认存放位置

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

启动web服务

[root@localhost ~]# service httpd restart

停止 httpd:                                               [失败]

启动 httpd:                                               [确定]

确保web服务开机启动

[root@localhost ~]# chkconfig httpd on

为了防止自动安装时需输入序列号,而暂停安装,需要在配置文件中加一条语句:

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

key --skip            (自动跳过输入序列号)

最后还要在引导文件配置中加一条,引导文件改为ks.cfg

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

...


label linux

  kernel vmlinuz

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

...


下面开始验证无人值守安装:

将客户机bios调整为从网卡启动,下边就不用管了,喝喝茶,玩玩游戏,等着输入用户名密码就可以了。。。

可以在客户机这边看一下,安装速度非常快

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_17

Linux 搭建PXE Server及Kickstart无人值守安装_linux_18

Linux 搭建PXE Server及Kickstart无人值守安装_服务端_19

最后系统安装好了:输入用户名root及之前定义好的密码,进入系统:

打开伪字符终端,查看机器名和IP地址的对应关系,即满足之前的实验要求

如图Linux 搭建PXE Server及Kickstart无人值守安装_服务端_20


本人初学linux,菜鸟一个,日后还会发表一些自己做的实验及学习心得, 望各位前辈多多指教,

谢谢!