PXE批量安装

news2024/11/28 1:29:30

系统装机的三种引导方式

  • u盘
  • 光盘
  • 网络装机

光盘:

1.类似于usb模式

2.刻录模式

系统安装过程

  • 加载boot loader

Boot Loader 是在操作系统内核运行之前运行的一段小程序。通过这段小程序,我们可以初始化硬件设备、建立内存空间的映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境

  • 加载启动安装菜单
  • 加载内核和initrd系统(文件才能使用文件)
  • 加载根系统()
  • 运行anaconda的安装向导

Linux安装光盘的安装相关文件

在系统光盘的isolinux目录下有和安装相关的文件

  • boot.cat: 相当于grub的第一阶段
  • isolinux.bin:光盘引导程序,在mkisofs的选项中需要明确给出文件路径,这个文件属于SYSLINUX项目
  • isolinux.cfg:启动菜单的配置文件,当光盘启动后(即运行isolinux.bin),会自动去找isolinux.cfg文件
  • vesamenu.c32:是光盘启动后的启动菜单图形界面,也属于SYSLINUX项目,menu.c32提供纯文本的菜单
  • memtest:内存检测程序
  • splash.png:光盘启动菜单界面的背景图
  • vmlinuz:是内核映像
  • initrd.img:ramfs文件(精简版的linux系统,文件系统驱动等)

四大文件

vmlinux:是一个压缩的linux内核文件,它包含了操作系统的核心功能和驱动程序

initrd.img:是一个用于初始化RAM磁盘的初始RAM文件系统。它包含了操作系统启动时所需的基本文件和驱动程序

pxelinux.0:是一个PXE引导加载程序,用于启动网络引导

pxelinux.cfg/default:手动配置

实现自动化安装操作系统

Kickstart和PXE结合使用可以实现自动化的网络安装过程。

实现过程

1.网卡需要查找相关的dhcp服务器(获取地址)

2.找到后dhcp服务器提供ip地址,和引导程序(boot loader)的地址还提供给客户机TFTPserver地址(dhcp本身不提供tftp服务)

2.网卡使用tftp客户端把引导程序加载到内存中来

4.bios执行引导程序

5.引导程序会去TFTP去查找配置文件

6.根据配置文件去引导安装系统

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

PXE优点

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

模拟PXE+KICKSTART无人值守安装操作系统

[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# yum install dhcp -y
[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 -p /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf 
cp:是否覆盖"/etc/dhcp/dhcpd.conf"? y
[root@localhost ~]# vim /etc/dhcp/dhcpd.conf 
subnet 192.168.118.0 netmask 255.255.255.0 {
  range 192.168.118.50 192.168.118.90;
  option routers 192.168.118.20;
  next-server 192.168.118.20;
  filename "pxelinux.0";
}
[root@localhost ~]# systemctl start dhcpd
[root@localhost ~]# systemctl status dhcpd
● dhcpd.service - DHCPv4 Server Daemon
   Loaded: loaded (/usr/lib/systemd/system/dhcpd.service; disabled; vendor preset: disabled)
   Active: active (running) since 二 2024-05-07 16:12:45 CST; 16s ago
     Docs: man:dhcpd(8)
           man:dhcpd.conf(5)
 Main PID: 12762 (dhcpd)
   Status: "Dispatching packets..."
   CGroup: /system.slice/dhcpd.service
           └─12762 /usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -g...
[root@localhost ~]# yum install tftp-server -y
[root@localhost ~]# rpm -qc tftp-server 
/etc/xinetd.d/tftp
[root@localhost ~]# vim /etc/xinetd.d/tftp 
# default: off
# description: The tftp server serves files using the trivial file transfer \
#       protocol.  The tftp protocol is often used to boot diskless \
#       workstations, download configuration files to network-aware printers, \
#       and to start the installation process for some operating systems.
service tftp
{
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -s /var/lib/tftpboot
        disable                 = no
        per_source              = 11
        cps                     = 100 2
        flags                   = IPv4
}
[root@localhost ~]# systemctl start tftp
[root@localhost ~]# systemctl status tftp
● tftp.service - Tftp Server
   Loaded: loaded (/usr/lib/systemd/system/tftp.service; indirect; vendor preset: disabled)
   Active: active (running) since 二 2024-05-07 16:30:51 CST; 8s ago
     Docs: man:in.tftpd
 Main PID: 13007 (in.tftpd)
   CGroup: /system.slice/tftp.service
           └─13007 /usr/sbin/in.tftpd -s /var/lib/tftpboot

5月 07 16:30:51 localhost.localdomain systemd[1]: Started Tftp Server.
5月 07 16:30:51 localhost.localdomain systemd[1]: Starting Tftp Server...
[root@localhost ~]# yum install syslinux -y
[root@localhost ~]# rpm -ql syslinux |grep "pxelinux.0"
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/pxelinux.0
[root@localhost ~]# cp -p /usr/share/syslinux/pxelinux.0  /var/lib/tftpboot
[root@localhost ~]# yum install vsftpd -y
[root@localhost ~]# cd /var/ftp
[root@localhost ftp]# mkdir centos7
[root@localhost ftp]# mount /dev/sr0 /var/ftp/centos7
mount: /dev/sr0 写保护,将以只读方式挂载
[root@localhost ftp]# cd /var/ftp/centos7/
[root@localhost centos7]# ls
CentOS_BuildTag  GPL       LiveOS    RPM-GPG-KEY-CentOS-7
EFI              images    Packages  RPM-GPG-KEY-CentOS-Testing-7
EULA             isolinux  repodata  TRANS.TBL
[root@localhost centos7]# cd images/
[root@localhost images]# ls
efiboot.img  pxeboot  TRANS.TBL
[root@localhost images]# cd pxeboot/
[root@localhost pxeboot]# ls
initrd.img  TRANS.TBL  vmlinuz
[root@localhost isolinux]# cp -p initrd.img vmlinuz /var/lib/tftpboot/
[root@localhost tftpboot]# mkdir pxelinux.cfg/
[root@localhost tftpboot]# cd pxelinux.cfg/
[root@localhost pxelinux.cfg]# vim default

default linux
timeout 600

label linux
        kernel vmlinuz
        append initrd=initrd.img method=ftp://192.168.118.20/centos7    ks=ftp://192.168.118.20/ks.cfg

label linux text
        kernel vmlinuz
        append text initrd =initrd.img method=ftp://192.168.118.20/centos7

label linux rescue
        kernel vmlinuz
        append rescue initrd=initrd.img method=ftp://192.168.118.20/centos7

[root@localhost tftpboot]# ls
initrd.img  pxelinux.0  pxelinux.cfg  vmlinu
[root@localhost pxelinux.cfg]# yum install system-config-kickstart -y

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

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

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

相关文章

使用开放式用户通信连接两台西门子S71200plc

步骤1.在项目中创建两台PLC。 步骤2.分别设置两个PLC的参数。 plc1 plc2 步骤3.对两个plc进行组态 步骤4.在plc1和plc2中各自创建DB块,用于通信。 须在块的属性中取消优化块的访问选项。 plc1 plc2 步骤5.往plc1的main块中编写代码。 步骤6.往plc2的main块中编写…

AndroidStudio的Iguana版的使用

1.AndroidStudio介绍 Android Studio 是用于开发 Android 应用的官方集成开发环境 (IDE)。Android Studio 基于 IntelliJ IDEA 强大的代码编辑器和开发者工具,还提供更多可提高 Android 应用构建效率的功能,例如: 基于 Gradle 的灵活构建系统…

XORM 框架的使用

1、xorm 1.1、xorm 简介 xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 特性 支持 struct 和数据库表之间的灵活映射,并支持自动同步事务支持同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用ID, In, Where, Limit,…

nginx模型设计和进程讲解

一. Nginx进程模型解析 1. master主进程 和 worker工作进程 [rootlocalhost sbin]# ps -ef|grep nginx root 15411 1 0 21:08 ? 00:00:00 nginx: master process ./nginx nobody 15412 15411 0 21:08 ? 00:00:00 nginx: worker process root…

pytest教程-39-钩子函数-pytest_runtest_setup

领取资料,咨询答疑,请➕wei: June__Go 上一小节我们学习了pytest_runtest_protocol钩子函数的使用方法,本小节我们讲解一下pytest_runtest_setup钩子函数的使用方法。 pytest_runtest_setup 钩子函数在每个测试用例的 setup 阶段被调用。这…

学习软考----数据库系统工程师22

关系运算 基本的关系代数运算 拓展的关系运算 除:需要S连接中属性为C和D的两个元组都与R连接一样,且在R连接中对应的另外的元素完全一致 总结

聊聊 ASP.NET Core 中间件(三):如何创建自己的中间件?

前言 本质上,中间件类也是一个普通的 .NET 类,它不需要继承任何父类或者实现任何接口。 但是有几个约定: 需要有一个构造方法构造方法至少要有一个 RequestDelegate 类型的参数,用来指向下一个中间件。需要定义一个名字为 Invo…

交易复盘-20240507

仅用于记录当天的市场情况,用于统计交易策略的适用情况,以便程序回测 短线核心:不参与任何级别的调整,采用龙空龙模式 一支股票 10%的时候可以操作, 90%的时间适合空仓等待 蔚蓝生物 (5)|[9:25]|[36187万]|4.86 百合花…

STM32F10x移植FreeRTOS

一、获取FreeRTOS源码 (1)登录FreeRTOS官网:www.freertos.org,下载第一个压缩包 (2)通过GitHub网站:github.com/FreeRTOS/FreeRTOS下载,由于该网站服务器在国外,所以访问…

28.leetcode---前K个高频单词(Java版)

题目链接: https://leetcode.cn/problems/top-k-frequent-words/description/ 题解: 代码: 测试:

巨控GRM561/562/563/564Q杀菌信息远程监控

摘要 通过程序编写、手机APP画面制作等运行系统,实现电脑及手机APP显示的历史曲线画面和数据图形化的实时性。 不仅流程效率提升90%以上,同时为杀菌生产提供有利的质量保障,还有效规避因触屏及内存卡的突发异常导致历史数据的丢失&#xff0…

强大的禄得可转债自定义因子轮动系统完成,可转债三低为例子

经过几天的测试终于完成了可转债自定义因子轮动,超过1000行的源代码 我提供了服务器的数据支持自动api下载,我给大家维护数据 网页 http://120.78.132.143:8023/ 录得数据支持http://120.78.132.143:8023/lude_data_app api数据支持,我提供…

杭州恒生面试,社招,3年经验

你好,我是田哥 一位朋友节前去恒生面试,其实面试问题大部分都是八股文,但由于自己平时工作比较忙,完全没有时间没有精力去看八股文,导致面试结果不太理想,HR说节后通知面试结果(估计是凉了&…

传统汽车空调系统工作原理

1.首先讲一个概念 液体变成气体:吸热 气体变成液体:放热 2.在汽车空调系统中热量的传递的介质不是水,而是氟利昂,简称:“氟”。 3.传统式汽车空调结构如下 该三个部件位于车头进气口位置 该部位位于汽车驾驶车厢前方…

常见的容器技术有哪些

容器技术是一种轻量级的软件封装方式,它将软件代码及其依赖项打包在一起,这样应用可以在任何支持容器的系统上无缝运行。它允许应用程序及其依赖项在一个隔离的环境中运行,这个环境被称为容器。容器技术有助于提高应用程序的可移植性、一致性…

Vue3专栏项目 -- 一、第一个页面(上)

一、ColumnList 组件(专栏列表组件)编码: 该组件要接收一个数组,数组中是一个个专栏数据,数据中包括id、title、avator、description。所以我们定义一个泛型,泛型为id为number类型title为string类型如下这…

初识C++ · 类和对象(下)

目录 1 再谈构造函数 2 类中的隐式类型转换 3 Static成员 4 友元和内部类 5 匿名对象 6 编译器的一些优化 1 再谈构造函数 先看一段代码: class Date { public :Date(int year, int month, int day){_year year;_month month;_day day;} private:int _ye…

Redis之Linux下的安装配置

Redis之Linux下的安装配置 Redis下载 Linux下下载源码安装配置 方式一 官网下载:https://redis.io/download ​ 其他版本下载:https://download.redis.io/releases/ 方式二(推荐) GitHub下载:https://github.com/r…

基于ambari hdp的kafka用户授权读写权限

基于ambari hdp的kafka用户授权读写权限 版本Kafka 2.0.0添加自定义配置修改admin密码重启kafka授权读取授权写入有效通配符部分举例 版本Kafka 2.0.0 添加自定义配置 authorizer.class.name kafka.security.auth.SimpleAclAuthorizer super.users User:admin allow.everyo…

【强训笔记】day13

NO.1 代码实现&#xff1a; #include <iostream>#include<string>using namespace std;int n,k,t; string s;int func() {int ret0;for(int i0;i<n;i){char chs[i];if(chL) ret-1;else{if(i-1>0&&i-2>0&&s[i-1]W&&s[i-2]W) retk…