1 简介
首先让我简单介绍一下PXE技术
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP或MTFTP协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户端)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux系列系统等。本次试验只进行 linux Centos的安装测试。
本文只适用于BIOS的LETF启动方式
2 PXE的运行流程
理论概述:
启动安装--要求pxe网卡和主板的支持
PXE不是一种安装方式,是一种引导的方式。pxe方式要求安装的计算机中必须包含一个 支持PXE 的网卡,且主板支持网络引导,PXE (Pre-boot Execution Environment)协议使计算机可以通过网络启动。
PXE协议通过client来server上下载文件
PXE协议分为 client 和 server 端,PXE client 在网卡Rom中,
网上找了一张图,流程看着比较清晰,就拿来用了
安装流程
1,客户机从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP,并搜寻引导文件的位置
2,DHCP服务器返回分给客户机IP以及bootstrap文件的放置位置(该文件一般是放在一台TFTP服务器上)
客户机向本网络中的TFTP服务器索取bootstrap文件,centos文件名称为pxelinux.0
客户机取得bootstrap文件后之执行该文件
根据bootstrap的执行结果,通过TFTP服务器加载内核和文件系统
进入安装画面, 此时可以通过选择FTP,HTTP,NFS方式之一进行安装
为什么使用tftp传输系统文件
注:一方面tftp可以达到32M,对于系统内核,引导程序等小文件,足以达到
另一方面tftp使用udp协议69号端口,速度也快
足以满足要求速度也可以,何乐而不为
相关文件位置与内容:
dhcp配置文件/etc/dhcpd/dhcp.conf——ip管理与引导程序名称
tftp配置文件/etc/xinetd.d/tftp——tftp根目录,和上面的引导程序名称组成完整路径
引导程序读取的配置文件/tftpboot/pxelinux.cfg/default——启动内核其他
3 实验验证
环境准备
实验前最好关闭防火墙和selinux
完成实验一共需要
tftp dhcp http(或者NFS,ftp)服务
客户端:可获得IP地址
服务端系统Centos7
IP地址:172.16.10.62/24
配置PXE服务
1,DHCP服务配置安装
安装:
[root@localhost ~]# yum install dhcp -y
配置:
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf
default-lease-time 600; #默认的租约时间
max-lease-time 7200; #最大租约时间
allow booting; #定义可以PXE方式启动
allow bootp; #定义支持boottp
subnet 172.16.10.0 netmask 255.255.255.0 {
range 172.16.10.100 172.16.10.120; # 可分配的IP地址段
option routers 172.16.10.62; #指定的网关
** next-server 172.16.10.62; #tftp server的ip**
** filename "pxelinux.0"; #pxe boot需要的启动文件名, 相当于bootloader**
}
启动dhcp
[root@localhost ~]# service dhcpd start
2 tftp服务安装
安装
[root@localhost ~]# yum install tftp -y
配置
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #开机是否启动
per_source = 11
cps = 100 2
flags = IPv4
}
启动tftpd
由于tftp服务依赖于xinet.d所以
启动方式如下
[root@localhost ~]# systemctl start xinetd
查看端口确实开启了
[root@localhost ~]# lsof -i:69
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
xinetd 1002 root 5u IPv4 31021 0t0 UDP *:tftp
3,安装http服务
安装启动
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# systemctl start httpd
将Centos7的镜像文件挂载至/var/www/html/centos7/
测试http可以支持访问就行了
4,准备PXE需要的一些文件
将内核文件和系统文件拷贝至tftp目下
cp /var/www/html/centos7/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
添加引导配置文件pxelinux.0
yum install syslinux -y
cp -r /usr/share/syslinux/* /var/lib/tftpboot/
添加引导配置文件
PXE程序会根据Client的MAC地址依次匹配,最后没有才匹配default文件
touch /var/lib/tftpboot/pxelinux.cfg/default
default文件实例:
default ks
#超时时间
timeout 100
label ks
menu label ^Auto Install CentOS 7
kernel vmlinuz
#指定kickstart自动安装文件路径
append initrd=initrd.img inst.ks=http://172.16.10.62/ks.cfg quiet
ks文件可以自己生成,也可以copy ~下的anaconda-ks.cfg文件自己修改
kickstart文件实例:
#version=RHEL7
# System authorization information
auth --enableshadow --passalgo=sha512
# 指定使用安装介质,支持多种方式
url --url http://172.16.10.62/centos7
text
# Run the Setup Agent on first boot
firstboot --enable
ignoredisk --only-use=sda
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='cn'
# System language
lang zh_CN.UTF-8
#selinux
selinux --disabled
# Network information
#network --bootproto=static --device=eno16777736 --ipv6=auto --activate
network --hostname=localhost.localdomain
# Root password
# System timezone
timezone Asia/Shanghai --isUtc
# System bootloader configuration
bootloader --location=mbr --boot-drive=sda
autopart --type=lvm
# Partition clearing information
clearpart --all --initlabel --drives=sda
reboot
%packages
@compat-libraries
@core
@development
@base
vim
gcc-c++
gcc
lsof
net-tools
%end
安装过程截图
参考链接:
http://blog.51cto.com/st1sk/1680748
http://www.blogjava.net/qileilove/archive/2013/10/14/404942.html