PXE无人值守操作系统部署

PXE系统部署

 

 

1. 工作原理概述

1.1. 工作原理

PXE 严格来说并不是一种安装方式,而是一种引导的方式。进行 PXE 安装的必要条件是要安装的计算机中包含一个PXE 支持的网卡(NIC),即网卡中必须要有 PXE Client

 

PXE Pre-boot Execution Environment)协议使计算机可以通过网络启动。协议分为 client server 端,PXE client 在网卡的 ROM 中,当计算机引导时,BIOS PXE client 调入内存执行,由 PXE client 将放置在远端的文件通过网络下载到本地运行。

运行 PXE 协议需要设置 DHCP 服务器 和 TFTP 服务器。DHCP 服务器用来给 PXE client(将要安装系统的主机)分配一个 IP 地址,由于是给 PXE client 分配 IP 地址,所以在配置 DHCP 服务器时需要增加相应的 PXE 设置。

此外,在 PXE client ROM 中,已经存在了 TFTP ClientPXE Client 通过 TFTP 协议到 TFTP Server 上下载所需的文件。

1.2. 基本的构建过程

1.2.1. PXE服务器和客户机的工作过程:

1PXE客户机发出DHCP请求,向DHCP服务器申请IP地址。

2DHCP服务器响应PXE客户机的请求,自动从IP地址池中分配一个IP地址给PXE客户机,并且告知PXE客户机:TFTP服务器的IP地址和PXE引导程序文件pxelinux.0,默认在TFTP共享目录/var/lib/tftpboot/

3PXE客户机向TFTP服务器发起获取pxelinux.0引导程序文件的请求。

4TFTP服务器响应PXE客户机的请求,将其共享的pxelinux.0文件传输给PXE客户机。

5PXE客户机通过网络来启动到系统安装主界面。

6PXE客户机向文件共享服务器(ftphttpnfs等)发起获取centoswindows系统安装文件的请求。

7文件共享服务响应PXE客户机的请求,将共享的系统安装文件传输给PXE客户机。

8PXE客户机进入到安装提示向导界面,用户需要手动来完成系统安装的操作

2. PXE-server服务端搭建

2.1. 环境准备

2.1.1. 本地虚拟机部署Centos7.6

本地测试环境部署,使用vmware workstation16进行虚拟机安装测试。这里安装了centos7.6本地虚拟机,采用最小化安装配置两张网卡,其中一张作为本机网络DHCP服务器使用

 

2.1.2. 本地软件源配置

epel.tar.gz 无法解压,暂时挂在了iso镜像到虚拟机中作为yum源使用

执行以下命令进行挂载

 

$ mount /dev/cdrom  /mnt

$ cat > /etc/yum.repos.d/iso.repo << EOF

> [iso]

> name=iso

> baseurl=file:///mnt

> gpgcheck=0

> EOF

$ yum cleanall

$ yum makecache

 

 

2.1.3. 主要运用软件

操作系统(CentOS Linux release 7.6.1810)

软件工具(kickstart、dhcp、tftp-server、tftp、vsftpd)

说明:system-config-kickstart用于图形化操作自动生成*.ks.cfg文件

2.2. PXE服务安装

2.2.1. dhcp 安装

执行以下命令安装服务

yum install dhcp -y
修改配置文件,增加dhcppxe服务支持
vim /etc/dhcp/dhcpd.conf
添加以下内容到配置文件中,具体配置根据环境修改

subnet 192.168.42.0 netmask 255.255.255.0 {

range 192.168.42.20 192.168.42.50; #制定可分配的ip地址池

option routers 192.168.42.128;

option domain-name-servers 6.6.6.6;

next-server 192.168.42.128; #指定TFTP服务器地址

filename "pxelinux.0" # 指定要下载的引导程序

}

 

2.2.2. tftp-server安装

为客户端远程提供内核,引导程序

2.2.2.1. 安装tftp-server软件包

yum install tftp-server -y
vim /etc/xinetd.d/tftp


disable 设置 no ,开启tftp服务

tftp服务用于 PXE 网络安装的 Linux 内核、驱动文件可以从 CentOS 7 系统光盘获得, 分别为 vmlinuz initrd.img,位于光盘目录 images/pxeboot 下。找到这两个文件并将其复制到 tftp 服务的根目录下

 

2.2.2.2. 初始化文件及引导文件获取

准备内核文件vmlinuz,初始化镜像initrd.img,iso镜像中获取引导文件,放到共享目录中

执行以下命令获取内核文件及初始化镜像:
cd /mnt/images/pxeboot/
#内核文件 内核初始化镜像文件/var/lib/tftpboot/ 站点
cp initrd.img vmlinuz /var/lib/tftpboot/

 

vmlinuz:是可引导的、压缩的内核。“vm”代表“Virtual Memory”Linux 支持虚拟内存,不像老的操作系统比如DOS640KB内存的限制。Linux能够使用硬盘空间作为虚拟内存,因此得名“vm”vmlinuz是可执行的Linux内核,它位于/boot/vmlinuz,它一般是一个软链接。

initrd:“initial ramdisk”的简写(系统初始化文件)。一般被用来临时的引导硬件到实际内核vmlinuz能够接管并继续引导的状态。initrd.img主要是用于加载ext4等文件系统及scsi设备的驱动。比如,使用的是scsi硬盘,而内核vmlinuz中并没有这个scsi硬件的驱 动,那么在装入scsi模块之前,内核不能加载根文件系统,但scsi模块存储在根文件系统的/lib/modules下。为了解决这个问题,可以引导一个能够读实际内核的initrd内核并用initrd修正scsi引导问题。

 

准备引导程序文件pxelinux.0(依赖于syslinux

pxelinux.0是个二进制文件,主要作用相当于一个系统安装步骤的指引,引导客户端如何安装系统

执行以下命令安装selinux

yum -y install syslinux

#查找pxe引导程序的位置

rpm -ql syslinux | grep pxelinux

 

#拷贝到tftp的根目录下,系统引导文件

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 

 

2.2.2.3. 安装xinetd

tftp服务被xinetd托管,默认没有安装xinetd,xinetd是新一代的网络守护进程服务程序,又叫超级Internet服务,经常用来管理轻量级的Internet服务,xinetd提供类似于inetd+tcp_wrapper的功能,但是更加强大和安全

安装命令:

yum install xinetd -y

执行以下命令启动服务:

systemctl start xinetd
systemctl enable xinetd
systemctl start tftp
systemctl enable tftp

2.2.3. vsftpd安装

用来放置镜像,通过ftp访问镜像安装

执行以下命令安装vsftpd

yum install vsftpd -y

将镜像复制其中

cp -rf /mnt/* /var/ftp/centos7

# 启动服务

systemctl start vsftpd

2.2.4. 配置启动菜单文件

启动菜单用来指导客户机的引导过程,包括如何调用内核,如何加载驱动。默认的启动菜单文件为 default,应放置在 tftp 根目录的 pxelinux.cfg 子目录下pxelinux.0这个文件决定好的引导文件路径/var/lib/tftpboot/pxelinux.cfg/default)

执行以下命令:

默认pxelinux.cfg是没有的需要手动创建,注意它是一个目录而非文件虽然是以.cfg结尾

mkdir /var/lib/tftpboot/pxelinux.cfg/

# 创建启动菜单(pxelinux.cfg/default

cd  /var/lib/tftpboot/pxelinux.cfg/

touch default

以下为纯手工配置default菜单文件说明样例

default auto # 指定默认入口名称 ,对应下面的label auto

prompt 0 # 设置是否等待用户选择,1 表示等待用户控制,0表示不等待用户控制,安装时会出现boot:如果按回车表示选择auto模式

label auto # 默认的图形安装

kernel vmlinuz

append initrd=initrd.img method=ftp://192.168.42.128/centos7 # method必须指定网络路径

label linux text # 文本安装模式,出现boot:时输入linux text

kernel vmlinuz

append text initrd=initrd.img method=ftp://192.168.42.128/centos7

label linux rescue # 救援模式,出现boot:时输入linux rescue

kernel vmlinuz

append rescue initrd=initrd.img method=ftp://192.168.42.128/centos7

 

2.3. Kickstart无人值守安装

一个无人值守的图形化配置程序,可以更方便的生成自动引导安装文件

2.3.1. CentOS图形化安装

由于我们虚拟机为最小化安装,需要先安装图形化桌面才能运行此工具

执行以下命令,安装图形化桌面:

yum groupinstall "X Window System" -y

yum groupinstall "GNOME Desktop" -y

init 5  # 切换GUI桌面

2.3.2. 安装Kickstart

yum install system-config-kickstart -y  # 安装kickstart工具

 

2.3.3. 无人值守引导文件ks.cfg

 

可以根据以上图形化的引导项,进行针对配置

因为是内网,无法进行软件包选择,所以需要手动指定下要安装的软件包,把以下内容,添加到文件中,表示最小化安装

%packages

@^minimal

%end

 

图中%post%end中间,放置的是安装完成后要执行的脚本,可根据实际情况修改

以上内容表示,完成后会自动下载并安装openjdk环境

2.3.4. 修改启动菜单

cd /var/lib/tftpboot/
cd pxelinux.cfg
vi default
ftp地址后面添加以下内容
ks=ftp://192.168.42.128/ks.cfg

 

2.3.5. 重启服务

systemctl restart dhcpd
systemctl restart tftp
systemctl restart vsftpd

 

3. 无人值守客户端

3.1. 前提条件

客户机的网卡支持 PXE 协议(集成 BOOTROM 芯片),且主板支持网络引导。

网络中有一台 DHCP 服务器以便为客户机自动分配地址、指定引导文件位置。

服务器通过 TFTPTrivial File Transfer Protocol,简单文件传输协议)提供引导镜像文件的下载。

其中,第一个条件实际上是硬件要求,目前绝大多数服务器和大多数 PC 都能够提供此支持,只需在 BIOS 设置中允许从 Network LAN 启动即可。

3.2. 新建虚拟机测试

注意:因为是测试环境,目前提供pxe服务的网卡为仅主机模式,所以新建虚拟机也要选择仅主机模式

 

 

测试已经可以进入引导模式,并成功安装系统

posted @   不着陆的牛  阅读(382)  评论(0编辑  收藏  举报
编辑推荐:
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示