一、原理和概念
什么是PXE:
PXE(Pre-bootExecution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivialfile transfer protocol)或MTFTP(multicast trivial filetransfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
严格来说,PXE 并不是一种安装方式,而是一种引导方式。进行 PXE 安装的必要条件是在要安装的计算机中必须包含一个 PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为 Client端和 Server 端,而PXEClient则在网卡的 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;
2. DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上);
3. PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件;
4. PXE Client 取得pxelinux.0 文件后之执行该文件;
5. 根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统;
6. 进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装;
什么是KickStart:
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数时,才需要安装者手工干预。这样,如果KickStart文件涵盖了安装过程中出现的所有需要填写的参数时,安装者完全可以只告诉安装程序从何处取ks.cfg文件,然后去忙自己的事情。等安装完毕,安装程序会根据ks.cfg中设置的重启选项来重启系统,并结束安装。
PXE+Kickstart 无人值守安装操作系统完整过程如下:
PXE + KickStart安装的条件:
执行 PXE + KickStart安装需要的设备为:
二、准备工作
环境详情:
VMware 12
Centos 6.3DHCP+TFTP+HTTP(nginx)服务器
ip addr:192.168.1.201
关闭防火墙以及selinux
准备镜像:
挂载
#mkdir /mnt/cdrom
#mount -t iso9660 /dev/sr0 /mnt/cdrom
准备HTTP:
HTTP的安装这里就不说了(yum就行了)
把镜像复制到http工作目录下
#cp -rf /mnt/cdrom/ /usr/local/nginx/html/
启动HTTP服务
#nginx
测试是否能访问。
在windows上访问192.168.1.201
不能访问则自行调试。
准备TFTP:
安装用yum就行了。
#yum -y install tftp-server
配置tftp。
#vi /etc/xinted.d/tftp
把disable选项改为no。
启动tftp。
#service xinetd start
设置开机启动xinetd。
# chkconfig xinetd on
准备PXE:
安装syslinux(未安装则安装)。
#yum -y install syslinux
复制pxelinux.0 文件至/var/lib/tftpboot/ 文件夹中。
# cp/usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
复制iso 镜像中的/image/pxeboot/initrd.img 和vmlinux 至/var/lib/tftpboot/ 文件夹中。
# cp/var/www/html/cdrom/images/pxeboot/initrd.img /var/lib/tftpboot/
# cp/var/www/html/cdrom/images/pxeboot/vmlinuz /var/lib/tftpboot/
复制iso 镜像中的/isolinux/*.msg 至/var/lib/tftpboot/ 文件夹中。
# cp/var/www/html/cdrom/isolinux/*.msg /var/lib/tftpboot/
在/var/lib/tftpboot/中新建一个pxelinux.cfg目录。
# mkdir/var/lib/tftpboot/pxelinux.cfg
将iso 镜像中的/isolinux 目录中的isolinux.cfg复制到pxelinux.cfg目录中,同时更改文件名称为default
# cp/var/www/html/cdrom/isolinux/isolinux.cfg/var/lib/tftpboot/pxelinux.cfg/default
修改default文件
#vi /var/lib/tftpboot/pxelinux.cfg/default
default ks
prompt 1
timeout 6
display boot.msg
labellinux
menudefault
kernel vmlinuz
append initrd=initrd.img
label vesa
kernel vmlinuz
append initrd=initrd.img nomodeset
label rescue
kernel vmlinuz
append initrd=initrd.img rescue
label local
localboot 1
label memtest86
kernel memtest
append -
label ks
kernel vmlinuz
append ks=http://192.168.1.201/ks.cfginitrd=initrd.img
label text
kernel vmlinuz
append initrd=initrd.img text
准备DHCP:
安装DHCP服务
# yum -y install dhcp
配置(该配置针对我本人电脑,其他特殊情况的,自行设置)
#vi /etc/dhcp/dhcpd.conf
optiondomain-name-servers 192.168.1.201;
next-server192.168.1.201;
filename "pxelinux.0"; #pxelinux 启动文件位置;
ddns-update-styleinterim;
subnet192.168.1.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.1.150192.168.1.180;
option domain-name-servers 192.168.1.1;
option domain-name"internal.example.org";
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
default-lease-time 60000;
max-lease-time 72000;
}
启动DHCP
#service dhcpd start
准备ks.cfg文件:
以下内容为我新建一个虚拟机,再拷出ks.cfg,形成的简单配置,可自行定制。
install
url --url=http://192.168.1.201/cdrom/ #设置ks服务器地址
lang zh_CN.UTF-8 #中文
keyboard us #键盘
network --onboot yes --device eth0 --bootprotodhcp --noipv6 #网卡
rootpw --iscrypted $6$SzN5jcdMcUhs899y$sfwDl8kLMc2Kw7t21U98n6cpL1Drsujpn.WNYe3pB75nk22phOYzYpVQrtr9613G8qWiRUXkdIZXz937NLDdf1 #建立root用户密码为123123
reboot #重启(后面需要重新引导,不加的话后期需要手动。)
firewall --service=ssh #防火墙开启22端口
authconfig --enableshadow --passalgo=sha512
selinux –disable #selinux设置
timezone --utc Asia/Shanghai #时区上海
key –skip #跳过输入序列号(红帽系统必须加)
#引导信息
bootloader --location=mbr --driveorder=sda--append="crashkernel=auto rhgb quiet"
clearpart --all –initlabel
#分区设置
part /boot --fstype="ext4"--size=200
part swap --fstype="swap"--size=2000
part / --fstype="ext4" --size=10000
#软件包管理
%packages
@chinese-support
@core
@server-policy
%end
测试安装:
这里就不截图了,如有错误自行排错。