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 启动即可。
- 规模化:同时装配多台服务器;
- 自动化:安装系统、配置各种服务;
- 远程实现:不需要光盘、 U 盘等安装介质。
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设置首起项
文章图片
文章图片
文章图片
7.3、PXE安装完成
文章图片
三、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应用程序编辑
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
文章图片
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 配置实现无人值守自动安装】
文章图片
文章图片
文章图片
验证无人值守安装后脚本是否完成
[root@localhost ~]# vi /etc/yum.repos.d/centos7.repo
[base]
name=CentOS7.6
baseurl=ftp://20.0.0.20/centos7
enabled=1
gpgcheck=0//脚本编译完成