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 kB     00: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 root      441 9月   6 2017 TRANS.TBL
-rwxr-xr-x 1 root root  5877760 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 配置实现无人值守自动安装_第1张图片
7.2、PXE安装过程

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

7.3、PXE安装完成

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

三、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 配置实现无人值守自动安装_第5张图片
Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装_第6张图片
Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装_第7张图片

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

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

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

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 配置实现无人值守自动安装_第16张图片Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装_第17张图片
Linux中服务器端部署pxe(Preboot eXecution Environment)远程安装服务为客户机远程安装系统并结合 Kickstart 配置实现无人值守自动安装_第18张图片
验证无人值守安装后脚本是否完成

[root@localhost ~]# vi /etc/yum.repos.d/centos7.repo 
[base]
name=CentOS7.6
baseurl=ftp://20.0.0.20/centos7
enabled=1
gpgcheck=0                                                  //脚本编译完成

你可能感兴趣的:(Linux网络服务)