部署PXE远程安装服务(一)

简介

PXE当初是作为Intel的有线管理体系的一部分,Intel 和 Systemsoft于1999年9月20日公布其规格(版本2.1) [2]  。通过使用像网际协议(IP)、用户数据报协议(UDP)、动态主机设定协定(DHCP)、小型文件传输协议(TFTP)等几种网络协议和全局唯一标识符(GUID)、通用网络驱动接口(UNDI)、通用唯一识别码(UUID)的概念并通过对客户机(通过PXE自检的电脑)固件扩展预设的API来实现目的。 [1] 

PXE 客户机(client)这个术语是指机器在PXE启动过程中的角色。一个PXE 客户机(client)可以是一台服务器、桌面级电脑、笔记本电脑或者其他装有PXE启动代码的机器。

协议

PXE 协议大致上结合了DHCP和TFTP,虽然都有在两者上面有改进。DHCP用于查找合适的启动伺服器,TFTP用于下载初始引导程序和附加文件。

为了开始一个PXE自检会话,PXE固件广播一个带有明确的PXE选项DHCPDISCOVER包(扩展DHCPDISCOVER)到67/UDP端口(DHCP伺服器端口)。PXE选项是PXE固件有PXE能力的鉴定,但是会被一般的DHCP服务忽略。当固件受到从这样的服务受到DHCPOFFER包时,它会通过要求其提供配置信息来自我配置。 

关于PXE网路

PXE,Pre-boot eXcution Environment

预启动执行环境,在操作系统之前运行

可用于远程安装、构建无盘工作站

服务端

运行DHCP服务,用来分配地址、定位引导程序

运行TFTP服务器,提供引导程序下载

客户端

网卡支持PXE协议

主板支持网络启动
 

配置PXE装机服务器的基本部署过程

准备centos7安装源(YUM)仓库

启用TFTP服务,并提供内核、引导程序

启动DHCP服务,用来分配地址、指出引导程序位置

配置启动菜单

具体的操作步骤如下:

一、PXE的部署思路

1.DHCP

(1)自动分配IP地址

(2)定位引导文件

(3)netxt-server             //指向TFTP路径

         filename                  //引导程序文件位置

2.TFTP

(1)简单文件传输协议          UDP协议         69端口    

(2)优点:效率高               缺点:容量小

(3)主要存放:

引导程序pxelinux.0(syslinux包)

压缩内核vmlinuz

系统初始化文件initrd.img

启动菜单default

3.FTP(vsftpd)

(1)文件传输协议          系统镜像(centos7)

(2)优点:安全、容量大

(3)TCP协议      20端口(数据传输)   21端口(数据传输)

二、实验环境准备

1.实验会用到的安装包

dhcp、tftp-server、vsftpd、syslinux

2.因为PXE服务是局域网中进行,但是安装软件包需要在联网状态下进行,所以为了达到实验目的,又可以安装软件包,方法如下:

再添加一块网卡,一块网卡设置为NAT模式,一块网卡设置为仅主机模式,就可以实现目的

3.新建一台裸虚拟机centos7

需要注意的是:

(1)网络模式必须设置为仅主机模式

部署PXE远程安装服务(一)_第1张图片

(2)DVD光盘镜像中不需要添加任何镜像,因为是要通过网络去获取镜像去进行安装

部署PXE远程安装服务(一)_第2张图片

三、服务部署

配置网卡

1.查看网卡信息,看网卡二是否添加上

[root@localhost ~]# ifconfig 
ens33: flags=4163  mtu 1500               //网卡一
        inet 192.168.180.134  netmask 255.255.255.0  broadcast 192.168.180.255
        inet6 fe80::3a0a:de11:61a8:ec22  prefixlen 64  scopeid 0x20
        ether 00:0c:29:97:8e:66  txqueuelen 1000  (Ethernet)
        RX packets 1164  bytes 554781 (541.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 443  bytes 40204 (39.2 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163  mtu 1500               //网卡二
        ether 00:0c:29:97:8e:70  txqueuelen 1000  (Ethernet)
        RX packets 76  bytes 7626 (7.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 150  bytes 25956 (25.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2.ens33网卡:NAT模式                   ens36:仅主机模式

ens33网卡不需要做任何修改,主要是给ens36配置静态IP,操作如下:

[root@localhost ~]# cd /etc/sysconfig/network-scripts/     //切换到network-scripts/目录下
[root@localhost network-scripts]# ls
ifcfg-ens33  ifdown-eth   ifdown-isdn    ifdown-sit       ifup          ifup-ib    ifup-plip   ifup-routes    ifup-tunnel        network-functions-ipv6
ifcfg-lo     ifdown-ib    ifdown-post    ifdown-Team      ifup-aliases  ifup-ippp  ifup-plusb  ifup-sit       ifup-wireless
ifdown       ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-ipv6  ifup-post   ifup-Team      init.ipv6-global
ifdown-bnep  ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-isdn  ifup-ppp    ifup-TeamPort  network-functions
[root@localhost network-scripts]# cp -p ifcfg-ens33 ifcfg-ens36     
//在保证权限属性不变的前提下从ens33复制一份配置文件到ens36网卡中
[root@localhost network-scripts]# vim ifcfg-ens36           //进入网卡配置文件

修改配置文件

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static                 //网卡模式设置为静态
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens36                      
UUID=2d383c98-a297-4239-afe5-bb4c5766cbb3
DEVICE=ens36
ONBOOT=yes
IPADDR=192.168.100.100           //IP地址
NETMASK=255.255.255.0            //子网掩码
GATEWAY=192.168.100.1            //网关

:wq                       //保存退出



3.保存退出来后,重启网卡,并进行查看,静态IP地址192.168.100.100是否存在

[root@localhost network-scripts]# service network restart         //重启网卡
Restarting network (via systemctl):                        [  确定  ]
[root@localhost network-scripts]# ifconfig 
ens33: flags=4163  mtu 1500
        inet 192.168.180.134  netmask 255.255.255.0  broadcast 192.168.180.255
        inet6 fe80::3a0a:de11:61a8:ec22  prefixlen 64  scopeid 0x20
        ether 00:0c:29:97:8e:66  txqueuelen 1000  (Ethernet)
        RX packets 2023  bytes 617912 (603.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 858  bytes 93831 (91.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens36: flags=4163  mtu 1500
        inet 192.168.100.100  netmask 255.255.255.0  broadcast 192.168.100.255
        inet6 fe80::20c:29ff:fe97:8e70  prefixlen 64  scopeid 0x20
        ether 00:0c:29:97:8e:70  txqueuelen 1000  (Ethernet)
        RX packets 93  bytes 9507 (9.2 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 297  bytes 50707 (49.5 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

DHCP配置

1.安装DHCP软件包

[root@localhost network-scripts]# yum install dhcp -y     //安装DHCP软件包

,,,,//安装过程省略

2.复制模板到/etc/dhcp/dhcpd.conf的目录下,并直接覆盖

[root@localhost network-scripts]# cp -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf                              //复制模板   
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes           //直接覆盖

3.进入配置文件,修改配置文件

[root@localhost network-scripts]# vim /etc/dhcp/dhcpd.conf       //进入配置文件


 27 subnet 192.168.100.0 netmask 255.255.255.0 {    //网段
 28         range 192.168.100.20 192.168.100.20;    //地址池
 29         option routers 192.168.100.100;         //网关
 30         option domain-name-servers 8.8.8.8;     //分配DNS地址
 31         next-server 192.168.100.100;            //指定TFTP服务器的地址
 32         filename "pxelinux.0";                  //指定PXE引导程序的文件名
 33 }

:wq                                                 //保存退出

准备PXE引导程序、启动菜单文件——在TFTP站点中一共要存放四个文件

文件一:pxelinux.0(引导程序)

1.用于pxe网络安装的引导程序为pxelinux.0,由软件包syslinux提供,所以先安装syslinux软件包

[root@localhost network-scripts]# yum install syslinux -y     //安装syslinux安装包

,,,,//安装过程省略

2.用管道符号过滤去查看pxelinux.0文件的路径

[root@localhost network-scripts]# rpm -ql syslinux | grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0

3.上方在理思路的时候,可以看出要把pxelinux.0的文件放到TFTP站点中即可,所以下面要安装tftp-server软件包

[root@localhost network-scripts]# yum install tftp-server -y    //安装TFTP软件包

,,,,//安装过程省略

4.查看tftp服务中配置文件的路径

[root@localhost network-scripts]# rpm -ql tftp-server
/etc/xinetd.d/tftp                      //配置文件
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot                       //站点

5.将文件pxelinux.0文件复制到tftp服务的站点下,并进行查看

[root@localhost network-scripts]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@localhost network-scripts]# ls /var/lib/tftpboot/
pxelinux.0

6.进入TFTP的配置文件中,把TFTP服务开启

[root@localhost network-scripts]# vim /etc/xinetd.d/tftp


service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no                        //把no改为yes即可
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}

文件二和三:vmlinuz(压缩内核)和initrd.img(系统初始化文件)

1.这两个文件需要在镜像中去获取,又因为经想要挂在到FTP服务中,所以现在先要安装vsftpd软件包

[root@localhost network-scripts]# yum install vsftpd -y

2.查看FTP服务中站点路径

[root@localhost network-scripts]# rpm -ql vsftpd

/var/ftp                 //FTP站点

3.切换到站点目录下,创建一个centos7的目录,然后把镜像挂载到centos7目录中,前提,先看下镜像对不对,是否连接

部署PXE远程安装服务(一)_第3张图片

[root@localhost network-scripts]# cd /var/ftp
[root@localhost ftp]# ls
pub
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# ls
centos7  pub
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7          //挂载
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# df -hT
文件系统                类型      容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root xfs        20G  3.4G   17G   17% /
devtmpfs                devtmpfs  897M     0  897M    0% /dev
tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
tmpfs                   tmpfs     912M  9.0M  903M    1% /run
tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               xfs       6.0G  179M  5.9G    3% /boot
/dev/mapper/centos-home xfs        10G   37M   10G    1% /home
tmpfs                   tmpfs     183M   20K  183M    1% /run/user/0
/dev/sr0                iso9660   4.3G  4.3G     0  100% /var/ftp/centos7   //挂载成功

4.压缩内核和系统初始化文件在centos7的子目录中,如下所示:

[root@localhost ftp]# cd centos7/
[root@localhost centos7]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz            //两个文件所在位置
[root@localhost pxeboot]# 

5.把两个文件复制到TFTP的站点下,并查看

[root@localhost pxeboot]# cp initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost pxeboot]# ls /var/lib/tftpboot/
initrd.img  pxelinux.0  vmlinuz

文件四:default(启动菜单)

1.先切换到TFTP站点目录/var/lib/tftpboot下,创建一个目录“pxelinux.cfg(此名称为固定名称)”

[root@localhost pxeboot]# cd /var/lib/tftpboot/
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  vmlinuz
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinuz

2.继续切换到新创建的pxelinux.cfg目录下,进入default启动菜单中进行启动菜单的配置,注意:配置文件中没有内容,需要全部手写


[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# ls
[root@localhost pxelinux.cfg]# vim default


修改配置文件

default auto                     //指定默认入口名称
prompt 1                         //1 表示等待用户控制

label auto
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168/100/100/centos7

label linux text
        kernel vmlinuz
        append text initrd=initrd.img method=ftp://192.168/100/100/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168/100/100/centos7

开启服务

[root@localhost pxelinux.cfg]# systemctl stop firewalld.service     //关闭防火墙
[root@localhost pxelinux.cfg]# setenforce 0                         //关闭增强型安全功能
[root@localhost pxelinux.cfg]# systemctl start dhcpd                //开启DHCP服务
[root@localhost pxelinux.cfg]# systemctl start tftp                 //开启TFTP服务
[root@localhost pxelinux.cfg]# systemctl start vsftpd               //开启FTP服务

四、开始验证

1.先查看之前安装的裸虚拟机,查看下设置要是仅主机模式

部署PXE远程安装服务(一)_第4张图片

2.查看没问题后,点击开启虚拟机,进入之后会出现个boot:的界面,直接按回车键就会自动安装

部署PXE远程安装服务(一)_第5张图片

3.当出现下面的界面,选择中文,点击继续

部署PXE远程安装服务(一)_第6张图片

4.当来到安装信息的界面通过安装源就可以看出,并非是通过光盘镜像去进行安装,而是通过网络去完成

部署PXE远程安装服务(一)_第7张图片

你可能感兴趣的:(部署PXE远程安装服务(一))