系统运维——PXE自动安装系统

news2024/12/24 20:30:13

摘要

PXE(Preboot Execution Environment,预启动执行环境)是一种允许计算机通过网络启动操作系统而无需本地存储设备的技术。本文详细介绍了 PXE 的定义、架构、原理、应用场景及常见命令体系。以 RedHat7 为例,展示如何配置和使用 PXE自动安装操作系统。

目录

1.常见的系统安装操作流程

2.PXE概述

2.1定义

2.2应用背景

2.3架构

2.4应用场景

2.5应用优势

2.6基本部署过程

2.7 PXE 启动过程

3.实战操作

3.1环境介绍

3.2服务端配置

 3.3客户端测试


1.常见的系统安装操作流程

  1. 通用流程:(1)bios启动,选择操作系统的启动(安装)模式。此时,内存是空白的。(2)根据相关的安装模式,寻找操作系统的引导程序。不同的模式,对应不同的引导程序当然也对应着不同的引导程序存在的位置。(3)引导程序加载文件系统初始化(initrd)程序和内核初始镜像(vmlinuz),完成操作系统安装前的初始化。(4)操作系统开始安装相关的系统和应用程序。

  2. 硬盘安装的流程:(1)bios启动。(2)MBR寻找grub。(3)grub程序读取menu.list等配置文件,找到内核启动镜像和相关初始化程序。(4)安装启动。 

  3. pxe网络安装的流程:(1)bios启动。(2)pxe client中的程序进入内存,显示命令菜单。此程序开始寻找网络引导程序(bootstrap文件,这个文件的名字随着发行版的不同而不同,在centos中,它是pxelinux.0)。(3)引导程序读取配置文件pxelinux.cfg,获得系统初始化的相关文件信息。(4)系统启动,开始进行安装。

2.PXE概述

2.1定义

PXE (Preboot eXecution Environment) 是一种基于网络的启动技术,最初由 Intel 开发,旨在提供一种在没有本地存储设备的情况下通过网络启动操作系统的标准。PXE 集成在计算机的 BIOS 或 UEFI 中,支持客户端通过网络从服务器端下载系统镜像,并进行安装。在安装过程中,可以通过Kickstart 配置文件实现无人值守安装,并定制操作系统。

2.2应用背景

随着计算机网络的发展和虚拟化技术的普及,PXE 成为一种流行的启动方式。它广泛应用于无盘工作站、服务器部署和系统恢复等场景,简化了大规模系统管理和维护的复杂性。

2.3架构

PXE 的架构包括客户端和服务器两部分,依赖于多种网络协议和服务。以下是 PXE 架构的主要组成部分。

客户端

PXE 客户端是启用了 PXE 的计算机,通常集成在 BIOS 或 UEFI 中,要求网卡支持PXE协议,主板支持网络引导。当计算机启动时,如果启用了 PXE,网络接口卡(NIC)会尝试通过网络启动操作系统。

服务端

PXE 服务器提供启动文件和相关服务。运行DHCP服务,用来分配地址、定位引导程序,运行TFTP服务,提供引导程序下载。通常包括以下组件:

  • DHCP 服务器:为 PXE 客户端分配 IP 地址,并提供启动文件的位置信息。

  • TFTP 服务器:用于传输启动文件,如 PXE 引导程序和内核镜像。

  • HTTP/FTP 服务器:在某些情况下,用于传输更大的文件或提供额外服务。PXE 客户端通过 FTP 下载系统镜像内容。

  • NFS/SMB 服务器:用于提供网络文件系统,支持 PXE 客户端访问操作系统文件。

2.4应用场景

  • 无盘工作站

       在教育和科研机构中,无盘工作站通过 PXE 启动操作系统,从网络服务器获取所有需要的文件和应用程序。这样,系统管理和维护变得更加集中和简便。

  • 服务器部署

       在数据中心,PXE 被广泛用于自动化服务器部署。管理员可以通过 PXE 大规模部署操作系统和应用程序,显著提高部署效率和一致性。

  • 系统恢复

       PXE 也被用于系统恢复和应急启动。当计算机的本地存储设备故障时,可以通过 PXE 启动应急操作系统,进行数据恢复和系统修复。

  • 虚拟化环境

       在虚拟化环境中,PXE 被用于启动虚拟机,使其可以从网络加载操作系统和应用程序,简化虚拟机的管理和配置。

2.5应用优势

  • 规模化:同时装配多台服务器。
  • 自动化:安装系统、配置各种服务。
  • 远程实现:不需要光盘、U盘等安装介质。

2.6基本部署过程

  1. 准备CentOS 7 安装源(YUM仓库)
  2. 安装并启用TFTP服务
  3. 提供Linux内核、PXE引导程序等
  4. 安装并启用DHCP服务
  5. 配置启动菜单

2.7 PXE 启动过程

  • PXE 客户端启动:

当计算机启动时,PXE 客户端通过 BIOS 或 UEFI 启动,并向网络发送 DHCP 请求,寻找 DHCP 服务器。

  • DHCP 服务器响应:

DHCP 服务器响应 DHCP 请求,为客户端分配 IP 地址,并提供 TFTP 服务器的位置和引导文件名。

  • 下载引导文件:

PXE 客户端通过 TFTP 下载引导文件,通常是一个小型的 PXE 引导程序(如 pxelinux.0)。

  • 执行引导文件:

PXE 客户端执行下载的引导文件,该引导文件进一步下载操作系统内核和初始化文件系统。

  • 启动操作系统:

PXE 客户端加载内核和初始化文件系统,最终启动操作系统。

3.实战操作

3.1环境介绍

本次实战用到两台基于 RedHat7 操作系统的虚拟机。一台用于服务端配置,另一台用作客户机来实现自动化布置操作系统。

3.2服务端配置

  • 初始化服务器。为服务端配置主机名,静态IP地址。

[root@localhost ~]# hostnamectl set-hostname server
[root@localhost ~]# exit
logout
[redhat@localhost ~]$ su -
Password: 
Last login: Mon Aug  5 00:07:11 CST 2024 on pts/0
[root@server ~]# hostnamectl 
   Static hostname: server
         Icon name: computer-vm
           Chassis: vm
        Machine ID: abf279f0c2454b319872ee364824cfa6
           Boot ID: dce5806e6c264d769291ad8fee95d425
    Virtualization: vmware
  Operating System: Red Hat Enterprise Linux Server 7.9 (Maipo)
       CPE OS Name: cpe:/o:redhat:enterprise_linux:7.9:GA:server
            Kernel: Linux 3.10.0-1160.el7.x86_64
      Architecture: x86-64

[root@server ~]# nmcli connection modify ens33 ipv4.addresses 172.25.250.101/24 ipv4.dns 172.25.250.102 ipv4.gateway 172.25.250.2 ipv4.method manual connection.autoconnect yes
[root@server ~]# nmcli connection up ens33 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

[root@server ~]# ifconfig 
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.25.254.101  netmask 255.255.255.0  broadcast 172.25.254.255
        inet6 fe80::ad89:7e8a:f05f:a1b1  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:a8:b8:e4  txqueuelen 1000  (Ethernet)
        RX packets 305002  bytes 21450955 (20.4 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 2892811  bytes 4373559563 (4.0 GiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (Local Loopback)
        RX packets 338  bytes 68700 (67.0 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 338  bytes 68700 (67.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

virbr0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.122.1  netmask 255.255.255.0  broadcast 192.168.122.255
        ether 52:54:00:be:f9:f4  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

配置好静态 IP 后,在虚拟机的虚拟网络编辑器里的 net 模式把 dhcp 自动分配地址的选项取消勾选。

  •  安装并打开图形界面

如果安装虚拟机时选择了图形化安装,则安装步骤可以跳过,直接开启即可。

[root@server ~]# yum group install "Sever with GUI" -y
[root@server ~]# init 5

  •  查看系统安装过程文件

此文件是在系统安装好后自动生成的,这个文件记录了系统在安装过程中的所有设定。

[root@server ~]# cat /root/anaconda-ks.cfg 

  • 安装图形化生成 kickstart 自动安装脚本的工具

[root@server ~]# yum install system-config-kickstart

  • 启动图形制作工具

 [root@server ~]# system-config-kickstart

 

  •  
  •  在虚机终端编辑刚刚保存的文件

[root@server ~]# ls
anaconda-ks.cfg  initial-setup-ks.cfg  ks.cfg
[root@server ~]# vim ks.cfg 

退出编辑的时候按强制保存退出。

  •  用这个命令判断 ks.cfg 文件有没有出错

[root@server ~]# ksvalidator ks.cfg 
[root@server ~]# 

  • 配置http服务

 [root@server ~]# yum install httpd -y

[root@server ~]# systemctl enable --now httpd
[root@server ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
devtmpfs               1.9G     0  1.9G   0% /dev
tmpfs                  1.9G   39M  1.9G   3% /dev/shm
tmpfs                  1.9G   13M  1.9G   1% /run
tmpfs                  1.9G     0  1.9G   0% /sys/fs/cgroup
/dev/mapper/rhel-root   35G  4.2G   31G  12% /
/dev/sda1             1014M  183M  832M  19% /boot
tmpfs                  378M   24K  378M   1% /run/user/1000
/dev/sr0               4.3G  4.3G     0 100% /rhel7
[root@server ~]# ln -s /rhel7/ /var/www/html/

 [root@server ~]# cp /root/ks.cfg /var/www/html/

[root@server ~]# cd /var/www/html/
[root@server html]# ls
ks.cfg  rhel7

用虚机里的火狐浏览器测试

  • 更改本地仓库挂载目录为 /rhel7

[root@server html]# cd
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
redhat.repo  rpm.repo
[root@server yum.repos.d]# vim rpm.repo 

[repo]
name=repo
baseurl=file:///rhel7
gpgcheck=0

  •  配置dhcp服务

检查系统有没有安装过 dhcp。

[root@server ~]# yum search dhcpd
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

Warning: No matches found for: dhcpd
No matches found

安装 dhcp。 

[root@server ~]# yum install dhcp -y

查看 dhcp 的具体配置文件有哪些。

[root@server ~]# rpm -qc dhcp
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf
/etc/openldap/schema/dhcp.schema
/etc/sysconfig/dhcpd
/var/lib/dhcpd/dhcpd.leases
/var/lib/dhcpd/dhcpd6.leases 

 用命令生成 dhcp 配置文件

[root@localhost ~]# cat /etc/dhcp/dhcpd.conf 
#
# DHCP Server Configuration file.
#   see /usr/share/doc/dhcp*/dhcpd.conf.example
#   see dhcpd.conf(5) man page
#
[root@localhost ~]# \cp -f /usr/share/doc/dhcp*/dhcpd.conf.example /etc/dhcp/dhcpd.conf

编辑 dhcp 配置文件

 [root@server ~]# vim /etc/dhcp/dhcpd.conf 

 27、28行注释,37行以后都不要。

 重启服务并设置 dhcp 开机自启动

[root@server ~]# systemctl restart dhcpd

[root@server ~]# systemctl enable --now dhcpd6.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd6.service to /usr/lib/systemd/system/dhcpd6.service.
Job for dhcpd6.service failed because the control process exited with error code. See "systemctl status dhcpd6.service" and "journalctl -xe" for details.

  •  安装系统自引导加载服务

[root@server ~]# yum search pxelinux
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

============================== Matched: pxelinux ===============================
syslinux.x86_64 : Simple kernel loader which boots from a FAT filesystem
syslinux-extlinux.x86_64 : The EXTLINUX bootloader, for booting the local
                         : system.
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for
                         : network booting
[root@server ~]# yum install syslinux.x86_64 -y

  • 配置快速传输文件 tftp。

用于共享 pxelinux.0 数据文件的网络服务。

[root@server ~]# yum search tftp
Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-
              : manager

This system is not registered with an entitlement server. You can use subscription-manager to register.

============================== N/S matched: tftp ===============================
syslinux-tftpboot.noarch : SYSLINUX modules in /var/lib/tftpboot, available for
                         : network booting
tftp.x86_64 : The client for the Trivial File Transfer Protocol (TFTP)
tftp-server.x86_64 : The server for the Trivial File Transfer Protocol (TFTP)

  Name and summary matches only, use "search all" for everything.
[root@server ~]# yum install tftp-server.x86_64 -y

[root@server ~]# systemctl enable --now tftp

 [root@server ~]# rpm -ql tftp-server 
/etc/xinetd.d/tftp
/usr/lib/systemd/system/tftp.service
/usr/lib/systemd/system/tftp.socket
/usr/sbin/in.tftpd
/usr/share/doc/tftp-server-5.2
/usr/share/doc/tftp-server-5.2/CHANGES
/usr/share/doc/tftp-server-5.2/README
/usr/share/doc/tftp-server-5.2/README.security
/usr/share/man/man8/in.tftpd.8.gz
/usr/share/man/man8/tftpd.8.gz
/var/lib/tftpboot
 

[root@server ~]# cp /rhel7/isolinux/* /var/lib/tftpboot/
[root@server ~]# cp /usr/share/syslinux/pxe
pxechain.com  pxelinux.0    
[root@server ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

[root@server ~]# cd /var/lib/tftpboot/
[root@server tftpboot]# ls
boot.cat   initrd.img    memtest       splash.png   vesamenu.c32
boot.msg   isolinux.bin  pxelinux.0    TRANS.TBL    vmlinuz
grub.conf  isolinux.cfg  pxelinux.cfg  upgrade.img
[root@server tftpboot]# cp isolinux.cfg pxelinux.cfg/default 


[root@server tftpboot]# vim /var/lib/tftpboot/pxelinux.cfg/default 

重启 http 服务

[root@server tftpboot]# systemctl restart httpd.service

 3.3客户端测试

  • 新建一台 RedHat7 虚拟机进行自动安装系统测试。
  • 开启虚拟机时用“打开电源时进入固件打开”。

  • 运行虚拟机后用方向键进行操作

  • 系统运行完一次出现进入界面时快速关闭运行虚拟机,再次“点击打开电源时进入固件打开”运行虚拟机。

 

  • 两次运行完后,虚拟机就完成了系统自动安装。此时可以登入root用户 ,检查客户机的IP地址是否按照服务端要求的地址池来进行分配。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1983196.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Tooltip 文字提示

在偶然维护前端开发时&#xff0c;遇到页面列表中某个字段内容太长&#xff0c;且该字段使用了组件显示&#xff0c;导致不能使用纯文本得那个省略号代替显示得css样式效果&#xff0c;如下 所以只能另辟溪路了&#xff0c; 1、最开始想到是使用横向滚动得效果来实现&#xff…

【Vue3】Pinia存储及读取数据

【Vue3】Pinia存储及读取数据 背景简介开发环境开发步骤及源码 背景 随着年龄的增长&#xff0c;很多曾经烂熟于心的技术原理已被岁月摩擦得愈发模糊起来&#xff0c;技术出身的人总是很难放下一些执念&#xff0c;遂将这些知识整理成文&#xff0c;以纪念曾经努力学习奋斗的日…

如何用OceanBase与DataWorks,打造一站式的数据集成、开发和数据服务

导语&#xff1a;在OceanBase 2024年开发者大会的技术生态论坛上&#xff0c;阿里云DataWorks团队的高级技术专家罗海伟&#xff0c;详细阐述了一站式大数据开发治理平台DataWorks的能力&#xff0c;并对于如何基于OceanBase和Dataworks构建一站式数据集成、开发以及数据服务进…

解锁模数学习新境界:电路仿真软件,你的数字与模拟世界桥梁大师!

在这个科技日新月异的时代&#xff0c;模数转换&#xff08;A/D与D/A&#xff09;不仅是电子工程师的必修课&#xff0c;也是众多科技爱好者探索数字与模拟世界奥秘的钥匙。而今&#xff0c;一款强大的电路仿真软件&#xff0c;正悄然成为连接这两大领域的魔法棒&#xff0c;让…

Animate软件基础:各种类型文件使用说明

FlashASer&#xff1a;AdobeAnimate2021软件零基础入门教程https://zhuanlan.zhihu.com/p/633230084 FlashASer&#xff1a;实用的各种Adobe Animate软件教程https://zhuanlan.zhihu.com/p/675680471 FlashASer&#xff1a;Animate教程及作品源文件https://zhuanlan.zhihu.co…

ps绘制动图

ps绘制动图教程&#xff08;简易版&#xff09;-直播gif动态效果图 第一步 打开ps绘制几个简单的长方形 第二步 将图层转化为智能图层 第三部 在窗口找到时间轴创建时间轴 第五步 通过变换来鼠标控制图像的变化并打下结束点 第六部 通过图像中的图像大小控制gif的大小 第七部 …

低代码: 系统开发准备之确定一般开发流程,需求分析,复杂度分析,标准开发流程

概述 低代码系统开发之前&#xff0c;我们首先要进行一些准备我们首先知道我们软件开发的一般流程同时&#xff0c;我们还要知道&#xff0c;我们整个系统平台的需求如何之后&#xff0c;我们要基于需求进行设计&#xff0c;包含UI设计与系统架构设计 一般开发流程 系统开发…

2024年【北京市安全员-B证】考试题库及北京市安全员-B证考试技巧

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 北京市安全员-B证考试题库根据新北京市安全员-B证考试大纲要求&#xff0c;安全生产模拟考试一点通将北京市安全员-B证模拟考试试题进行汇编&#xff0c;组成一套北京市安全员-B证全真模拟考试试题&#xff0c;学员可…

拉削基础知识——拉床的类型及特点

拉床是所有机械加工工具中最简单的一种&#xff0c;由拉削工具、夹具、驱动装置和支撑架组成。拉削加工可获得较高的尺寸精度和较小的表面粗糙度&#xff0c;生产率较高&#xff0c;适用于大批量生产。拉床按其结构主要分为卧式和立式。应用领域和功能可分为液压拉床、自动拉床…

【香菇带你学Mysql】Mysql数据库主备搭建【建议收藏】

文章目录 1. 概述1.1 为什么要搭建主备架构数据库&#xff1f;1.2 常见的Mysql数据库主备架构 2. Mysql 数据库主备搭建原理3. Mysql数据库主备搭建实操3.1 环境准备3.2 主库操作3.3 从库操作3.4 主从同步验证 4. 总结5. 参考文档 大家可能听过一个段子&#xff0c;当电脑遇到问…

java 关键字

Java的关键字是语言中保留的标识符&#xff0c;它们具有特定的含义和用途&#xff0c;并且不能用作变量名、方法名或类名等。Java 17&#xff08;最新的LTS版本之一&#xff09;中有53个关键字。 下面是每个关键字的含义及其实例 1. 控制结构关键字 这些关键字用于控制程序流…

第十六节、实装攻击判定

一、实现原理 人物三段式攻击的剑气增加一帧伤害即可 二、步骤 创建玩家下面的子物体 1、多边形碰撞体 给第一段攻击添加多边形碰撞体 2、帧触发 在这一帧添加动画&#xff0c;是触发器由失活状态转为使用状态 在这一帧勾选物体状态 3、计算攻击伤害 每一个挂载代码&…

大型语言模型微调的规模效应研究

人工智能咨询培训老师叶梓 转载标明出处 为了解锁大模型在特定下游应用中的全部潜力&#xff0c;通常需要通过微调&#xff08;finetuning&#xff09;来适配任务。尽管微调已成为一种常规做法&#xff0c;但关于不同微调方法的归纳偏差&#xff0c;尤其是规模特性的理解仍然有…

CRC16循环冗余校验

代码&#xff1a; #include<stdio.h> #include <stdint.h>#define uchar unsigned char #define uint unsigned int static const uint8_t auchCRCHi[] { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x0…

33.x86游戏实战-喊话CALL

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

CTFHUB—XSS—DOM反射

开启题目 输入以下语句测试一下&#xff0c;发现页面没有弹出窗口显示“flag” <script>alert("flag")</script> 查看页面源代码&#xff0c; 尝试闭合标签 使用下面代码闭合&#xff0c;然后发现闭合成功了 </script><script>alert("…

【Python机器学习】利用AdaBoost元算法提高分类性能——基于AdaBoost的分类

一旦拥有了多个弱分类以及其对应的alpha值&#xff0c;进行测试就变得非常容易了。现在&#xff0c;要将弱分类器的训练过程从程序中抽出来&#xff0c;然后应用在某个具体的实例上。每个弱分类器的结果以其对应的alpha值作为权重。所有这些弱分类器的结果加权求和就得到了最后…

ElementUI元件库在Axure中使用

一、ElementUI元件库介绍 ElementUI 是一套为开发者、UI/UX设计师和产品经理准备的基于Vue 2.0的桌面端组件库。它以其优雅的设计和丰富的组件&#xff0c;极大地提升了Web应用的开发效率与用户体验。ElementUI的组件设计精致且符合现代UI规范&#xff0c;包括按钮、表单、弹窗…

判断用户是否在pwa环境中打开运行?(已安装的 PWA 与未安装的 PWA 网站之间有什么区别?)

前言&#xff1a; &#x1f449;vue3tsvite项目中使用vite-plugin-pwa搭建 PWA 项目&#xff0c;以及如何处理pwa安装图标的显示隐藏 &#x1f449;pwa在iframe下能否显示&#xff0c;以及在iframe下相关问题解析 如何判断用户是否在pwa环境中运行? 根据pwa配置的display-mo…

Captive Portal验证原理

物联网开发系列&#xff1a;物联网开发之旅① WiFi to Ethernet: 树莓派共享无线连接至有线网口&#xff0c;自动通过Captive Poartal验证物联网开发番外篇之 Captive Portal验证原理 文章目录 工作原理技术细节登录页面的实现自动化登录 登录界面的原理主要涉及到Web认证&…