大纲: 1. PXE的概念 2. PXE的原理 3. 实现PXE安装CentOS6.8和CentOS7.2
一、什么是PXE
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等
PXE最直接的表现是,在网络环境下工作站可以省去硬盘,但又不是通常所说的无盘站的概念,因为使用该技术的PC在网络方式下的运行速度要比有盘PC快3倍以上。当然使用PXE的PC也不是传统意义上的TERMINAL终端,因为使用了PXE的PC并不消耗服务器的CPU,RAM等资源,故服务器的硬件要求极低。
二、PXE的原理
流程化实现原理:
支持PXE的电脑开机(预先打开网卡PXE功能,网络引导)
--->DHCP给该电脑一个IP地址,并指明下一跳tftp文件服务器
---> 电脑去tftp服务器上(/tftpboot 文件夹下面)下载到一个叫做 pxelinux.0的文件,并拿到pxelinux.cfg文件夹下的default配置文件
--->根据该配置文件加载内核等操作,同时该配置文件中可以指明ks.cfg文件的地址,这样实现全程无人化安装!
三、
(1)PXE实现Centos7.2的自动化安装
环境:
1.设备必须是支持PXE的网卡
2.此次试验我将dhcp服务器和提供ks文件,yum仓库的ftp服务都放在了同一个主机上。
3.为了不受环境中其他dhcp服务的影响,我将两台主机都放置在自己定义的vmnet3主机模式的网络中,并且不启用vmvare自带的虚拟dhcp服务器。
4.dhcp服务器端和ftp服务器的IP为10.1.100.126
- 首先安装dhcp服务器,tftp服务器,tftp客户端(在本机测试时用),ftp服务器
tftp的根目录是/var/lib/tftpboot
1
2
| [iyunv@centos7-2 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux
[iyunv@centos7-2 ~]# systemctl start tftp.socket
|
2.编辑dhcp的配置文件,提供filename和next-server(也就是tftp的地址)
1
2
3
4
5
6
7
8
9
10
11
12
| [iyunv@centos7-2 ~]# vim /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.0.0 {
range 192.168.11.100 192.168.11.200;
option domain-name-servers 114.114.114.114;
option domain-name "luxiangyu.com";
option routers 10.1.100.126;
default-lease-time 600;
max-lease-time 7200;
filename "pxelinux.0"; #文件由syslinux生成
next-server 10.1.100.126; # 指明tftp服务器的地址
}
[iyunv@centos7-2 ~]# systemctl start dhcpd
|
3.复制必备的文件
1
2
3
4
| [iyunv@centos7-2 pub]# mount /dev/cdrom /var/ftp/pub/centos7
[iyunv@centos7-2 pub]# mount /dev/cdrom /media/cdrom
[iyunv@centos7-2 ~]# cp -a /usr/share/syslinux/{chain.c32,menu.c32,memdisk,mboot.c32,pxelinux.0} /var/lib/tftpboot
[iyunv@centos7-2 ~]# cp -a /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
|
4.创建一个菜单文件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
| [iyunv@centos7-2 ~]# cd /var/lib/tftpboot/
[iyunv@centos7-2 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[iyunv@centos7-2 ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
default menu.c32
prompt 5
timeout 30
MENU TITLE CentOS 7 PXE
LABEL linux
MENU LABEL Install Centos 7 x86_64
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=ftp://10.1.100.126/pub/centos7/
LABEL linux auto_install
MENU LABEL Install Centos 7.2 x86_64 auto
KERNEL vmlinuz
APPEND initrd=initrd.img inst.repo=ftp://10.1.100.126/pub/centos7 ks=
[iyunv@centos7-2 ~]# tree /var/lib/tftpboot/
/var/lib/tftpboot/
├── chain.c32
├── initrd.img
├── issue
├── mboot.c32
├── memdisk
├── menu.c32
├── pxelinux.0
├── pxelinux.cfg
│ └── default
└── vmlinuz
|
5.确认服务都已经开启,进行测试。
新建一个虚拟机,并且和服务器端在同一网络。设置网卡启动。

(1)PXE实现Centos6.8的自动化安装
环境: 1.设备必须是支持PXE的网卡 2.此次试验我将dhcp服务器和提供ks文件,yum仓库的ftp服务都放在了同一个主机上。 3.为了不受环境中其他dhcp服务的影响,我将两台主机都放置在自己定义的vmnet3主机模式的网络中,并且不启用vmvare自带的虚拟dhcp服务器。 4.dhcp服务器端和ftp服务器的IP为10.1.100.124
- 首先安装dhcp服务器,tftp服务器,tftp客户端(在本机测试时用),ftp服务器
tftp的根目录是/var/lib/tftpboot
1
2
3
4
5
6
7
8
9
10
11
12
| [iyunv@centos6-8 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux
[iyunv@centos6-8 ~]# chkconfig tftp on
[iyunv@centos6-8 ~]# service restart xinetd
[iyunv@Cent6-8 ~]# ss -nul
UNCONN 0 0 *:517 *:*
UNCONN 0 0 *:518 *:*
UNCONN 0 0 *:647 *:*
UNCONN 0 0 127.0.0.1:659 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 *:68 *:*
UNCONN 0 0 *:69
|
2.编辑dhcp的配置文件,提供filename和next-server(也就是tftp的地址) 1
2
3
4
5
6
7
8
9
10
11
12
13
| [iyunv@centos6-8 ~]# vim /etc/dhcp/dhcpd.conf
subnet 10.1.0.0 netmask 255.255.0.0 {
range 10.1.100.120 10.1.100.130;
option domain-name-servers 114.114.114.114;
option domain-name "luxiangyu.com";
option routers 10.1.100.124;
default-lease-time 600;
max-lease-time 7200;
filename "pxelinux.0"; #文件由syslinux生成
next-server 10.1.100.124; # 指明tftp服务器的地址
}
[iyunv@centos6-8 ~]# service dhcpd configtest
[iyunv@centos6-8 ~]#service dhcpd start
|
3.复制必备的文件
1
2
3
4
5
6
7
| [iyunv@centos6-8 pub]# mount /dev/cdrom /var/www/html/centos6
[iyunv@centos6-8 pub]# mount /dev/cdrom /media/cdrom
[iyunv@centos6-8 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[iyunv@centos6-8 ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
[iyunv@centos6-8 ~]# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/
[iyunv@centos6-8 ~]# ls /var/www/html/
centos6 centos6.cfg
|
4.创建一个菜单文件 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
| [iyunv@centos6-8 ~]# cd /var/lib/tftpboot/
[iyunv@centos6-8 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
[iyunv@centos6-8 ~]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[iyunv@centos6-8 ~]# cat /var/lib/tftpboot/pxelinux.cfg/default
default vesamenu.c32
#prompt 1
timeout 60
display boot.msg
menu background splash.jpg
menu title Welcome to CentOS 6.8!
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 auto
menu label ^Auto Install Centos 6.8
menu default
kernel vmlinuz
append initrd=initrd.img ks= #不用写init.repo
label linux
menu label ^Install Centos 6.8
kernel vmlinuz
append initrd=initrd.img method=http://192.168.11.1/centos6/yum/
label rescue
menu label ^Rescue installed system
kernel vmlinuz
append initrd=initrd.img rescue
label local
menu label Boot f
|
5.测试:
新建一个虚拟机,并且和服务器端在同一网络。设置网卡启动。
个人经验:
注意PXE安装时在default文件中定义的区别,即在centos7中需要多定义inst.repo的地址
|