在大规模的Linux应用环境中,比如Web群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何给成百上千台服务器裸机快速安装系统呢?传统的USB光驱、移动硬盘等安装方式很显然已经力不从心了,那么就需要——PXE网络装机及无人值守安装。
PXE网络装机及无人值守安装可以实现的功能有:
1.规模化:同时装配多台服务器;
2.自动化:安装系统、配置各种服务;
3.远程实现:不需要光盘、U盘等安装介质。
如图:
关于Windows PXE网络装机可以参考博文:Windows server 2016部署WDS服务
若要搭建PXE网络体系,必须要满足的条件有: 1.客户机的网卡支持PXE协议(集成BOOTROM芯片),且主板支持网络引导; 2.网络中必须有一台DHCP服务器为客户机分配IP地址、指定引导文件的位置; 3.服务器通过TFTP(简单文件传输协议)提供引导镜像文件的下载。其中第一个条件是硬件要求,目前绝大部分服务器和PC都能够提供此支持,只需在BIOS设置中允许从Network或LAN启动即可。
满足条件后,我们来实现这种功能!
PXE远程安装服务的基本部署过程:本次试验PXE远程安装服务器集成了CentOS 7 安装源、FTP服务、TFTP服务、DHCP服务,能够像客户机(裸机)发送PXE引导程序、Linux内核、启动菜单等数据,以及提供安装文件。
PXE远程安装服务的部署过程大致可以分成这样几步: 1.安装FTP服务并准备CentOS 7 安装源; 2.安装TFTP服务并启动; 3.准备Linux内核、初始化镜像文件; 4.准备PXE引导程序、启动菜单文件; 5.安装并启动DHCP服务; 6.验证PXE网络安装效果。接下来我们开始分步骤完成实验,并实现理想的效果!
1.安装FTP服务并准备CentOS 7 安装源通过搭建本地YUM的方式安装一系列服务。如果有朋友对YUM的搭建不明白可以参考博文:YUM仓库配置及命令详解
[root@localhost ~]# mount /dev/cdrom /mnt [root@localhost ~]# cd /etc/yum.repos.d/ [root@localhost yum.repos.d]# rm -rf * [root@localhost yum.repos.d]# vim a.repo [a] baseurl=file:///mnt gpgcheck=0 [root@localhost ~]# yum -y install vsftpd //安装FTP服务 [root@localhost ~]# mkdir /var/ftp/centos7 [root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/ //将光盘中的东西全部复制到FTP服务科匿名访问的目录中 [root@localhost ~]# systemctl start vsftpd //启动FTP服务 2.安装TFTP服务并启动TFTP(简单文件传输协议)服务所使用UDP的69端口。
[root@localhost ~]# yum -y install tftp-server //安装TFTP服务 [root@localhost ~]# vim /etc/xinetd.d/tftp //修改TFTP服务的配置文件,内容如下: service tftp { socket_type = dgram protocol = udp //TFTP服务采用udp传输协议 wait = yes user = root server = /usr/sbin/in.tftpd server_args = -s /var/lib/tftpboot //指定TFTP服务的根目录 disable = no //这项必须改成“no” per_source = 11 cps = 100 2 flags = IPv4 } [root@localhost ~]# systemctl start tftp //启动TFTP服务 3.准备Linux内核、初始化镜像文件用PXE网络安装的Linux内核、初始化文件可以从CentOS 7系统光盘中获得,位于images/pxeboot/目录下,分别是initrd.img和vmlinuz。将这两个文件复制到TFTP服务的根目录下。
[root@localhost ~]# cd /mnt/images/pxeboot/ [root@localhost pxeboot]# cp vmlinuz initrd.img /var/lib/tftpboot/ 4.准备PXE引导程序、启动菜单文件用于PXE网络安装的引导程序为pxelinux.0,由软件包syslinux提供。因此需要先安装syslinux。
[root@localhost ~]# yum -y install syslinux [root@localhost ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/启动菜单来指导客户机的引导过程,包括如何调用内核、如何加载初始化镜像。默认的启动菜单文件为default,应放置在TFTP根目录下的pxelinux.cfg子目录下,典型的启动菜单引导文件需手动创建,可以参考以下内容:
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg //在TFTP服务根目录下创建pxelinux.cfg目录 [root@localhost ~]# cd /var/lib/tftpboot/pxelinux.cfg/ [root@localhost pxelinux.cfg]# vim default //创建default菜单文件。文件内容如下: default auto prompt 1 label auto kernel vmlinuz append initrd=initrd.img method=ftp://192.168.1.1/centos7 label linux text kernel vmlinuz append text initrd=initrd.img method=ftp://192.168.1.1/centos7 label linux rescue kernel vmlinuz append rescue initrd=initrd.img method=ftp://192.168.1.1/centos7 其中个配置项的含义: default:用来指定默认入口名称; prompt:用来决定是否需要等待用户控制(1表示需要,0表示不需要); label:用来定义并分割启动项,文件中有三种引导模式: 分别是图形安装(默认)、文本安装、救援模式; kernel:用来指定所需内核; append:追加配置项; initrd:用来指定系统初始化文件; method:用来指定安装方式; 引导入口的个数及内容根据实际情况自定义。 5.安装并启动DHCP服务