大批量安装linux操作系统时,可以通过pxe+kickstart在局域网中进行自动化安装。本次实验通过vmware10下进行,其中涉及到的技术和协议有: 

1. APACHE+YUM安装源      

2. DHCP服务器Dynamic Host Configuration Protocol / 动态主机配置协议)     

3. TFTP服务器(Trivial File Transfer Protocol / 普通文件传输协议) 

4. PXE(Preboot Execution Environment / 远程引导技术)   

5. KICKSTART自动应答文件    

   其中,实验环境上的一台远程安装服务器,部署了APACHE+DHCP+TFTP,局域网内其他安装服务器都通过此服务器进行自动化安装。接下来是转载的相关理论的说明:

1. 什么是PXE

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE (Pre-boot Execution Environment)协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXE Client则在网卡的 ROM 中。当计算机引导时,BIOS 把 PXE Client 调入内存中执行,然后由 PXE Client 将放置在远端的文件通过网络下载到本地运行。运行 PXE 协议需要设置 DHCP 服务器和 TFTP 服务器。DHCP 服务器会给 PXE Client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE Client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。此外,在 PXE Client 的 ROM 中,已经存在了 TFTP Client,那么它就可以通过 TFTP 协议到 TFTP Server 上下载所需的文件了。

2. 什么是Kickstart

Kickstart是一种无人值守的安装方式。它的工作原理是在安装过程中记录典型的需要人工干预填写的各种参数,并生成一个名为 ks.cfg的文件。如果在安装过程中(不只局限于生成Kickstart安装文件的机器)出现要填写参数的情况,安装程序首先会去查找 Kickstart生成的文件,如果找到合适的参数,就采用所找到的参数;如果没有找到合适的参数,便需要安装者手工干预了。所以,如果Kickstart文件涵盖了安装过程中可能出现的所有需要填写的参数,那么安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后就去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中的设置重启系统,并结束安装。


第一步:基础环境配置

安装服务器的ip地址应该为静态地址:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

注意以下配置的更改:

BOOTPROTO=static

IPADDR=192.168.0.10

NETWORK=255.255.255.0

GATEWAY=192.168.0.1

第二步:配置apache服务器+yum安装源

1)上传RHEL6.4.ISO文件,我放在/ 目录下

2) 挂载iso文件

  mount -o loop /RHEL6.4.ISO   /var/www/html/dvd/

  vi /etc/fstab 添加以下行

  RHEL6.4.ISO   /var/www/html/dvd isso9660 defaults,loop  0   0 

3)配置yum安装源

yum-config-manager --add-repo=http://192.168.0.10/var/www/html/dvd

4)配置apache服务器,开启服务

 service  httpd start

 chkconfig httpd on

 测试:http://localhost/dvd/  看是否有相应的安装文件列表

第三步:配置DHCP服务器 

1)安装dhcp

  yum install dhcp*

2)修改DHCP配置文件/etc/dhcp/dhcpd.conf

cp /use/share/doc/dhcp-/dc*sample   /etc/dhcp/dhcp.conf  将模板文件copy过来,然后修改该文件

 subnet  192.168.0.0  netmask 255.255.255.0 {

 range    192.168.0.26  192.168.0.50;

 default-lease-time 600;

 max-lease-time   7200;

 next-server 192.168.0.10;

 filename "/pxelinux.0";

}

测试:service dhcpd configtest   确保无语法错误

3)启动dhcp服务

  service dhcpd start

  chkconfig dhcpd on


第四步:配置TFTP服务器 

1)安装tftp

  yum install tftp*

2)着修改/etc/xinetd.d/tftp文件,将disable的值由yes变为no

3)启动xinetd服务进程

  service xinetd restart

  chkconfig xinetd on

  chkconfig tftp on

测试netstatt -tunpl|grep xinetd  查看默认的69端口是否开启

4)将安装介质中的isolinux目录拷贝到tftpboot目录中

cp /var/www/html/isolinux/*  /var/lib/tftpboot/

5)复制pxelinux.0文件至tftpboot文件夹中,没有该文件需安装syslinux

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

6)在tftpboot中新建一个pxelinux.cfg目录

  mkdir prelinux.cfg

 cp isolinux.cfg  pxelinux.cfg/default

 然后default文件中添加ks脚本位置,注意ks在apache的根目录下  ks=http://192.168.0.10/ks.cfg

第五步:生成ks文件

1)安装system-config-kickstart

  yum install system-config-kickstart

2)通过该工具生成ks文件,注意ks文件放在/var/wwww/html/下


最后可以在vmware创建新的虚拟机并启动(注意安装服务器要在同一个局域网内,我是在VMnet3中),然后可以查看是否能正常启动。

虚拟机启动后可能出现的问题:

1、tftp获取文件信息失败:检查default文件的语法

2、无法下载ks文件:检查ks文件的权限,位置是否正确


我仅仅是将实验过程走通,但是理论方面比较缺乏,期间参考了下面的文章:

1、http://m.blog.csdn.net/blog/Andy_YF/7749282

2、http://os.51cto.com/art/201212/374317.htm