一、原理和概念
1.1什么是PXE
PXE并不是一种安装方式,而是一种引导方式。进行PXE安装的必要条件是要安装的计算机中包含一个PXE支持的网卡(NIC),即网卡中必须要有PXE Client。PXE(Pre-boot Execution Environment)协议使计算机可以通过网络启动。
PXE协议分为client和server端,PXE client在网卡的ROM中,当计算机引导时,BIOS把PXE client调入内存执行,由PXE client将放置在远端的文件通过网络下载到本地运行。
运行PXE协议需要设置DHCP服务器和TFTP服务器。DHCP服务器用来给PXE client(将要安装系统的主机)分配一个IP地址,所以在配置DHCP服务器时需要增加相应的PXE设置。
在PXE client的ROM中已经存在了TFTP Client。PXE Client通过TFTP协议到TFTP服务器上传下载所需的文件。
1.2什么是KickStart
KickStart是一种无人值守的安装方式。
KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件,在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写的参数的情况时,安装程序会首先去查找kickstar生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果kickstart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后只需等待安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
二、实验环境
虚拟机:centos 6.4
实验需要两台虚拟机:一台配置,另一台实验(无操作系统)
PXE+KickStart安装的条件:
执行PXE+KickStart安装所需的设备:
DHCP:用来给客户机自动分配IP
TFTP:用来存储PXE相关的文件,比如系统引导文件
FTP:用来存放系统安装文件
KickStart:生成ks.cfg配置文件。
带有一个PXE支持网卡的将安装的主机
如果是virtualbox要到官网上下载扩展包
整个过程使用rpm安装,安装软件包时请转移到/var/ftp/pub/Package/下安装
三、安装步骤
1.挂载DVD光盘
虚拟机Settings-->Storage-->Attributes选择你的光盘-->OK
# mount /dev/cdrom /mnt/
2.安装vsftp并复制光盘的所有内容到/var/ftp/pub
# cd /mnt/Packages/
# rpm -ivh vsftpd-2.2.2-11.el6_3.1.x86_64.rpm
# cp –rf /mnt/* /var/ftp/pub/
# service vsftpd start
# chkconfig vsftpd on
3.安装tftp-server和xinetd
# rpm -ivh xinetd-2.3.14-38.el6.x86_64.rpm
# rpm -ivh tftp-server-0.49-7.el6.x86_64.rpm
修改tftp的配置文件
# vim /etc/xinetd.d/tftp
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot ####这里可以不需要更改。也可新建一个目录
disable = no ####注意这里改为no
per_source = 11
cps = 100 2
flags = IPv4
}
# service xinetd start
# chkconfig xinetd on
4.安装DHCP服务,同时修改配置文件
先设置一下本机的IP
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.1 #本机IP
GATEWAT=192.168.1.1
NETWORK=255.255.255.0
重启网络
#service network restart
安装DHCP
# rpm -ivh dhcp-4.1.1-34.P1.el6.centos.x86_64.rpm
修改DHCP的配置文件:
# vim /etc/dhcp/dhcpd.conf
#
# DHCP Server Configuration file.
# see /usr/share/doc/dhcp*/dhcpd.conf.sample
# see 'man 5 dhcpd.conf'
#
ddns-update-style none;
next-server 192.168.1.1; #PXE服务器的IP
filename "pxelinux.0";
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.150 192.168.1.200; #动态分配IP段从150到200
#option broadcast-address 192.168.1.1;
option routers 192.168.1.1;
default-lease-time 600;
max-lease-time 7200;
}
# service dhcpd start
# chkconfig dhcpd on
5.配置支持PXE启动
首先需要安装syslinux包和相应的软件包,来保证以下步骤不缺少相应的文件
# rpm -ivh perl-Crypt-PasswdMD5-1.3-6.el6.noarch.rpm
# rpm -ivh perl-Digest-SHA1-2.12-2.el6.x86_64.rpm
# rpm -ivh syslinux-3.86.1.1.el6.x86_64.rpm
复制PXE启动所需的文件
# mkdir /var/lib/tftpboot/pxelinux.cfg
# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
# cp /var/ftp/pub/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
# cp /var/ftp/pub/image/pxeboot/initrd.img /var/lib/tftpboot/
# cp /var/ftp/pub/image/pxeboot/vmlinux /var/lib/tftpboot/
# cp /var/ftp/pub/isolinux/boot.msg /var/lib/tftpboot/
# cp /var/ftp/pub/isolinux/splash.jpg /var/lib/tftpboot/
# cp /var/ftp/pub/isolinux/vesamenu.c32 /var/lib/tftpboot
# chmod u+w /var/lib/tftpboot/pxelinux.cfg/default
修改default文件配置文件ks.cfg的存放路径
# vim /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 600
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.4!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000
label linux
# menu label ^Install or upgrade an existing system
menu default
kernel vmlinuz
append initrd=initrd.img ks=ftp://192.168.1.1/pub/ks.cfg #ks.cfg的存放路径
6.安装kickstart,同时配置kickstart(如果你的系统没有装anaconda的话,请把下面的rpm包全部装上)
#rpm -ivh deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
python-deltarpm-3.5-0.5.20090913git.el6.x86_64.rpm
createrepo-0.9.8-4.el6.noarch.rpm
device-mapper-multipath-libs-0.4.9-31.el6.x86_64.rpm
device-mapper-multipath-0.4.9-31.el6.x86_64.rpm
libhbaapi-2.2-10.el6.x86_64.rpm
libhbalinux-1.0.10-1.el6.x86_64.rpm
libconfig-1.3.2-1.1.el6.x86_64.rpm
lldpad-0.9.38-3.el6.x86_64.rpm
fcoe-utils-1.0.14-9.el6.x86_64.rpm
isomd5sum-1.0.6-1.el6.x86_64.rpm
iscsi-initiator-utils-6.2.0.872-10.el6.x86_64.rpm
makebootfat-1.4-10.el6.x86_64.rpm
pykickstart-1.74.1-1.el6.noarch.rpm
pyparted-3.4-2.el6.x86_64.rpm
python-cryptsetup-0.0.11-1.el6.x86_64.rpm
python-nss-0.8-3.el6.x86_64.rpm
python-pyblock-0.48-1.el6.x86_64.rpm
squashfs-tools-4.0-3.el6.x86_64.rpm
tigervnc-server-1.0.90-0.10.20100115svn3945.el6.x86_64.rpm
anaconda-yum-plugins-1.0-5.1.el6.noarch.rpm
anaconda-13.21.82-1.el6.x86_64.rpm
system-config-language-1.3.4-5.el6.noarch.rpm
system-config-kickstart-2.8.6.2-1.el6.noarch.rpm
参考:
http://wenku.baidu.com/link?url=G0IDbh8CFXBoU9hwAwvpaUsp_3GZH1doST054bf4OskdZ4rT7C1qVaYK2Bko7xmR5NBfHZzNyazuayiYrDQuK0n0WA1RzfIl-UUyHjcSHNy
经过上面的安装,现在可以在gnome环境下配置kickstart了
#system-config-kickstart
7.配置yum
安装yum源,设置如下
# vim /etc/yum.repos.d/rhel.repo
[Packages]
name=Packages
baseurl=ftp://localhost/pub
gpgcheck=1
enable=1
8.注意关闭防火墙和selinux
# service iptables stop
# setenforce 0
如果没有关闭防火墙和selinux会出现下面的错误:
PXE-E32:TFTP open timeout
9.客户端安装一台空的虚拟机
即不需要镜像安装
在这台虚拟机上Settings-->System-->Boot Order选择Network上移到第一个-->OK
Network-->Attached to 选择Bridged Adapter-->OK
点击Show,安装完以后把
在这台虚拟机上Settings-->System-->Boot Order去掉Network-->OK