大纲:
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
[root@centos7-2 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux [root@centos7-2 ~]# systemctl start tftp.socket
2.编辑dhcp的配置文件,提供filename和next-server(也就是tftp的地址)
[root@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服务器的地址 } [root@centos7-2 ~]# systemctl start dhcpd
3.复制必备的文件
[root@centos7-2 pub]# mount /dev/cdrom /var/ftp/pub/centos7 [root@centos7-2 pub]# mount /dev/cdrom /media/cdrom [root@centos7-2 ~]# cp -a /usr/share/syslinux/{chain.c32,menu.c32,memdisk,mboot.c32,pxelinux.0} /var/lib/tftpboot [root@centos7-2 ~]# cp -a /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot
4.创建一个菜单文件
[root@centos7-2 ~]# cd /var/lib/tftpboot/ [root@centos7-2 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@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= [root@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
[root@centos6-8 ~]# yum -y install tftp tftp-server dhcp vsftpd syslinux [root@centos6-8 ~]# chkconfig tftp on [root@centos6-8 ~]# service restart xinetd [root@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的地址)
[root@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服务器的地址 } [root@centos6-8 ~]# service dhcpd configtest [root@centos6-8 ~]#service dhcpd start
3.复制必备的文件
[root@centos6-8 pub]# mount /dev/cdrom /var/www/html/centos6 [root@centos6-8 pub]# mount /dev/cdrom /media/cdrom [root@centos6-8 ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ [root@centos6-8 ~]# cp /media/cdrom/p_w_picpaths/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/ [root@centos6-8 ~]# cp /media/cdrom/isolinux/{boot.msg,vesamenu.c32,splash.jpg} /var/lib/tftpboot/ [root@centos6-8 ~]# ls /var/www/html/ centos6 centos6.cfg
4.创建一个菜单文件
[root@centos6-8 ~]# cd /var/lib/tftpboot/ [root@centos6-8 ~]# mkdir /var/lib/tftpboot/pxelinux.cfg [root@centos6-8 ~]# cp /media/cdrom/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default [root@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的地址