一、PXE以及kickstart的概念

PXE(Preboot Execution Environment,远程引导技术)是RPL(Remote Initial Program Load,远程启动服务)的升级产品。它们的不同之处为:RPL是静态路由,PXE是动态路由。不难理解:RPL是根据网卡上的ID号加上其它的记录组成的一个帧向服务器发出请求,而服务器那里早已经有了这个ID数据,匹配成功则进行远程启动;PXE则是根据服务器端收到的工作站MAC地址(就是网卡号),使用DHCP服务给这个MAC地址指定一个IP地址,每次重启动可能同一台工作站有与上次启动有不同的IP,即动态分配地址。

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

Kickstart的工作过程
把客户端与服务端用网线连上,客户端开机之后,网络启动自动从dhcp服务器获取ip,连上服务器端的tftp服务器,读ftpboot文件夹里相应的启动文件启动文件包括.img文件路径和kickstart配置文件路径,客户端载入.img文件后,读取ks.cfg(kickstart)配置文件,包括安装的系统的ios路径系统基本配置,安装的软件包和服务等,之后就是客户端自动安装了。

二、pxe自动安装的实现步骤

1.搭建dhcp服务器,ftp服务器,tftp服务器以及yum的配置

[root@uodekoaix ~]# service network start
[root@uodekoaix ~]# mkdir /mnt/cdrom
You have mail in /var/spool/mail/root
[root@uodekoaix ~]# mount /dev/cdrom /mnt/cdrom/
mount: block device /dev/cdrom is write-protected, mounting read-only              //挂载光盘

ftp服务器配置

[root@uodekoaix ~]# yum install -y vsftpd         //安装ftp服务器

[root@uodekoaix ~]# service vsftpd start
为 vsftpd 启动 vsftpd:                                    [确定]
[root@uodekoaix ~]# chkconfig vsftpd on      //每次开机ftp服务器都会开启

yum配置

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

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

[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-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

[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

dhcp配置
[root@uodekoaix ~]# vim /etc/dhcpd.conf

ddns-update-style interim;
ignore client-updates;

subnet 192.168.101.0 netmask 255.255.255.0 {

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

        option nis-domain               "domain.org";
        option domain-name              "domain.org";
        option domain-name-servers      222.88.88.88;            //DNS设置
        next-server                     192.168.101.22;                  //指定服务器
        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;
# --- Selects point-to-point node (default is hybrid). Don't change this unless
# -- you understand Netbios very well
#       option netbios-node-type 2;

        range dynamic-bootp 192.168.101.3 192.168.101.99;           //地址池
        default-lease-time 21600;
        max-lease-time 43200;

[root@uodekoaix /]# service dhcpd start
启动 dhcpd: [确定]
[root@uodekoaix ~]# chkconfig dhcpd on      //每次开机dhcp服务都自动启动

tftp配置
[root@uodekoaix ~]# vim /etc/xinetd.d/tftp  //编辑tftp文件

service 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@uodekoaix ~]# service xinetd restart
停止 xinetd:                                              [确定]
启动 xinetd:                                              [确定]                    //tftp服务器每次开机都会自动开启,所以无需设置自动开启。

[root@uodekoaix /]# cd tftpboot/
[root@uodekoaix tftpboot]# ll
总计 8
drwxr-xr-x 4 root root 4096 08-03 01:16 linux-install
[root@uodekoaix tftpboot]# cp /usr/lib/syslinux/pxelinux.0 ./               //将驱动拷到当前目录
[root@uodekoaix tftpboot]# ll
总计 24
drwxr-xr-x 4 root root  4096 08-03 01:16 linux-install
-rw-r--r-- 1 root root 13148 08-03 22:44 pxelinux.0
[root@uodekoaix tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/vmlinuz ./                            //PXE的内核vmliuz
[root@uodekoaix tftpboot]# cp /mnt/cdrom/p_w_picpaths/pxeboot/initrd.img ./                         //相关硬件驱动pxelinux.0
[root@uodekoaix tftpboot]# ll
总计 8552
-r--r--r-- 1 root root 6855881 08-03 22:47 initrd.img
drwxr-xr-x 4 root root    4096 08-03 01:16 linux-install
-rw-r--r-- 1 root root   13148 08-03 22:44 pxelinux.0
-r--r--r-- 1 root root 1855956 08-03 22:45 vmlinuz       //拷贝3个文件
[root@uodekoaix tftpboot]# mkdir -pv pxelinux.cfg          //创建目录
mkdir: 已创建目录 “pxelinux.cfg”
[root@uodekoaix tftpboot]# cp /mnt/cdrom/isolinux/isolinux.cfg pxelinux.cfg/default               //创建一个pxe用的目录 一些提示在安装时候也拷到当前目录
[root@uodekoaix tftpboot]# ll
总计 8556
-r--r--r-- 1 root root 6855881 08-03 22:47 initrd.img
drwxr-xr-x 4 root root    4096 08-03 01:16 linux-install
-rw-r--r-- 1 root root   13148 08-03 22:44 pxelinux.0
drwxr-xr-x 2 root root    4096 08-03 22:51 pxelinux.cfg
-r--r--r-- 1 root root 1855956 08-03 22:45 vmlinuz

[root@uodekoaix tftpboot]# cd pxelinux.cfg/
[root@uodekoaix pxelinux.cfg]# ll
总计 4
-r-xr-xr-x 1 root root 366 08-03 22:51 default
default文件配置

[root@uodekoaix pxelinux.cfg]# vim default

default linux
prompt 1
timeout 6
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
label linux
  kernel vmlinuz
  1 default linux
  2 prompt 1
  3 timeout 6                           //更改超时时间
  4 display boot.msg
  5 F1 boot.msg
  6 F2 options.msg
  7 F3 general.msg
  8 F4 param.msg
  9 F5 rescue.msg
10 label linux
11   kernel vmlinuz
12   append ks=ftp://192.168.101.22/pub/ks.cfg ksdevice=eth0 initrd=initrd.img                                         //需改动

安装并配置kickstart

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

[root@uodekoaix ftp]# system-config-kickstart

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_kickstart

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_pxe_02 

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_tftp_03

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_ftp_04

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_dhcp_05

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_tftp_06 

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_kickstart_07

产生ks.cfg文件

#platform=x86, AMD64, 或 Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
key –skip                          //跳过安装key
#System bootloader configuration
service --disable sendmail           //sendmail服务开启开机慢,所以关闭
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info

[root@uodekoaix22 ~]# cp ks.cfg /var/ftp/pub/                   //将产生的ks.cfg文件拷贝到ftp服务器的/pub目录

2.不使用镜像安装linux

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_kickstart_08 

3.安装成功截图

利用kickstart+ftp+dhcp+tftp实现PXE的自动安装_tftp_09