1.PXE 简单介绍

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

2.pxe的启动过程

1)pxe采用c-s模式(客户端服务器模式),在客户端个人电脑开机后,在TCP/IP Bootrom 获得控制权之前先做自我测试;Bootprom 送出 BOOTP/DHCP 要求以取得 IP,网关,DNS服务器地址等参数。

2)由tftp通讯协议从ftp服务器下载开机镜像文件。

3)使用kickstart提供操作系统安装过程中的参数配置。

3.前期准备工作

首先需要一台服务器dhcp服务器用来为客户机分配ip,dns,gateway等参数。其次还需要搭建一台ftp服务器用来提供操作系统的镜像。另外还需要搭建tftp服务器用提供驱动。最后生成一个kickstart文件为系统自动提供参数。硬件配置一台主机用来搭建服务器,一主机做客户端。

4.实现过程及步骤

在redhat enterprise linux 5环境下配置服务器。

1)配置服务器IP地址:

eth0      Link encap:Ethernet  HWaddr 00:0C:29:70:3F:F7 
             inet addr:192.168.1.10  Bcast:192.168.1.255  Mask:255.255.255.0

 

2) 挂载光盘(此光盘上是客户端操作系统镜像)

  mount /dev/cdrom /mnt/cdrom/

 

3)配置yum服务器(当然也可以使用其它安装工具)

[root@localhost cdrom]# vim /etc/yum.repos.d/rhel-debuginfo.repo

文件的编辑内容如下

[rhel-vt]
name=Red Hat Enterprise Linux vt
baseurl=file:///mnt/cdrom/VT
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

[rhel-cluster]
name=Red Hat Enterprise Linux cluster
baseurl=file:///mnt/cdrom/Cluster
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

[rhel-clusterstorage]
name=Red Hat Enterprise Linux clusterstorage
baseurl=file:///mnt/cdrom/ClusterStorage
enabled=1
gpgcheck=1
gpgkey=file:///mnt/cdrom/RPM-GPG-KEY-redhat-release

 

4)配置dhcp服务器

--安装
[root@localhost cdrom]# yum install -y dhcp
Loaded plugins: rhnplugin, security
This system is not registered with RHN.
RHN support will be disabled.
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package dhcp.i386 12:3.0.5-21.el5 set to be updated

--配置

subnet 192.168.1.0 netmask 255.255.255.0 {                // 设置网关,dns

# --- default gateway
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      192.168.1.10;
        next-server                     192.168.1.10;          //ftp服务器
        filename                        "pxelinux.0";

        option time-offset              -18000; # Eastern Standard Time
#       option ntp-servers              192.168.1.1;
#       option netbios-name-servers     192.168.1.1;

# -- you understand Netbios very well
#       option netbios-node-type 2;

        range dynamic-bootp 192.168.1.12 192.168.1.120;   // 设置地址池
        default-lease-time 21600;
        max-lease-time 43200;

--启动

[root@localhost cdrom]# service dhcpd start

 

5)搭建tftp

--查看tftp软件包
[root@localhost cdrom]# yum list all | grep tftp
This system is not registered with RHN.
RHN support will be disabled.
tftp-server.i386                       0.49-2                installed         
tftp.i386                              0.49-2                rhel-server

--配置tftp

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


        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4

[root@localhost ~]# cd /tftpboot

[root@localhost ~]#cd  /mnt/cdrom/

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

[root@localhost tftpboot]# cp /usr/lib/syslinux/pxelinux.0  ./
[root@localhost tftpboot]# cp /mnt/cdrom/images/pxeboot/vmlinuz  ./
[root@localhost tftpboot]# cp /mnt/cdrom/images/pxeboot/initrd.img  ./
[root@localhost tftpboot]# mkdir -pv pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default

display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
  kernel vmlinuz
  append ks=ftp://192.168.1.10/pub/ks.cfg ksdevice=eth0 initrd=initrd.img
label text
  kernel vmlinuz
  append initrd=initrd.img text
label ks
  kernel vmlinuz
  append ks initrd=initrd.img
label local
  localboot 1
label memtest86
  kernel memtest
  append -


--启动tftp服务器
[root@localhost cdrom]# service xinetd  restart

 

6)搭建ftp服务器

--安装

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

--复制光盘文件到

[root@localhost ~]# cd /mnt/cdrom

[root@localhost cdrom]# cp –r  . /var/ftp/pub/

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

7)生成kickstart 文件

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

kickstart 图形下配置

2012-08-02_192520

安装方法选项

2012-08-02_194124

引导程序选项

2012-08-02_194156

分区信息

2012-08-02_194218

网络配置

2012-08-02_194238

验证

2012-08-02_194259

防火墙配置

2012-08-02_194319

软件包选择

2012-08-02_194349
最终形成的ks.cfg 文件

[root@localhost ~]# vim ks.cfg

# Disk partitioning information
part /boot --bytes-per-inode=4096 --fstype="ext3" --size=120
part / --bytes-per-inode=4096 --fstype="ext3" --size=10000
part swap --bytes-per-inode=4096 --fstype="swap" --size=1000
%post  --interpreter=/bin/bash
ADDRESS=`ifconfig | grep -i  bcast | awk ' {print $2}'`
NUM=${ADDRESS##*.}
sed -i "s/HOSTNAME.*$/HOSTNAME=station$NUM.a.com/"   /etc/sysconfig/network

%packages
@gnome-desktop
@development-libs
@development-tools
@x-software-development
@system-tools
@admin-tools
@gnome-software-development
@office
@graphical-internet
@text-internet
@editors
"ks.cfg" 62L, 1610C 

将此文件复制到/var/ftp/pub

[root@localhost ~]# cp /ks.cfg  /var/ftp/pub

[root@localhost ~]# service vsftpd restart //重启ftp

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

display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
  kernel vmlinuz
  append ks=ftp://192.168.1.10/pub/ks.cfg ksdevice=eth0 initrd=initrd.img
label text
  kernel vmlinuz
  append initrd=initrd.img text
label ks
  kernel vmlinuz
  append ks initrd=initrd.img
label local
  localboot 1
label memtest86
  kernel memtest
  append -

5.最终结果

最后只需把客户机与服务器连到同一块网卡并关闭vmware自带的dhcp加电就行了,系统会自动安装。

image