一、PXE 简介

PXE(Pre-boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服 务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。

严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 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 上下载所需的文件了。

二、PXE的工作过程:

1. PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP(第一次获取ip),前提是BIOS开启pxe功能,本地网卡支持pxe功能;

2. DHCP 服务器返回分配给客户机的IP(第二次) 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;

3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;

4. PXE Client 取得pxelinux.0 文件后之执行该文件;

5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统 ;

6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;

详细工作流程,请参考下面这幅图:

linux部署pxe+kickstart批量安装linux操作系统实施方案_第1张图片

三、Kickstart 简介

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

四、执行kickstart安装步骤

kickstart 安装可以使用本地光盘,本地硬盘驱动器,或通过 NFS,FTP,HTTP 来执行.
要使用 kickstart,必须:
1.创建一个kickstart文件.
2.创建有kickstart文件的引导介质或者使这个文件在网络上可用.
3.筹备安装树.
4.开始kickstart安装.

流程图如下:

linux部署pxe+kickstart批量安装linux操作系统实施方案_第2张图片


五、实验准备

物理机:redhat 6.4图形化

IP:10.0.0.1/16

实验环境:VMware Workstation 10

系统平台:redhat 6.4(最小化)

网络模式:NAT模式

DHCP / TFTP / FTP IP:10.0.0.2/16

所有服务器均支持PXE网络启动

实现目的:通过配置Kickstart服务器,全自动批量安装部署Linux系统

软硬件配置:网卡要支持pxe启动,操作系统也要支持pxe启动,另外有ftp服务器用于存储操作系统的安装文件,dhcp服务器用于分配ip。


六、具体部署步骤

1.关闭防火墙和selinux

[root@rhel6 ~]# yum -y install dhcp* tftp* vsftpd* syslinux

2.安装完毕检查包组

[root@rhel6 /]# rpm -qa | grep dhcp
dhcp-4.1.1-34.P1.el6.x86_64
dhcp-common-4.1.1-34.P1.el6.x86_64
[root@rhel6 /]# rpm -qa | grep vsftp
vsftpd-2.2.2-11.el6.x86_64
[root@rhel6 /]# rpm -qa | grep xinetd
xinetd-2.3.14-38.el6.x86_64

3.安装dhcp服务器

DHCP.conf介绍:

ddns-update-style interim:这个是动态获取IP地址啦。必须放在第一项哇。
ignore client-updates:服务端与客户端传输相关
Subnet:获取IP段,要配置正确。
Routers:是路由地址
Range:dhcp分配IP段。
next-server:是tftp地址。
Allow booting bootp:放行传输和协议。

4.具体步骤

[root@rhel6 /]# cp -rf /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf

[root@rhel6 /]# vim /etc/dhcp/dhcpd.conf 

    subnet 10.0.0.0 netmask 255.255.0.0 {
      range dynamic-bootp 10.0.0.100 10.0.0.200; --->此部分代表该DHCP服务器支持PXE
      next-server 10.0.0.2;
      filename "pxelinux.0";       -->最基本的启动文件 //指向的是tftp-server的根目录
      option domain-name-servers 10.0.0.2;
      option domain-name "baidu.com";
      #这两条是DNS,如果没有DNS就不要写,环境不支持反解,写着个安装起来会很慢
      
      default-lease-time 600;
      max-lease-time 7200;
    }

5.启动服务

[root@rhel6 /]# service dhcpd start
Starting dhcpd:                                            [  OK  ]
[root@rhel6 /]# service dhcpd status
dhcpd (pid  3490) is running...
[root@rhel6 /]# chkconfig dhcpd on

6.检查syslinux包组

[root@rhel6 /]# rpm -ql syslinux| grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@rhel6 /]#

7.安装并配置pxelinux.cfg文件

[root@rhel6 /]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
提供引导菜单所需的文件(从RHEL6光盘上的isolinux目录中找)
[root@rhel6 cdrom]# cp -rf isolinux/* /var/lib/tftpboot/
[root@rhel6 cdrom]# ls /var/lib/tftpboot/
boot.cat  grub.conf   isolinux.bin  memtest     splash.jpg  vesamenu.c32
boot.msg  initrd.img  isolinux.cfg  pxelinux.0  TRANS.TBL   vmlinuz
[root@rhel6 cdrom]# 
[root@rhel6 tftpboot]# pwd
/var/lib/tftpboot
[root@rhel6 tftpboot]# mkdir pxelinux.cfg
[root@rhel6 tftpboot]# cp isolinux.cfg pxelinux.cfg/default
[root@rhel6 tftpboot]# 

[root@rhel6 tftpboot]# ls
boot.cat   initrd.img    memtest       splash.jpg    vmlinuz
boot.msg   isolinux.bin  pxelinux.0    TRANS.TBL
grub.conf  isolinux.cfg  pxelinux.cfg  vesamenu.c32
[root@rhel6 tftpboot]# mkdir rhel6
[root@rhel6 tftpboot]# cp vmlinuz initrd.img rhel6/
[root@rhel6 tftpboot]# ls rhel6/
initrd.img  vmlinuz
[root@rhel6 tftpboot]# 
[root@rhel6 tftpboot]# vim pxelinux.cfg/default
label linux
  menu label ^Install RHEL6 
  menu default
  kernel rhel6/vmlinuz             #kernel 参数指定要启动的内核。
  append initrd=rhel6/initrd.img   #append 指定追加给内核的参数,能够在grub 里使用的追加
  给内核的参数,在这里也都可以使用。
注:如果是要安装多版本镜像源就在tftpboot下每个版本创建一个目录,并在default下指定不同的位置。

8.配置xinetd服务

TFTP配置文件介绍:

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

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

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

9.具体步骤:

[root@rhel6 tftpboot]# vi /etc/xinetd.d/tftp 
service tftp
{
        disable = no
        socket_type             = dgram
        protocol               = udp
        wait                 = yes
        user                 = root
        server                = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        per_source               = 11
        cps                  = 100 2
        flags                 = IPv4
}

10.启动服务:

[root@rhel6 tftpboot]# chkconfig xinetd on
[root@rhel6 tftpboot]# umount /mnt/cdrom/
[root@rhel6 tftpboot]# mount /dev/cdrom /mnt/cdrom
mount: block device /dev/sr0 is write-protected, mounting read-only
[root@rhel6  tftpboot]#  cp -rf /mnt/cdrom/* /var/ftp/pub/
[root@rhel6 tftpboot]# service vsftpd start
Starting vsftpd for vsftpd:                                [  OK  ]
[root@rhel6 tftpboot]# chkconfig vsftpd on
[root@rhel6 tftpboot]#
访问ftp里是否有镜像源,如果有则尝试安装,如果能安到安装软件包界面,则pxe安装成功。

11.网络结构:

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

服务相关作用:

Dhcpd: 分发IP地址。

Tftpd: 分发启动文件安装。

vsftpd:分发系统文件安装。


1.安装kickstart


1.在10.0.0.1服务器上创建kickstart文件

[root@rhel6 ~]# yum -y install system-config-kickstart
以下选项必选:
 基本配置密码 重新引导系统 文本安装
 安装方法 ftp 
 分区 清除主引导记录
 网络配置添加
 禁用防火墙

2.配置最小化安装文件内容

[root@localhost ~]# vim /root/ks.cfg  找到packages部分添加@core,最小化安装
%packages
@core 
%end
reboot

3.将做好的ks.cfg文件放到pxe服务器内

[root@localhost ~]# scp /root/ks.cfg [email protected]:/var/ftp/pub
[email protected]'s password: 
ks.cfg                                        100%  975     1.0KB/s   00:00    
[root@localhost ~]# 
[root@rhel6 /]# vim /var/lib/tftpboot/pxelinux.cfg/default 
label linux
  menu label ^Install RHEL6 
  menu default
  kernel rhel6/vmlinuz ks=  #告诉系统,从哪里获取ks.cfg文件 
  append initrd=rhel6/initrd.img

kickstart到此安装完毕。

注:如果安装失败,则是服务没起或是生成kickstart有问题,需要重新生成,到此本次实验完满完成。

附:cobbler

在pxe和kickstart的基础上还可以增加cobbler功能,用图形化操作管理镜像源,但是图形化的支持不是很完善,但是这款软件的命令行很完善,在这里再次简单介绍一下大概的步骤(不涉及安装,因为很简单)。

七、Cobbler 简介

网络安装服务器套件 Cobbler(补鞋匠)从前,我们一直在做装机民工这份很有前途的职业。自打若干年前 Red Hat 推出了 Kickstart,此后我们顿觉身价倍增。不再需要刻了光盘一台一台地安装 Linux,只要搞定 PXE、DHCP、 TFTP,还有那满屏眼花缭乱不知所云的 Kickstart 脚本,我们就可以像哈里波特一样,轻点魔棒,瞬间安装上百台服务器。这一堆花里胡哨的东西可不是一般人都能整明白的,没有大专以上学历,通不过英语四级, 根本别想玩转。总而言之,这是一份多么有前途,多么有技术含量的工作啊。很不幸,Red Hat 最新(Cobbler项目最初在2008年左右发布)发布了网络安装服务器套件 Cobbler(补鞋匠),它已将 Linux 网络安装的技术门槛,从大专以上文化水平,成功降低到初中以下,连补鞋匠都能学会。对于我们这些在装机领域浸淫多年,经验丰富,老骥伏枥,志在千里的民工兄弟们来说,不啻为一个晴天霹雳。

八、配置步骤

编辑

第一步 下载安装

去fedora.redhat 网站下载

第二步 配置文件

1. 配置tftp-server

2. 配置cobber

3. 配置DHCP模版文件

4. 修改rsync

5. 执行检查

6. 修改密码

7. 生成system-config-kickstart

8. 当 cobbler check 检测基本没问题后

9.修改启动文件路径

10. 导入系统安装DVD ISO中的文件

第三步 客户端启动