Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装


PXE远程安装服务

  • 一、PXE服务的介绍
          • 1、什么是PXE及PXE服务器
          • 2、搭建 PXE 服务,必须满足的前提
          • 3、PXE服务的优点
          • 4、PXE工作原理
  • 二、搭建PXE远程安装服务器安装Linux系统
          • 1、搭建PXE远程安装服务器的实验环境
          • 2、准备Linux安装源
          • 3、安装并启用FTP和TFTP服务
          • 4、准备Linux内核、初始化镜像文件
          • 5、PXE的引导程序和启动菜单文件
          • 6、安装并启用DHCP服务
      • 7、验证PXE网络安装
            • 7.1、更改客户端的首选启动项
            • 7.2、PXE安装过程
            • 7.3、PXE安装完成
  • 三、Kickstart 配置实现无人值守自动安装
          • 1、准备安装应答文件
            • 2、启用问答文件
            • 3、验证无人值守安装

一、PXE服务的介绍 1、什么是PXE及PXE服务器 PXE 是由 Intel 公司开发的网络引导技术,工作在 Client(客户机)/Server (服务器)模式,允许客户机通过网络从远程服务器下载引导镜像,并加载安装文件或者整个操作系统。PXE可以引导和安装Windows,linux等多种操作系统。
PXE 远程安装服务器集成了 CentOS 7 安装源、 TFTP 服务、 DHCP 服务,能够向客户机裸机发送 PXE 引导程序、 Linux 内核、启动菜单等数据,以及提供安装文件。
2、搭建 PXE 服务,必须满足的前提
  • 客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。
  • 网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。
  • 服务器通过 TFTP(Trivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。
    注:第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network 或 LAN 启动即可。
3、PXE服务的优点
  • 规模化:同时装配多台服务器;
  • 自动化:安装系统、配置各种服务;
  • 远程实现:不需要光盘、 U 盘等安装介质。
4、PXE工作原理 1、Client开机,发广播向DHCP服务器请求IP地址,PXE Server上的DHCP服务接收到请求后,验证Client的MAC等信息通过后,发送一个可用IP地址给Client,并将启动文件pxelinux.0的存放地址(TFTP提供)发送给Client
2、得到地址的Client向TFTP服务器请求pxelinux.0文件,PXE Server(TFTP服务)向Client发送pxelinux.0的文件大小信息,Client验证如果文件大小信息可接受,便返回同意信息,之后TFTP服务向Client发送pxelinux.0文件
3、Client执行pxelinux.0文件,之后向TFTP请求配置信息文件,(TFTP服务工作目录中的pxelinux.cfg/default),TFTP服务把配置文件发给Client
4、Client向TFTP服务请求Linux内核和根文件系统,TFTP服务将Linux内核(vmlinuz)和根文件系统(initrd.img)文件传给Client
5、Client启动Linux内核,之后通过http协议得到kickstart以及系统安装文件(ks.cfg),并根据kickstart文件自动安装CentOS(通过Kickstart 配置实现无人值守自动安装)
二、搭建PXE远程安装服务器安装Linux系统 1、搭建PXE远程安装服务器的实验环境 首先有两台显卡带有PXE协议的服务器,一台搭建PXE服务作为PXE远程安装服务器并且已经安装好Linux操作系统,一台用作客户机使用PXE服务器安装Linux系统。
服务器的开局已经做好查看开局配置连接
2、准备Linux安装源
[root@localhost ~]# mkdir -p /var/ftp/centos7//创建一个放安装文件的目录 [root@localhost ~]# cp -rf /mnt/* /var/ftp/centos7/ //将挂载到mnt目录下的所有光盘文件复制到刚创建的目录中

3、安装并启用FTP和TFTP服务
[root@localhost ~]# yum -y install vsftpd//安装FTP服务 已加载插件:fastestmirror, langpacks centos| 3.6 kB00:00 Loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ---> 软件包 vsftpd.x86_64.0.3.0.2-22.el7 将被 安装 --> 解决依赖关系完成 ...... 已安装: vsftpd.x86_64 0:3.0.2-22.el7 完毕! [root@localhost ~]# systemctl start vsftpd//启动FTP服务 [root@localhost ~]# systemctl enable vsftpd//开机自动启动FTP服务 [root@localhost ~]# yum -y install tftp-server.x86_64//安装TFTP服务 ......... 已安装: tftp-server.x86_64 0:5.2-13.el7 完毕! [root@localhost ~]# vi /etc/xinetd.d/tftp//编辑TFTP的配置文件,设置启动项 //TFTP服务由tftp-server软件包提供,默认由xinetd超级服务进行管理,因此配置文件位于/etc/xinetd.d/tftp ........ server_args= -s /var/lib/tftpboot//指定的TFTP根目录 disable= no//将yes改为no开机自启 ....... [root@localhost ~]# systemctl start tftp//开启tftp服务

4、准备Linux内核、初始化镜像文件 用于 PXE 网络安装的 Linux 内核(vmlinuz)、根文件系统( initrd.img)可以从 挂载的光盘获得,位于文件夹/mnt/images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下。
[root@localhost ~]# cd /mnt/images/pxeboot///进入这个这个目录 [root@localhost pxeboot]# ls-l//查看目录 总用量 53041 -rw-r--r-- 1 root root 48434768 9月5 2017 initrd.img//根文件系统( initrd.img) -r--r--r-- 1 root root441 9月6 2017 TRANS.TBL -rwxr-xr-x 1 root root5877760 8月23 2017 vmlinuz// Linux 内核(vmlinuz) [root@localhost pxeboot]# cp vmlinuz /var/lib/tftpboot//复制文件到TFTP的根目录下 [root@localhost pxeboot]# cp initrd.img /var/lib/tftpboot

5、PXE的引导程序和启动菜单文件 5.1、用于 PXE 网络安装的引导程序为 pxelinux.0,由软件包 syslinux 提供。安装软件包syslinux,默认安装目录为/usr/share/syslinux/,然后将目录中文件 pxelinux.0 也复制到 tftp 服务的根目录下。
注:引导程序(Boot Loader):是存储在 MBR(主引导记录)或 GUID(全局唯一标识符)分区表中的一个小程序,用于帮助把操作系统装载到内存中。如果没有引导程序,那么你的操作系统将不能够装载到内存中。
[root@localhost pxeboot]# yum -y install syslinux ...... 已安装: syslinux.x86_64 0:4.05-13.el7 完毕! [root@localhost pxeboot]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ //复制文件到TFTP的根目录下

5.2、启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载初始化镜像。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下。启动菜单配置通过手动建立。
启动菜单有三个引导入口,分别为图形安装(默认)、文本安装、救援模式。其中, prompt 用来设置是否等待用户选择; label 用来定义并分隔启动项; kernel 和 append用来定义引导参数。
[root@localhost ~]# mkdir /var/lib/tftpboot/pxelinux.cfg//创建一个启动菜单引导的目录 [root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default//编辑启动菜单引导的配置文件 default auto//指定默认接入口名称 prompt 1//1 表示等待用户选择安装0表示不等待用户选择安装,自动安装时为0 label auto//图形安装(默认安装) kernel vmlinuz//引导加载内核 append initrd=initrd.img method=ftp://20.0.0.20/centos7 // 引导加载根文件系统镜像文件,以及文件获取的方式和位置 label linux text//文本安装 kernel vmlinuz append text initrd=initrd.img method=ftp://20.0.0.20/centos7 label linux rescue//救援模式 kernel vmlinuz append rescue initrd=initrd.img method=ftp://20.0.0.20/centos7

6、安装并启用DHCP服务 由于 PXE 客户机通常是尚未装系统的裸机,因此为了与服务器取得联系并正确下载相关引导文件,需要预先配置好 DHCP 服务来自动分配地址并告知引导文件位置。 PXE 服务器的 IP 地址为 20.0.0.20, DHCP 地址池为 20.0.0.55~20.0.0.155,子网掩码255.255.255.0。
[root@localhost ~]# yum -y install dhcp//安装dhcp服务 ...... 已安装: dhcp.x86_64 12:4.2.5-58.el7.centos 完毕!//安装完成 [root@localhost ~]# vi /etc/dhcp/dhcpd.conf subnet 20.0.0.0 netmask 255.255.255.0 {//定义dhcp服务的作用域 option routers 20.0.0.20; //指定当前作用域的网关 option domain-name-servers 8.8.8.8; //指定当前作用域DNS服务器 range 20.0.0.100 20.0.0.200; //指定当前作用域中可供分配的IP地址范围 next-server 20.0.0.20; //指定TFTP服务器的地址 filename "pxelinux.0"; //指定PXE引导程序的文件名 } [root@localhost ~]# systemctl start dhcpd//开启dhcp服务 [root@localhost ~]# systemctl enable dhcpd//设置为开机自启

7、验证PXE网络安装
7.1、更改客户端的首选启动项 搭建好 PXE 远程安装服务器以后,就可以使用客户机进行安装测试了。
  • 对于新购买的服务器或 PC 裸机,一般不需要额外设置;
  • 若要为已有系统的主机重装系统,则可能需要修改BIOS 设置,将“Boot First”设为“NETWORK”或“LAN”,然后重启主机;
  • 若使用 VMware创建的虚拟机进行测试,虚拟机内存至少需要 2GB,否则在启动安装时会报错。
    首先将客户机开机,进入BIOS设置首起项
    Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
    文章图片
7.2、PXE安装过程 Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

7.3、PXE安装完成 Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

三、Kickstart 配置实现无人值守自动安装 通过 PXE 技术远程安装 CentOS 7 系统的方法,安装介质不再受限于光盘、移动硬盘等设备,大大提高了系统安装的灵活性。然而,安装期间仍需要手动选择语言、键盘类型、指定安装源等一系列交互操作,当需要批量安装时非常不方便。通过使用 Kickstart 工具配置安装应答文件,自动完成安装过程中的各种设置,从而无须手动干预,提高网络装机效率。
1、准备安装应答文件 在系统中安装 system-config-kickstart 工具之后,即可通过图形化向导工具来配置安装应答文件。如果用户对自动应答文件的配置比较熟悉,也可以直接编辑安装后自动创建的应答文(/root/anaconda-ks.cfg),根据需要适当修订后使用。
[root@localhost ~]# yum -y install system-config-kickstart//安装图形界面kickstart应用程序 已加载插件:fastestmirror, langpacks Loading mirror speeds from cached hostfile 正在解决依赖关系 --> 正在检查事务 ...... 已安装: system-config-kickstart.noarch 0:2.9.6-1.el7 作为依赖被安装://YUM会自动安装依赖关系包 gnome-python2.x86_64 0:2.28.1-14.el7 ...... 完毕!//安装成功

打开kickstart应用程序编辑
Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

2、启用问答文件 有了自动安装的应答文件之后,只要将其放置 PXE 安装服务器的 FTP 目录下,并适当修
改引导菜单,就可以实现基于网络的批量自动装机了。
[root@localhost ~]# cp ks.cfg /var/ftp/centos7///将文件复制到FTP目录下 [root@localhost ~]# vi /var/lib/tftpboot/pxelinux.cfg/default//编辑启动菜单引导文件 default auto prompt 0//0表示不等待用户选择 label auto kernel vmlinuz append initrd=initrd.img method=ftp://20.0.0.20/centos7 ks=ftp://20.0.0.20/ks.cfg //获取自动安装应答文件的方式和端口 //最小化安装需要在ks.cfg文件中最后一行下面添加配置信息(重要)不添加无法自动安装 [root@localhost ~]# vi /var/ftp/centos7/ks.cfg .............%packages @^minimal %end //图形界面安装需要在ks.cfg文件中最后一行下面添加配置信息(重要)不添加无法自动安装 [root@localhost ~]# vi /var/ftp/centos7/ks.cfg .............//配置信息可以从图形界面安装的系统中的家目录下的anaconda-ks.cfg 文件中找到复制到ks.cfg中 %packages @^gnome-desktop-environment @base @core @desktop-debugging @development @dial-up @directory-client @fonts @gnome-desktop @guest-agents @guest-desktop-agents @input-methods @internet-browser @java-platform @multimedia @network-file-system-client @networkmanager-submodules @print-client @x11 kexec-tools%end%addon com_redhat_kdump --enable --reserve-mb='auto'%end%anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end

3、验证无人值守安装 【Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装】Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片
Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装
文章图片

验证无人值守安装后脚本是否完成
[root@localhost ~]# vi /etc/yum.repos.d/centos7.repo [base] name=CentOS7.6 baseurl=ftp://20.0.0.20/centos7 enabled=1 gpgcheck=0//脚本编译完成

    推荐阅读