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详解 的相关文章

  • Visual Studio - X11:缺少 DISPLAY 环境变量

    我正在使用 Visual Studio 2019 Enterprise 开发跨平台 Windows Linux x64 GUI 应用程序 在这个 2019 版本中 我们可以使用 Visual Studio调试平台 Windows 本机 和
  • 用于时间线数据的类似 gnuplot 的程序

    我正在寻找一个类似 gnuplot用于在时间轴中绘制数据图表的程序 类似 gnuplot 在 Linux 上运行 命令行功能 GUI 对我帮助不大 可编写脚本的语法 输出为 jpg png svg 或 gif 输出应该是这样的 set5 s
  • 了解 Linux oom-killer 日志

    我的应用程序被 oom killer 杀死了 它是在实时 USB 上运行的 Ubuntu 11 10 无需交换 PC 具有 1 Gig 的 RAM 唯一运行的应用程序 除了所有内置的 Ubuntu 东西 是我的程序 flasherav 请注
  • Grep 递归和计数

    需要在具有大量子目录的目录中搜索文件内的字符串 我在用着 grep c r string here 我怎样才能找到总数量 如何仅输出至少具有一个实例的文件 使用 Bash 的进程替换 这给出了我认为是您想要的输出 如果不是 请澄清问题 gr
  • 用于获取特定用户 ID 和进程数的 Bash 脚本

    我需要 bash 脚本来计算特定用户或所有用户的进程 我们可以输入 0 1 或更多参数 例如 myScript sh root deamon 应该像这样执行 root 92 deamon 8 2 users has total proces
  • Apache LOG:子进程 pid xxxx 退出信号分段错误 (11)

    Apache PHP Mysql Linux 注意 子进程 pid 23145 退出信号分段错误 11 tmp 中可能存在 coredump 但 tmp下没有找到任何东西 我怎样才能找到错误 PHP 代码中函数的无限循环导致了此错误
  • 使用 --prof 选项创建多个日志文件而不是一个 v8.log 的节点

    我正在尝试使用 prof 选项来分析我的 Node 应用程序 但我发现不是一个单一的 v8 log 文件 而是使用诸如isolate 0x9582b40 v8 log isolate 0xa1cab78 v8 6049 等前缀创建的多个文件
  • Unix 中的访问时间是多少

    我想知道访问时间是多少 我在网上搜索但得到了相同的定义 读 被改变 我知道与touch我们可以改变它 谁能用一个例子来解释一下它是如何改变的 有没有办法在unix中获取创建日期 时间 stat结构 The stat 2 结构跟踪所有文件日期
  • Java时区混乱

    我正在运行 Tomcat 应用程序 并且需要显示一些时间值 不幸的是 时间快到了 还有一个小时的休息时间 我调查了一下 发现我的默认时区被设置为 sun util calendar ZoneInfo id GMT 08 00 offset
  • 为什么无论 -rdynamic 如何,backtrace 都不包含 Objective-C 符号?

    Update 我正在 Linux 上使用 GNU 运行时 问题是not发生在带有 Apple 运行时的 MacOS 上 更新2 我在 MacOS 上编译了 GNU 运行时并用它构建了示例 该错误确实not发生在带有 GNU 运行时的 Mac
  • 在 vimrc 中切换匹配

    我的 vimrc 文件中有以下几行 hi ExtraWhitespace cterm NONE ctermbg green ctermfg green guibg green guifg green match ExtraWhitespac
  • Linux 中有没有一种轻量级的方法来获取当前进程数?

    我希望我的 基于 C C 的 程序显示一个数字指示器 指示本地系统上当前有多少个进程 将经常查询正在运行的进程数值 例如每秒一次 以更新我的显示 有没有一种轻量级的方法来获取该数字 显然我可以调用 ps ax wc l 但我不想强迫计算机生
  • Linux 中的 Windows NAmed Pipes 替代品

    我们正在将现有的 Windows 代码移植到 Linux 我们使用 ACE 作为抽象层 我们使用 Windows 命名管道与多个客户端进行通信并执行重叠操作 linux 下这个相当于什么 我检查了linux命名管道 FIFO 但它们似乎只支
  • 用于 e NetworkManager VPN 连接的 dbus 信号处理程序

    我需要开发一些在建立 VPN 连接时执行的 python 代码 VPN 由 NetworkManager 控制 我试图弄清楚如何为此使用 NM DBUS 事件 使用 dbus monitor system 我能够识别连接信号 signal
  • PHP mail() 函数不发送邮件

    我有一个小问题 我正在使用一个工作脚本 在我的测试帐户 共享服务器上工作 使用 mail 函数通过 PHP 发送邮件 我刚刚得到了一个专用服务器 但我还无法让该功能发挥作用 在过去的 10 个小时左右的时间里 我阅读了有关 BIND 用于
  • SIGHUP 用于重新加载配置

    根据signal 7 SIGHUP用于检测控制终端的挂起或控制进程的死亡 然而 我遇到过很多 OSS 守护进程 服务 其中SIGHUP用于启动配置的重新加载 这里有一些例子 hostapd sshd snort etc 这是实现重新加载的标
  • 进程如何知道它已收到信号

    如果我错了 请纠正我 以下是我对信号的理解 据我所知 信号生成 和信号传递有2个不同 事物 为了产生信号 操作系统只是在位数组中设置一个位 在过程控制中维护 工艺块 PCB 每一位 对应于特定信号 当设置一个位时 这意味着 该位对应的信号为
  • X 按键/释放事件捕获,与焦点窗口无关

    我想记录所有传入的按键事件 无论哪个窗口处于焦点状态或指针位于何处 我编写了一个示例代码 它应该捕获当前焦点窗口的按键事件 include
  • ARM 的内核 Oops 页面错误错误代码

    Oops 之后的错误代码给出了有关 ARM EX 中的恐慌的信息 Oops 17 1 PREEMPT SMP在这种情况下 17 给出了信息 在 x86 中它代表 bit 0 0 no page found 1 protection faul
  • php56 - CentOS - Remi 仓库

    我刚刚在测试盒上安装了 php 5 6 正常的 cli php 解释器似乎不存在 gt php v bash php command not found gt php56 v PHP 5 6 13 cli built Sep 3 2015

随机推荐

  • 科学计数法

    链接 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等服务的原理 安装 部署等知识 如果您对此还存在困惑 欢迎查阅