一、概述
(一)什么是PXE
PXE(Pre boot Execution Environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP ( trivial file transfer protocol )或MTFTP(multicast trivial file transfer protocol)协议下载一个启动软件包到本机,内存中执行,由这个启动软件包完成终端基本软件设置,从而引导预先安装在服务器中的终端操作系统。
? 严格来说,PXE并不是一种安装方式 ,而是种引导方式。 进行PXE安装的必要条件是在要安装的计算机中必须包含个PXE支持的网卡(NIC), 即网卡中必须要有PXE Client。PXE 协议可以使计算机通过网络启动。此协议分为Client端和Server端,而PXE Client则在网卡的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方便通过网络大批量地操作系统的部署。PXE client当按下电源键选择从PXE网络启动,通过广播找到DHCP服务器索取IP;
? 2.DHCP服务器返回分配给客户机的IP以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上) ;
? 3.PXE Client向本网络中的TFTP服务器索取pxelinux.0文件;
? 4.PXE Client取得pxelinux.0文件后之执行该文件;
? 5.根据nxelinux 0的执行结里诵过TFTP服务器加载内核和文件系统;
? 6.进入安装画面,此时可以通过选择HTTP、FTP、NFS方式之一进行安装。
(三)环境准备说明
? PXE服务器:CentOS7基于virtualbox的虚拟机
? IP:10.0.2.15
#可通过如下命令查询DNS [root@localhost ~]# cat /etc/resolv.conf
? DNS:114.114.114.114
? 在tftp服务器上要首先由PXE的安装信息,配置服务及安装软件包如下;DHCP;tftp;http;sysliinux(通过yum安装)
[root@localhost ~]# yum install dhcp tftp tftp-server syslinux httpd -y #生成ks.cfg文件需要system-config-kickstart工具 [root@localhost ~]# yum install system-config-kickstart -y #此工具依赖于X Windows,所以需安装X Windows和Desktop [root@localhost ~]# yum groupinstall "X Windows System" [root@localhost ~]# yum groupinstall Desktop #重启系统 [root@localhost ~]# reboot
二、基于httpd搭建本地安装源
(一)挂载光盘
#挂载CentOS7光盘 [root@localhost ~]# mkdir /media/cdrom [root@localhost ~]# mount /dev/cdrom /media/cdrom [root@localhost ~]# mkdir -pv /var/www/html/centos/7/x86_64 #绑定挂载到http默认目录下 [root@localhost ~]#mount --bind /media/cdrom /var/www/html/centos/7/x86_64
(二)kickstart ks.cfg配置文件
[root@localhost ~]# cd /var/www/html;mkdir ks [root@localhost ~]# vim anaconda-ks.cfg #version=DEVEL # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media #cdrom # Install OS instead of upgrade install # Use network installation url --url=http://(自己的IP地址,如:10.0.2.15)/centos/7/x86_64 # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable #ignoredisk --only-use=sda # Keyboard layouts keyboard --vckeymap=cn --xlayouts='cn' # System language lang zh_CN.UTF-8 # Network information network --bootproto=dhcp --device=enp0s3 --onboot=off --ipv6=auto network --hostname=localhost.pkey.cn # Root password rootpw --iscrypted $1$lSeSXuy.$7HmGY9vVxEGEGB98qTUuv1 # System timezone timezone Asia/Shanghai --isUtc # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda autopart --type=lvm # Partition clearing information clearpart --none --initlabel %packages @^minimal @core kexec-tools vim wget httpd %end %addon com_redhat_kdump --enable --reserve-mb='auto' %end selinux --disabled #禁用selinux reboot #安装完重启系统
(三)配置启动
[root@localhost ~]# systemctl start httpd [root@localhost ~]# systemctl enable httpd
(四)查看当前服务状态
[root@localhost ~]# systemctl status httpd.service
三、配置DHCP服务
(一)配置dhcp服务
dhcp配置文件在/etc/dhcp/目录下,默认的配置文件没有,但我们可以在帮助文件中找到模板示例文件加以修改,帮助文件的位置为 /usr/share/doc/dhcp*/dhcpd.conf.sample,也可以自己新建一个dhcpd.conf文件,写入
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf # # DHCP Server Configuration file. # see /usr/share/doc/dhcp*/dhcpd.conf.example # see dhcpd.conf(5) man page option domain-name "pkey.cn"; option domain-name-servers 114.114.114.114; #写入网关 default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 10.0.2.0 netmask 255.255.255.0 { range dynamic-bootp 10.0.2.110 10.0.2.120; option routers 10.0.2.1; next-server 10.0.2.254; #tftp server也是本机,可以分开 filename "pxelinux.0"; #引导文件 }
(二)启动与查看
[root@localhost ~]# systemctl start dhcpd [root@localhost ~]# systemctl enable dhcpd #查看监听情况 [root@localhost ~]# ss -tunl Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port udp UNCONN 0 0 *:67 *:* udp UNCONN 0 0 *:68 *:* udp UNCONN 0 0 127.0.0.1:323 *:* udp UNCONN 0 0 :::69 :::*
(三)查看当前服务状态
[root@localhost ~]# systemctl status httpd.service
四、配置tftp服务
安装好tftp-server软件包后 默认的数据根目录是/var/lib/tftpboot/ 无须修改,只需要复制一些软件引导文件进来即可
1、相关文件准备
##引导文件 [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ #内核文件 [root@localhost ~]# cp /media/cdrom/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot #引导菜单 [root@localhost ~]# cp /usr/share/syslinux/{chain.c32,mboot.c32,menu.c32,memdisk} /var/lib/tftpboot #制件引导默认文件 [root@localhost ~]# mkdir -pv /var/lib/tftpboot/pxelinux.cfg #在/var/lib/tftpboot/pxelinux.cfg目录下 [root@localhost pxelinux.cfg]# cat default default menu.c32 prompt 5 timeout 30 MENU TITLE CentOS 7 PXE Menu LABEL linux MENU LABEL Install CentOS 7 x86_64 KERNEL vmlinuz APPEND initrd=initrd.img inst.repo=http://(自己的IP)/centos/7/x86_64 ks=http://(自己的IP)/ks/ks.cfg
2、启动配置开机自启
[root@localhost]# systemctl enable tftp [root@localhost]# systemctl start tftp
3、tftp测试
#查看/var/lib/tftpboot/的目录文件结构 [root@localhost tftpboot]# tree -L 2 .电脑 ├── chain.c32 ├── initrd.img ├── mboot.c32 ├── memdisk ├── menu.c32 ├── pxelinux.0 ├── pxelinux.cfg │ └── default └── vmlinuz 1 directory, 8 files
[root@localhost ~]# cd /var/lib/tpm [root@localhost tpm]# pwd;ls /var/lib/tpm [root@localhost tpm]# tftp 10.0.2.15 tftp> get vmlinuz tftp> quit [root@localhost tpm]# pwd;ls /var/lib/tpm vmlinuz
五、PEX无人值守安装测试
(一)修改virtualbox网络
管理–>全局设定–>网络–>”仅主机(Host-Only)网络” –>双击vboxnet0 –>把virtualbox自带的仅主机网络的DHCP服务关掉
(二)新建虚拟机
和用cdrom安装虚拟的唯一区别是不用挂载镜像,只需要修改新的虚拟机的网络类型为”仅主机(Host-Only)网络”
开机–>按F12选择LAN启动