Linux PXE详解

2023-11-01

今天我们继续给大家介绍Linux相关内容,本文主要内容是PXE系统的部署,并且通过实战,完成PXE环境的实战部署。
由于PXE环境牵扯到的服务众多,因此,您需要了解FTP、DHCP等服务的原理、安装、部署等知识。如果您对此还存在困惑,欢迎查阅下列文章:
Linux DHCP服务详解
Linux vsFTPd服务详解——vsFTPd基础知识
Linux vsFTPd服务详解——本地用户登录实战

一、PXE环境介绍

PXE,即Pre-boot Execution Environment,即预引导执行环境,通过PXE,可以实现网络引导与安装操作系统。
对于目前计算机而言,大都默认配置有支持PXE功能,当启动计算机时,如果我们设置网络启动,则就会运行PXE客户端程序,企图寻找局域网中的PXE环境。
PXE环境需要与DHCP和TFTP环境配合使用,PXE客户端启动后,由于没有操作系统引导,因此首先需要运行DHCP客户端程序,在局域网中寻找本地的DHCP服务器,并获取自身的IP地址和下一条IP地址。下一条地址指向的是一个FTP服务器或HTTP服务器或NFS服务器,PXE客户端会从下一条服务器上下载系统安装所必须的文件,包括系统安装文件和ks.cfg文件。
ks.cfg文件是Kickstart生成的一个记录文件,在该文件中记录在手动安装系统时必须人工操作干预的选项,如root用户密码,磁盘分区等等。正是因为有了ks.cfg文件,在进行操作系统安装的时候,我们才完全不需要手动干预,最后在ks.cfg文件的指引下完成操作系统的安装。

二、PXE系统架构

PXE系统架构如下所示:
在这里插入图片描述
在上述架构中,TFTP服务器用于存放PXE相关的文件,FTP、HTTP或者是NFS存放系统安装文件。

三、PXE系统辅助服务安装与配置

接下来,我们来进行PXE配置的实战,在本例中,PXE环境中DHCP、vsFTPd、TFTP、PXE等环境全部位于一台服务器上,为192.168.136.101,PXE客户端为一个全新的虚拟机,与192.168.136.101处于同一网段内。
接下来,我们首先来进行PXE辅助服务的安装与配置。

(一)DHCP服务安装与配置

DHCP服务主要是为PXE客户端在启动时提供IP地址,以及下一条信息。DHCP服务安装如下:

yum install -y dhcp

安装完成后,我们需要修改DHCP服务的配置文件,可以借助/usr/share/doc/dhcp-4.2.5/dhcpd.conf.example文件模板,熟悉其配置文件写法的同学也可以直接写DHCP配置文件,不管如何配置,/etc/dhcp/dhcpd.conf文件最终如下所示:
在这里插入图片描述
其中,next-server是vsFTPd服务的IP地址,filename为PXE文件的文件名,该文件名必须与后文中PXE文件名完全一致。这两处配置旨在告诉PXE客户端,当拿到可用的IP地址后,应到与192.168.136.101寻找系统安装文件pxelinux.0。
完成上述配置后,就可以启动DHCP服务了,该服务启动命令如下:

syetemctl start dhcpd

(二)TFTP服务安装与配置

TFTP服务主要是为PXE客户端提供一些小文件下载服务,与FTP服务的区别在于,TFTP在小文件传输上更有优势,TFTP服务安装命令如下:

yum install -y xinetd tftp tftp-server

在TFTP服务的安装过程中,由于TFTP服务依赖于xinetd,因此在安装前需要首先安装xinetd。
TFTP服务在运行前,需要修改配置文件,该服务配置文件为/etc/xientd.d/tftp,主要是将第14行disable处由yes该为no,修改完成后的配置文件如下所示:
在这里插入图片描述
在上述配置文件的第13行,server_args后面的是TFTP服务的主目录,我们在后面的配置中,需要把一些PXE启动文件放在该目录下。
上述修改完成后,就可以启动tftp服务了,需要注意,我们应该首先启动xinetd服务,然后再启动tftp服务,启动命令如下:

systemctl start xinetd
systemctl start tftp

启动完成后,TFTP服务会监听UDP的69端口,如下所示:
在这里插入图片描述

(三)vsFTPd服务安装与配置

vsFTPd服务实际上就是FTP服务,vsFTP服务安装命令如下:

yum install -y vsftpd

在本次实战中,我们使用vsFTPd服务的默认目录——/var/ftp/pub,我们在这里不对vsFTPd服务进行配置,因为在默认情况下,vsFTPd服务允许匿名用户登录,因此,我们只需要开启vsFTPd服务即可,vsFTPd服务开启命令如下:

systemctl start vsftpd

三、PXE和kickstart安装与配置

安装PXE和kickstart,我们要首先安装两个软件,分别是syslinux和system-config-kickstart,第一个用于用于pxelinux.0文件的生成,第二个用于以图形化的方式生成ks.cfg文件。安装命令如下:

yum install -y syslinux system-config-kickstart

接下来,我们要开始正式部署PXE和kickstart环境了,首先,我们把系统启动的关键文件复制到TFTP的目录中,TFTP的目录为/var/lib/tftpboot/(默认),有些文件是在Linux的安装盘内,有些文件是在安装syslinux软件后才有的,假设我们把Linux的安装盘挂载到了/mnt/目录下,则相关命令如下:

cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
cp /mnt/images/pxeboot/vmlinux /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg/
cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
chmod 644 /var/lib/tftpboot/pxelinux.cfg/default

接下来,我们还需要对/var/lib/tftpboot/pxelinux.cfg/default文件进行修改,该文件打开后,修改第一行default vesamenu.c32为default linux,然后修改第64行
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet为 append initrd=initrd.img inst.repo=ftp://192.168.136.210:/pub inst.ks=ftp://192.168.136.210/ks.cfg。修改部分的内容如下所示:
在这里插入图片描述
在这里插入图片描述
注意,在上图中,64行的inst.repo必须与FTP服务的系统镜像挂载目录相一致,inst.ks必须与ks.cfg文件位置相一致,这两点后期我们都会进行配置。
完成上述所有操作后,我们需要做的是ks文件的生成,由于是system-config-kickstart是图形化界面,因此如果我们运行该命令,要求启动必须安装了图形化桌面,但是,由于图形化桌面过于复杂,且过于消耗系统资源,因此我们也可以采取使用gdm软件配合xstart软件的方式来代替。
如果我们采用gdm+xstart软件配合的方式,则在虚拟机上需要安装gdm软件,安装命令如下:

yum install -y gdm

在客户端上,我们需要安装xmanager,该软件内就含有xstart,该软件可以自行搜索下载。
在运行该软件前,我们最好先把系统镜像盘挂载到pub目录下,且本地的yum源只保留指向该pub目录的repo文件,否则在该软件启动后的软件包选择会提示路径错误。
上述两个软件安装完成后,我们打开xstart,并采用如下配置:
在这里插入图片描述
点击运行后,就可以在本地计算机上模拟图形化页面进行配置了,成功打开后页面如下所示:
在这里插入图片描述
在这里,我们需要对ks文件进行一些参数上的配置,在PXE环境中,ks文件主要作用是指定在系统安装过程中,需要人为干预的内容,因此,在ks文件的配置过程中,我们要配置的就是系统安装过程中的一些参数,必要配置如下,其他配置感兴趣的同学可以自行探索:
1、设置root用户密码
在这里插入图片描述
2、设置FTP服务器的IP地址和目标目录
在这里插入图片描述
3、设置引导记录
在这里插入图片描述
4、设置分区
在这里插入图片描述
5、添加网卡设备
在这里插入图片描述
6、设置安装系统
在这里插入图片描述
上述所有步骤完成后,点击右上角文件,就可以保存生成ks.cfg文件了,只要我们生成了一个ks文件,我们就可以把该ks文件保存下来,以后在配置时就可以不使用该软件,直接复制修改该ks文件即可。
最后,我们把生成的ks文件放在/var/ftp/目录下即可,此处必须和前文default文件处的文件名称对应。
在完成上述所有操作后,我们就可以尝试启动全新的没有系统的PXE客户端,观察其网络安装操作系统的现象了。

四、注意事项

在完成上述配制后,如果您的PXE系统运行出现问题,可以查阅本部分,进行排错。
1、防火墙问题
PXE系统在运行时,最好关闭防火墙,以防止防火墙拒绝客户端的链接从而导致出错,防火墙关闭命令:

systemctl stop firewalld
iptables -F
setenforc 0

2、system-config-kickstart运行问题
在system-config-kickstart搭配xstart运行时,可能在软件包选择部分出现问题,找不到可用的软件包,该问题的出现是system-config-kickstart文件找不到系统镜像中的软件包,因此最好在该软件运行前,配置好系统安装镜像的挂载,并且在本地yum源中,移除其他的YUM源,只保留指向该镜像的YUM源。此外,该repo文件的名称最好为base,并且在完成上述操作后,最好执行命令:

yum cleanall
yum makecache

刷新一下YUM缓存。
3、PXE客户端内存问题
在实验中,我还发现了一个有趣的现象,如果是使用系统安装盘安装Linux系统,则在虚拟机中给1个G的内存是完全足够的,但是如果采用PXE安装系统,则1个G的内存却不足,导致在安装时报错,因此,我们在使用Vmware虚拟机在进行本次实验时,为了保证实验成功,PXE客户端可以考虑给2个G的内存。
原创不易,转载请说明出处:https://blog.csdn.net/weixin_40228200

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux PXE详解 的相关文章

  • 在 execl 在输出中不可见之前打印

    include
  • linux新手关于嵌入式linux设备驱动的问题

    最近在研究linux驱动 正如我读过的那些文章所说 设备驱动程序模块很可能会根据内核的需要自动加载 因此我想知道内核如何确定为特定设备 声卡 I2C spi 设备 等 我也无法彻底想象内核如何在启动时检测每个硬件设备 与嵌入式linux相关
  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • Pthreads - 高内存使用率

    我正在用 C 编写一些东西 在 256Mb 系统上的 Linux 中创建大量 Pthread 我通常有 200Mb 的免费空间 当我使用少量线程运行该程序时 它可以工作 但是一旦我让它创建大约 100 个线程 它就会出现错误 因为系统内存不
  • 如何通过 makefile 在 Linux 上安装程序? [复制]

    这个问题在这里已经有答案了 可能的重复 Linux Unix make install 应该包含什么 https stackoverflow com questions 528399 what should linux unix make
  • 如何在Linux上用C/C++编写Web服务器[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我正在考虑在 Linux 平台上开发一个小型 阅读 初级 Web 服务器 但我不知道从哪里开始 我希望它能够做的是 监听特定端口 接受
  • 任何退出 bash 脚本但不退出终端的方法

    当我使用exitshell 脚本中的命令 该脚本将终止终端 提示符 有什么方法可以终止脚本然后停留在终端中吗 我的剧本run sh预计通过直接获取或从另一个脚本获取来执行 编辑 更具体地说 有两个脚本run2 sh as run sh ec
  • 如何获取与 shell 中的文件名模式匹配的所有文件的总文件大小?

    我正在尝试仅使用 shell 来计算与文件名模式匹配的所有文件 在目录树中 的总大小 以字节为单位 这是我到目前为止所拥有的 find name undo exec stat c s awk 总计 1 END 打印总计 有没有更简单的方法来
  • bash 将输出重定向到文件,但结果不完整

    重定向命令输出的问题已经被问过很多次了 但是我有一个奇怪的行为 我使用的是 bash shell debian 版本 4 3 30 1 release 并尝试将输出重定向到文件 但并非所有内容都记录在文件中 我尝试运行的 bin 文件是 l
  • 为什么 OS X 和 Linux 之间的 UTF-8 文本排序顺序不同?

    我有一个包含 UTF 8 编码文本行的文本文件 mac os x cat unsorted txt foo foo 津 如果它有助于重现问题 这里是文件中确切字节的校验和和转储 以及如何自己生成文件 在 Linux 上 使用base64 d
  • Python glob,操作系统,相对路径,将文件名放入列表中[重复]

    这个问题在这里已经有答案了 我正在尝试创建一个目录中所有文件的列表 其中文件名以 root 结尾 在阅读了论坛中的一些文章后 我尝试使用 glob 和 os listdir 的基本策略 但我都遇到了麻烦 首先 当我使用 import glo
  • Ruby:在 Ubuntu 上安装 rmagick

    我正在尝试在 Ubuntu 10 04 上安装 RMagick 看起来here https stackoverflow com questions 1482823 is there an easy way to install rmagic
  • 在 x86 汇编语言中获取文件大小的简单方法

    假设我已经在汇编中打开了一个文件 并且在寄存器 eax 中有该文件的文件句柄 我将如何获取文件的大小 以便为其分配足够的缓冲区空间 我在这里研究了另一个讨论 建议使用sys fstat 28 系统调用来获取文件统计信息但无法实现它 My a
  • /sys/device/ 和 dmidecode 报告的不同 CPU 缓存大小

    我正在尝试获取系统中不同缓存级别的大小 我尝试了两种技术 a 使用 sys device 中的信息 这是输出 cat sys devices system cpu cpu0 cache index1 size 32K cat sys dev
  • 嵌入清单文件以要求具有 mingw32 的管理员执行级别

    我正在 ubuntu 下使用 i586 mingw32msvc 交叉编译应用程序 我很难理解如何嵌入清单文件以要求 mingw32 具有管理员执行级别 对于我的例子 我使用了这个hello c int main return 0 这个资源文
  • 如何在线程创建和退出时调用函数?

    include
  • grep 排除文件的数组参数

    我想从我的文件中排除一些文件grep命令 为此我使用参数 exclude excluded file ext 为了更容易阅读 我想使用包含排除文件的 bash 数组 EXCLUDED FILES excluded file ext 然后将
  • awk 在循环中使用时不打印任何内容[重复]

    这个问题在这里已经有答案了 我有一堆使用 file 1 a 1 txt 格式的文件 如下所示 A 1 B 2 C 3 D 4 并使用以下命令添加包含每个文件名称的新列 awk print FILENAME NF t 0 file 1 a 1
  • 在 docker 中重定向命令输出

    我想为我的服务器做一些简单的日志记录 它是一个在 Docker 容器中运行的小型 Flask 应用程序 这是 Dockerfile Dockerfile FROM dreen flask MAINTAINER dreen WORKDIR s
  • ioctl 命令的用户权限检查

    我正在实现 char 驱动程序 Linux 并且我的驱动程序中有某些 IOCTL 命令仅需要由 ADMIN 执行 我的问题是如何在 ioctl 命令实现下检查用户权限并限制非特权用户访问 IOCTL 您可以使用bool capable in

随机推荐

  • 科学计数法

    链接 http www nowcoder com pat 6 problem 4050 题目描述 科学计数法是科学家用来表示很大或很小的数字的一种方便的方法 其满足正则表达式 1 9 0 9 E 0 9 即数字的整数部分只有1位 小数部分至
  • Mallox勒索病毒:最新变种malloxx袭击了您的计算机?

    导言 随着互联网的普及和数字化生活的发展 网络安全问题也逐渐成为了我们生活中不可忽视的一部分 其中 勒索病毒是一种恶意软件 它可以将您的数据文件加密 并要求您支付赎金以获取解密密钥 本文91数据恢复将介绍一种名为 malloxx的勒索病毒
  • [Unity&]PlayerPrefs.GetString的使用案例

    根据官方 案例PlayerPrefs SetString 进行测试 https docs unity3d com ScriptReference PlayerPrefs SetString html PlayerPrefs https do
  • 【华为OD机试c++】解压报文【2023 B卷

    题目描述 为了提升数据传输的效率 会对传输的报文进行压缩处理 输入一个压缩后的报文 请返回它解压后的原始报文 压缩规则 n str 表示方括号内部的 str 正好重复 n 次 注意 n 为正整数 0 lt n lt 100 str只包含小写
  • 猿创征文

    文章目录 1 KingbaseES是什么数据库 2 KingbaseES数据库产品优势 3 KingbaseES安装包下载地址 4 KingbaseES数据库安装 1 windows安装KingbaseES 1 图形化界面安装 2 命令行安
  • Java构造方法为private

    class A public String name 构造函数限定为private 不可以直接创建对象 private A 需要创建对象实例时 调用此函数 public static A Instance return new A clas
  • H.323协议分析

    感谢原作者 http blog csdn net bripengandre article details 2230087 整理记录 版本 时间 内容 整理人 V1 0 2008 03 28 H 323协议分析初稿 彭令鹏 H 323协议分
  • Vue 新手学习笔记:vue-element-admin 之入门开发

    说实话都是逼出来的 对于前端没干过ES6都不会的人 vue视频也就看了基础的一些 但没办法 接下来做微服务架构 前端就用 vue 这块你负责 说多了都是泪 脚手架框架布了都没看过 干就完事 不过好在做好了 这里写下给和我一样苦逼的同学能快点
  • 写技术文的三个原则是什么?

    本文章原创首发于公众号 编程三分钟 我关注了很多技术类的公众号 看着大佬的公众号几千的阅读量 甚是羡慕 这直接导致了我没有心情减肥 甚至多吃了一个鸡腿 要怎么才能写出一篇好技术文章 让读到的人感到身心舒畅 快速Get到想说的点 我想破了脑袋
  • Jetpack架构组件库:DataStore

    Jetpack DataStore 是一种经过改进的新数据存储解决方案 旨在取代 SharedPreferences DataStore 基于 Kotlin 协程和 Flow 构建而成 提供以下两种不同的实现 Preferences Dat
  • 【解决方法】chrome和edge浏览器出现“你的连接不是专用连接“的问题

    原创作者 运维工程师 林琪 1 问题描述 chrome和edge浏览器访问一些证书不受信任的网页会出现 你的连接不是专用连接 的问题 无法继续访问网页 2 解决方法 在上图这个问题界面的时候 输入法在英文状态下 输入 thisisunsaf
  • ByteBuffer之HeapByteBuffer与DirectByteBuffer

    HeapByteBuffer HeapByteBuffer 是写在jvm堆上面的一个buffer 底层的本质是一个数组 用类封装维护了很多的索引 limit position capacity等 在实际操作时 会把jvm堆上数据拷贝出来到系
  • WSL2+Ubuntu18.04+gnome图形界面+docker搭建开发环境

    最近换了电脑 系统更新到2004 捣腾了一下WSL2 尝试把开发环境搭建在WSL2里面 看了很多教程 基本都是Xfce的 但是更喜欢Gnome 所以就用Ubuntu主流的Gnome作为桌面GUI WSL2的安装 WSL 2的安装因为微软提供
  • VS2015和QT代码快捷键

    VS2015 代码自动对齐快捷键 1 Ctrl A 2 Ctrl K 3 Ctrl F QT 代码自动对齐快捷键 1 Ctrl A 2 Ctrl I
  • 专利交底书

    qq
  • Java在Quant应用_BigQuant人工智能量化平台使用

    BigQuant人工智能量化平台使用 BigQuant人工智能量化平台使用 Author By Runsen 在2020年一月初 也是我大三上的寒假 我开始写书 为什么呢 因为化工原理和化工热力学挂了 我需要重拾自己的自信 对于一个大学三年
  • 今天和朋友们分享如何巧用MACD指标进行恒指多空方向判断

    说起MACD指标 我们无论是做股票还是期货的朋友其实都有了解 之前也有相关文章专做分析过此指标的一些妙用 今天受一些朋友建议 均已将带领大家重温 MACD 指标课堂 今日课题主要同大家讲解一下 MACD柱线与0轴位置切换 以及MACD变化过
  • 渗透测试技术题(面试、笔试)

    本篇文章主要涉及一下几个方面 java view plain copy 对称加密非对称加密 什么是同源策略 cookie存在哪里 可以打开吗 xss如何盗取cookie tcp udp的区别及tcp三次握手 syn攻击 证书要考哪些 DVW
  • python13个小题

    python小题 1 从键盘输入3个数 求最大值 2 买彩票 如果体彩中了500万 我买车 资助希望工程 去欧洲旅游 否则我买下一期体彩 继续烧高香 写程序描述 3 会员购物时 根据积分的不同享受不同的折扣 计算会员购物时获得的折扣 小于2
  • Linux PXE详解

    今天我们继续给大家介绍Linux相关内容 本文主要内容是PXE系统的部署 并且通过实战 完成PXE环境的实战部署 由于PXE环境牵扯到的服务众多 因此 您需要了解FTP DHCP等服务的原理 安装 部署等知识 如果您对此还存在困惑 欢迎查阅