一、概念与原理
什么是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。PXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。
什么是KickStart
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
二、环境说明
执行pxe+kickstart来批量安装系统,需要的环境为
1.DHCP服务器
2.TFTP服务器
3.httpd服务器或者ftp服务器或nfs服务器等能提供文件访问的服务器
4.ks.cfg文件
5.syslinux服务提供的pxelinux.0文件
6.一台带有支持pxe协议的网卡的主机
7.为确保实验可用性,请将防火墙和selinux关闭
三、安装步骤
1)、系统版本
[root@station125 ~]# uname -r 2.6.32-431.el6.x86_64
[root@station125 ~]# cat /etc/issue CentOS release 6.5 (Final) Kernel \r on an \m
2)、配置网络环境以及yum源
本文使用的yum源为本地光盘,设置ip地址192.168.1.20,子网掩码为255.255.255.0,网关为192.168.1.253
yum源的配置文件 [root@station125 yum.repos.d]# cat media.repo [base] name=local media base baseurl=file:///mnt/cdrom enabled=1 gpgcheck=0
[root@station125 ~]# ifconfig eth0 eth0 Link encap:Ethernet HWaddr 00:0C:29:E4:A8:B0 inet addr:192.168.1.20 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fee4:a8b0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2519 errors:0 dropped:0 overruns:0 frame:0 TX packets:398 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:227897 (222.5 KiB) TX bytes:49799 (48.6 KiB)
3)、安装DHCP服务
[root@station125 ~]# yum install -y dhcp
配置dhcp服务器,使其能够提供192.168.1.200-192.168.1.230的ip地址,子网掩码为255.255.255.0。
在/etc/dhcpd/dhcpd.conf中添加如下内容,请注意,每行后面一定要加分号,要不不会成功
4)、安装httpd服务(本文通过http的方式提供服务)
[root@station125 ~]# yum install httpd -y
此处只是让http能够提供服务,不做任何配置,关于httpd的相关配置,将在后续推出,敬请大家关注。
将httpd设置为开机自动启动
[root@station125 ~]# chkconfig httpd on
5)、安装tftp-server服务端
root@station125 ~]# yum install tftp-server xinetd -y
其中xinetd是为tftp提供守护进程的,将xieted和tftp都设置为开机自启动,并将服务启动
[root@station125 ~]# chkconfig tftp on [root@station125 ~]# chkconfig xinetd on
6)、准备所需要的rpm包
将光盘下重新挂载指至/var/www/html/wangfeng7399目录下
[root@station125 ~]# mkdir /var/www/html/wangfeng7399 [root@station125 ~]# mount --bind /mnt/cdrom/ /var/www/html/wangfeng7399/
启动httpd服务
[root@station125 ~]# service httpd start Starting httpd: httpd: apr_sockaddr_info_get() failed for station125.magelinux.com httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName [ OK ]
7)、准备tftpboot下的文件
安装syslinux,此服务为pxe提供pxelinux.0文件
[root@station125 ~]# yum install syslinux -y
复制pxe启动所需要的文件到tftp目录下
[root@station125 ~]# cp /var/www/html/wangfeng7399/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ [root@station125 ~]# cp /var/www/html/wangfeng7399/isolinux/boot.msg /var/lib/tftpboot/ [root@station125 ~]# cp /var/www/html/wangfeng7399/isolinux/vesamenu.c32 /var/lib/tftpboot/ [root@station125 ~]# cp /var/www/html/wangfeng7399/isolinux/splash.jpg /var/lib/tftpboot/ [root@station125 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@station125 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@station125 ~]# cp /var/www/html/wangfeng7399/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
修改/var/lib/tftpboot/pxelinux.cfg/default
8)、第一次测试,测试是否可以通过pxe安装系统
9)、提供kictstart文件
kickstart文件生成方式有了两种
1.复制模板/root/anaconda-ks.cfg。而后使用vim编辑配置
2.使用system-config-kiskstart来生成,建议使用/root/anaconda-ks.cfg 模板生成
本文以第一种方式生成,修改自己所需要的参数,关于ks.cfg的相关介绍请移步至本人的相关博文!链接地址为http://wangfeng7399.blog.51cto.com/3518031/1369553
将生成的ks.cfg文件复制到/var/www/html下
10)、配置引导程序能够自动加载kictstart文件
修改/var/lib/tftpboot/pxelinux.cfg的default文件
为/var/www/html下的ks.cfg文件加可读权限
11)、测试安装
测试成功!!!!
由于本人水平有限,请多多关照,欢迎大家批评指正