PXE高效批量网络装机
系统装机的三种引导方式
1.硬盘
2.光驱(u盘)
3.网络
系统安装过程
- 加载boot loader
Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境
- 加载启动安装菜单
- 加载内核和initrd系统(文件才能使用文件)
- 加载根系统()
- 运行anaconda的安装向导
什么是pxe
PXE 的全称是 preboot execute environment它其实是Intel在很久以前提出来的一项用于通过网络来引导系统的标准。允许客户机通过网络从远程服务器上下载引导镜像,并加载安装文件或者整个操作系统。
pxe是通过网卡引导启动
1.1实现的硬件条件
1.BIOS支持
2.网卡支持(现在基本都已支持)
3.需要在bios中开启开关,服务器一般没打开(bmc界面里打开)
4.网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置 网卡自带DHCP功能 dhcp 指明分配的ip地址
5.服务器通过 tftp服务(简单文件传输协议)来提供系统内核和引导镜像的下载 udp()协议 网卡自带这个功能(不支持其他的远程共享服务)
自带的站点(/var/lib/tftp?) initrd.img(驱动) vmlinuz(内核) pxelinux.cfg/default(引导文件) pxelinux.0(小型的grub程序) tftp 指明?
实现过程
1.网卡需要查找相关的dhcp服务器(获取地址时间)
2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址 还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)
3.网卡使用tftp客户端吧引导程序加载到内存中来
4.bios执行引导程序
5.引导程序会去TFTP去查找配置文件
6.根据配置文件去引导安装系统
7.系统安装过程
搭建过程中服务详解
PXE 远程安装服务器集成了 CentOS 7 安装源、TFTP 服务、DHCP 服务,能 够向客户机裸机发送 PXE 引导程序、Linux 内核、启动菜单等数据,以及提供安装文件。
TFTP服务
TFTP(简单文件传输协议):内核和引导文件
是一种基于UDP协议实现的用于在客户机和服务器之间进行简单文件传输的协议,适合于小型文件传输的应用场合。TFTP服务默认由xinetd服务进行管理,使用UDP69端口。
vsftp:安装系统镜像文件获取方式
可以使用http ftp等方式,ftp文件传输的一种。
syslinux
syslinux是一个功能强大的引导加载程序,而且兼容各种介质。它的目的是简化首次安装Linux的时间,并建立修护或其它特殊用途的启动盘。它的安装很简单,一旦安装syslinux好之后,sysLinux启动盘就可以引导各种基于DOS的工具,以及MS-DOS/Windows或者任何其它操作系统。
pxelinux.0 启动pxe pxe可以支持
pxe 优点
1.规模化:同时装配多台服务器
2.自动化:安装系统、配置各种服务
3.远程实现:不需要光盘、U盘等安装介质
操作过程
大概过程
- 分配给同一局域网内新加机器的地址(配置文件) dhcp 分配地址 指明tftp 服务器的地址
- tftp服务端开启 udp 配置 默认关闭
- 安装syslinux 取得 pxelinux.0 文件
- 安装vsftpd服务挂载软件安装源(mount /dev/sr0 /var/ftp/centos7)
- 将四大文件拷入 (/var/lib/tftpboot )
- initrd.img
- pxelinux.0 (类似grub)
- pxelinux.cfg/default (手写)
- vmlinuz
6.将服务开启,关闭防火墙,selinux
pxe网络装机操作过程
实验环境:
服务器内网IP地址:20.0.0.200
DHCP、TFTP、FTP服务全都搭建在这一台服务器上。
简易流程:
1.安装4个软件包:dhcp、tftp-server、vsftpd、syslinux(取得prelinux.0文件)。
2.配置DHCP服务器,分配IP地址,指明tftp服务器的地址。(虚拟机需要开启仅主机模式,模拟内网环境)
3.编辑TFTP服务配置文件,开启服务(默认是关闭状态)。
4.挂载软件安装源(通常情况下都使用光盘中的安装源,即挂载光驱),并将三大文件先拷入/var/lib/tftpboot/ 目录中:pxelinux.0,vmlinuz,initrd.img。
5.在/var/lib/tftpboot/ 目录下,创建子目录pxelinux.cfg,在子目录下编写引导程序的配置文件default。
6.关闭防火墙和selinux。启动dhcpd、tftp、vsftpd。
7.使用空白客户机(裸机)测试能否自动装机。
服务器配置操作步骤:
1.安装4个软件包:dhcp、tftp-server、vsftpd、syslinux(取得prelinux.0文件)
[root@localhost ~]# yum install dhcp tftp-server vsftpd syslinux -y
2.把虚拟机第二块网卡设置为仅主机模式,修改网卡配置文件,重启网络服务,模拟内网环境。
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
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=ens33
UUID=12a880c9-318e-4aa5-b143-e730606be7f1
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.75.200
NETMASK=255.255.255.0
GATEWAY=192.168.75.2
#DNS1=8.8.8.8
#DNS2=114.114.114.114
~
[root@localhost ~]# systemctl restart network
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.75.200 netmask 255.255.255.0 broadcast 192.168.75.255
inet6 fe80::1e19:a8d4:a94a:6a4e prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:a4:34:b5 txqueuelen 1000 (Ethernet)
RX packets 21801 bytes 31826589 (30.3 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 8063 bytes 505194 (493.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@localhost ~]#
3.配置DHCP服务器,分配IP地址,指明tftp服务器的地址。
[root@localhost ~]# cd /usr/share/doc/dhcp-4.2.5/
[root@localhost dhcp-4.2.5]# ls
dhcpd6.conf.example dhcpd.conf.example ldap
[root@localhost dhcp-4.2.5]# cp dhcpd.conf.example /etc/dhcp/dhcpd.conf
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? yes
[root@localhost dhcp-4.2.5]# vim /etc/dhcp/dhcpd.conf
subnet 192.168.75.0 netmask 255.255.255.0 { //设置子网IP、子网掩码
range 192.168.75.200 192.168.75.250; //设置子网IP、子网掩码
option routers 192.168.75.200; //设置网关地址
next-server 192.168.75.2; //指明TFTP服务器地址
filename "pxelinux.0"; //声明使用pxelinux.0文件
}
4.、修改TFTP服务配置文件/etc/xinetd.d/tftp,将服务开启(默认是关闭状态)。
[root@localhost ~]# rpm -qc tftp-server
/etc/xinetd.d/tftp
[root@localhost ~]# vim /etc/xinetd.d/tftp //编辑TFTP配置文件
5、将光盘挂载到/var/ftp的子目录centos7下,并将三大文件先拷入/var/lib/tftpboot/ 目录中:vmlinuz,initrd.img。pxelinux.0。
[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 centos7
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# cd centos7
[root@localhost centos7]# ls
CentOS_BuildTag EULA images LiveOS repodata RPM-GPG-KEY-CentOS-Testing-7
EFI GPL isolinux Packages RPM-GPG-KEY-CentOS-7 TRANS.TBL
[root@localhost centos7]# cd isolinux
[root@localhost isolinux]# ls
boot.cat boot.msg grub.conf initrd.img isolinux.bin isolinux.cfg memtest splash.png TRANS.TBL vesamenu.c32 vmlinuz
[root@localhost isolinux]# cp vmlinuz initrd.img /var/lib/tftpboot
[root@localhost isolinux]# cd /var/lib/tftpboot
[root@localhost tftpboot]# ls
initrd.img vmlinuz
# 将pxelinux.0文件拷入/var/lib/tftpboot目录。
[root@localhost tftpboot]# rpm -ql syslinux |grep pxelinux.0
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost tftpboot]# cp /usr/share/syslinux/pxelinux.0 ./
[root@localhost tftpboot]# ls
initrd.img pxelinux.0 vmlinuz
[root@localhost tftpboot]#
6.在/var/lib/tftpboot/ 目录下,创建子目录pxelinux.cfg,在pxelinux.cfg目录下编写引导程序的配置文件default。(可参考光盘 isolinux 目录下的 isolinux.cfg 文件)
[root@localhost tftpboot]# mkdir pxelinux.cfg
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default
#默认选项
default auto
#开机不等待,也可以设置timeout 600,默认等待60秒
prompt 1
<200b>
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.75.200/centos7
<200b>
label text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.75.200/centos7
<200b>
label rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.75.200/centos7
6、关闭防火墙和selinux。启动 dhcpd、tftp、vsftpd 三个服务。
[root@localhost ~]# systemctl stop firewalld.service
[root@localhost ~]# setenforce 0
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl start vsftpd
二、客户端,创建空白虚拟机测试能否自动装机:
1、创建新的空白虚拟机
2、开启虚拟机:
虚拟机自动获取IP地址、自动安装镜像文件系统,最后出现图形化界面,之后的参数需要手动设置。