在大规模的 Linux 应用环境中,如 Web 群集、分布式计算等,服务器往往并不配备光驱设备,在这种情况下,如何为数十乃至上百台服务器裸机快速安装系统呢?传统的 USB光驱、移动硬盘等安装方法显然已经难以满足需求。
PXE 按下电源
1:iso系统镜像 开机自检
2:FTP 读取BIOS中谁是引导设备(光驱,硬盘,U盘,网卡)
3:DHCP(rarp协议) 加载引导程序
4:TFTP(简单文件传输协议) 加载初始化镜像
内核文件,初始化镜像文件。 加载内核
引导程序,引导配置文件。 systemd(init)(守护进程)
进程树(tree)
本章将学习基于 PXE(Preboot eXecution Environment,预启动执行环境)技术的网络装机方法,并结合 Kickstart 配置实现无人值守自动安装。
上述服务器的批量部署方法,具备以下三个优点:
规模化:同时装配多台服务器;
自动化:安装系统,配置多种服务;
远程实现:不需要光盘,U盘等安装介质。
PXE是由intel公司开的网络引导技术,工作在client/server模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。若要搭建PXE网络体系,必须满足以下几个前提条件。
客户机的网卡支持PXE(集成BOOTROM芯片,)且主板型号支持网络引导。
网络中有一台DHCP服务器以便为客户机自动分配地址,指定引导文件位置。
服务器通过TFTP(trivial file transfer protocol,简单文件传输协议)提供引导镜像文件的下载。客户端还没有IP地址,用rarp协议(反向地址解析),以mac地址作为依据向DHCP服务器分一个IP地址。
其中,第一个条件实际上要硬件要求,目前绝大数服务器和大多数PC都能提供此支持,只需在BIOS设置中允许从NEWORK或LAN启动即可。下面将介绍PXE远程安装服务的基本部署过程。
搭建PXE远程安装服务器
本例的PXE远程安装服务器集成了centos7安装源,TFTP服务,DHCP服务,能够向客户机裸机发送PXE引导程序,LINUX内核,启动菜单等数据,以及提供安装文件。
1,准备centos7安装源
centos7的网络安装源一般通过HTTP,FTP协议发布,另外也支持NFS(network file system,网络文件系统)协议。
例如,若采用FTP协议发布安装源,可以在服务器上部署一个YUM软件仓库。
2,安装并启用TFTP服务
TFTP服务由tftp-server软件包提供,配置文件位于/etc/xinetd.d/tftp。配置时只要将“disable=yes”改为“disable=no”,然后启动TFTP服务即可。
3,准备LINUX内核,初始化镜像文件。
用于PXE网络安装的LINUX内核,初始化镜像文件可以从centos7系统光盘获得,分别为vmlinuz和initrd.img,位于文件夹images/pxeboot下,找到这两个文件并将其复制到tftp服务的根目录下。
4,准备PXE引导程序
用于PXE网络安装的引导程序为pxelinunx,0,由软件包syslinux提供,安装好软件包syslinux,然后将文件pxelinux.0也复制到tftp服务的根目录下。
5,安装并启用DHCP服务
由于PXE客户机通常是尚未安装的系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好DHCP服务来自动分配地址并告知引导文件位置。如PXE服务器的IP地址为192.168.4.254,DHCP地址池为192.168.4.100——192.168.4.200,即可以参考一下操作来搭建DHCP服务器。
从上述过程可以看到,与一般DHCP服务不同的是,配置文件增加了netx-server和filename这两行记录,分别用来指定TFTP服务器的地址和PXE引导过程的文件名。
6,配置启动菜单文件
启动菜单用来指导客户积极的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为default,应放置在tftp根目录的pxelinux.cfg子目录下,典型的启动菜单配置可参考以下操作手动建立。
上述配置记录中定义了三个引导入口,分别为图形安装(配置),文本安装,救援模式。其中,prompt用来设置是否等待用户选择;label用来定义并分隔启动项,kernrl和append用来定义引导参数。引导入口的个数及内容根据需要自行定义。例如,实现无人能值守安装时只需要一个入口就够了。
验证PXE网络安装
搭建好PXE远程安装服务器以后,就可以使用客户机进行安装测试了。对于新购买的服务器或PC裸机,一般不需要额外设置,若要为已有系统的主机重装系统,则可能需要修改BIOS设置,将“BOOT FIRST”改为“NETWORK ”或“LAN”,然后重启主机,若使用vmware创建的虚拟机进行测试,虚拟机内存至少需要2GB,否则在启动安装时会报错。
如果服务器配置正确,网络连接,PXE支持等都没有问题,则客户机重启后将自动配置IP地址,然后从TFTP服务器中获取引导程序pxelinux,0,并根据引导菜单配置意提示用户指定启动入口,如图6,1所示。
在提示子串“boot”后直接按enter键(或执行“auto”命令),将会进入默认的图形安装入口,若执行“linux text”命令,则进入文本安装入口,若执行“linux rescue”命令,则进入救援模式。
直接按neter键确认后将自动通过网络下载安装文件,并进入图形化安装程序界面,如图6,2所示。若能够成功到达这一步,说明PXE网络安装基本成功。
实现kickstart无人值守安装
上一节介绍了通过PXE技术远程安装centos7系统的方法,安装介质不在受限于光盘,移动硬盘等设置,大大提高了系统安装的灵活性,然而,安装期间仍需要手动选择语言,键盘类型,指定安装源等一系列交互操作,当需要批量安装时非常不方便。
本届将进一步学习如何实现无人值守自动安装,通过使用kickstart工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
准备安装应答文件:
在centos7系统中安装system-config-kickstart工具之后,即可通过图形化向导工具来配置安装应答文件。
如果用户对自动应答文件的配置比较熟悉,也可以直接编辑centos7安装后自动创建的应答文件(/root/anaconda-ks.cfg),根据需要适当修订后使用。
1,配置安装应答参数
通过桌面菜单“应用程序》系统工具》kickstart”即可打开“kickstart配置程序”窗口。
在“kickstart配置程序”窗口中,可以针对基本配置,安装方法,引导装载程序选项,分区信息,网络配置等各种安装设置进行指定,如图所示。
(1)基本配置及安装方法
“基本配置”可参考图6,3来指定。例如,将默认语言设定为“中文(简体)”,时区设为“Asia/shanghai”,根口令设为“pwd123”,高级配置中勾选“安装后重启”。
在“安装方法”界面中,应正确指定centos7的安装放大,如图6,4所示。若有用户验证信息也需一并指定。在“引导装载程序选项”界面中,选择安装新引导装载程序。
(2)分区信息
在“分区信息”界面中,需正确规划硬盘分区方案。例如,可划分一个500MB的/boot分区,4GB的/home分区,2GB的swap分区,将剩余空间划分给根分区,如图所示。
3)网络配置及防火墙配置
在“网络配置”界面中,添加一个网络设备“ens33”,将网络类型设为“DHCP”。
在“防火墙配置”界面中,可以选择禁用SElinux,禁用防火墙。
(4)软件包选择
centos7系统开始不在提供软件包的选择,如图6,6所示。如果需要安装软件包,可以根据需要将/root/anaconda-ks.cfg的软件包安装脚本复制到ks.cfg文件中,只需要复制%packages到%end部分即可,在%packages到%end之间,包含以@开头的软件包列表,将不需要的软件包删除,剩下的就是系统会自动安装的软件包。例如,仅保留以下内容即为采用最小化安装。
(5)安装脚本
在“预安装脚本”界面,“安装后脚本”界面中,可以分别添加在安装前,安装后自动运行的可执行语句。此项设置是服务器的自动化配置变得更加容易。例如。可以使客户机在完成安装后自动设置YUM软件仓库,如图6,7所示。需要注意的是,应确保所编写的代码能够正确执行,以免安装失败。
(6)其他信息
若没有特殊需求,在“验证”界面,“显示配置”界面中,保持默认设置就可以了。
2,保存自动应答文件 保存到/var/ftp中
选择“kickstart配置程序“窗口的”文件“》”保存“命令,指定目标文件夹,文件名,将配置好的应答参数保存为文本文件,如/root/ks.cfg。以后若要修改此应答配置,可以在”kickstart配置程序“窗口中打开进行调整,或者使用vi等文本编辑工具进行修改。
实现批量自动装机
有了自动安装的应答文件后,只要将其放置PXE安装服务器的FTP目录下,并适当修改引导菜单,就可以实现基于网络的批量自动装机了。
1,启用自动应答文件
在PXE远程安装服务器中,将上一节建立的应答文件复制到/var/ftp/centos7目录下,使客户机能够通过ftp://192.168.4.254/centos7/ks.cfg访问,然后编辑引导菜单文件default,添加ks引导参数以制定ks。cfg应答文件的URL路径。
2,验证无人值守安装
启用自动应答安装之后,当客户机每次以PXE方式引导时,将自动下载ks.cfg应答配置文件,然后根据其中的设置安装centos7系统,而无须手工干预,如图6,8所示,这样就可以同时为多台客户机安装系统了。
客户机安装完成以后,检查其YUM软件仓库配置,可以发现已经按照“安装后脚本”的设置自动建立了/etc/yum.repos,d/centos7.repo文件。
注意:如果是在vmware虚拟机环境下,需要禁用vmware的dhcp功能,否则安装文件将无法加载。