【Linux】4、BootLoader:UBoot | BIOS、BMC 介绍

在这里插入图片描述

文章目录

  • 一、bootloader
    • 1.1 uboot
  • 二、BIOS
    • 2.1 grub
  • 三、BMC
    • 3.1 原理
    • 3.2 使用场景
    • 3.3 IPMI 规范
    • 3.4 配置和使用
      • 3.4.1 通过 ipmitool 设置 BMC IP
      • 3.4.2 通过 BIOS 设置 BMC IP

一、bootloader

参考

windows开机时会首先加载bios,然后是系统内核,最后启动完毕。那么bootloader就相当于手机的bios,它在手机启动的时候根据基带初始化硬件,然后引导系统内核,直到系统启动。

Bootloader是嵌入式系统在加电后执行的第一段代码。通过这段小程序,进行硬件初始化,获取内存大小信息等,调整手机到适配状态。在它完成CPU和相关硬件的初始化之后,再将操作系统映像或固化的嵌入式应用程序装在到内存中然后跳转到操作系统所在的空间,启动操作系统运行 。

对于嵌入式系统,Bootloader是基于特定硬件平台来实现的。因此,几乎不可能为所有的嵌入式系统建立一个通用的Bootloader,不同的处理器架构都有不同的Bootloader。Bootloader不但依赖于CPU的体系结构,而且依赖于嵌入式系统板级设备的配置。对于2块不同的嵌入式板而言,即使它们使用同一种处理器,要想让运行在一块板子上的Bootloader程序也能运行在另一块板子上,一般也都需要修改Bootloader的源程序 。

反过来,大部分Bootloader仍然具有很多共性,某些Bootloader也能够支持多种体系结构的嵌入式系统。例如,U-Boot就同时支持PowerPC、ARM、MIPS和X86等体系结构,支持的板子有上百种。通常,它们都能够自动从存储介质上启动,都能够引导操作系统启动,并且大部分都可以支持串口和以太网接口。

竞品对比如下:

  • UBoot:在嵌入式(小型服务器、少核)场景
  • GRUB:是GNU的Project,对于Linux根正苗红:在服务器(多核)场景,用BIOS+GRUB引导

1.1 uboot

uboot(universal bootloader)是一种可以用于多种嵌入式CPU的BootLoader程序,换言之,uboot是bootloader的一个子集。本质上就是一个裸机程序。

1.硬件管理uboot要能够进行Soc级(Soc内部外设)和板级(Soc外部外设)硬件管理。uboot中实现了一部分硬件的控制能力(uboot中初始化了一部分硬件),因为uboot为了完成一些任务必须让这些硬件工作。譬如uboot要实现刷机必须能驱动iNand,譬如uboot要在刷机时LCD上显示进度条就必须能驱动LCD,譬如uboot能够通过串口提供操作界面就必须驱动串口。譬如uboot要实现网络功能就必须驱动网卡芯片。2.能够完成镜像烧录(刷机)uboot要能够被借助完成刷机操作。参考下SD卡刷机的步骤:

a.烧录uboot到SD卡中。有2种烧写方法:一种是在windows中用刷卡工具去制作启动SD卡;另一种是在linux中用dd命令。制作完SD后将SD卡插入开发板,然后开机就可以进入uboot界面。

b.使用uboot的fastboot命令,并借助PC中的fastboot软件完成包括uboot、kernel、rootfs等的镜像的烧录。从上面就可以看出,刷机依靠的是uboot的fastboot命令,将镜像写到相应的FLASH中。

3.uboot的“生命周期”uboot的入口就是开机自动启动,uboot的唯一出口就是启动内核。uboot还可以执行很多别的任务(譬如烧录系统),但是其他任务执行完后都可以回到uboot的命令行继续执行uboot命令,而启动内核命令一旦执行就回不来了。

4.uboot要提供命令式shell界面shell是用户操作接口的意思。shell有命令行的shell,如windows下的cmd,如linux下的终端;也有GUI式的shell,比如常用的windows下的各种界面。shell是一种封装后留出来的接口,uboot也要有这样的一个接口。

shell的原理是:由消息接收、解析、执行构成的一个死循环。

uboot的shell使用的也是行缓冲的模式。也就是以回车键(换行键)作为一个命令输入的结束。对应的其他缓冲模式还有无缓冲和全缓冲:无缓冲就是输入一个字符就当做一个命令处理;全缓冲就是无论输入什么都缓冲起来知道缓冲区满了才做一次处理。

二、BIOS

BIOS(Basic Input Output System),即基础输入输出系统,是刻在主板 ROM 芯片上不可篡改的启动程序,BIOS 负责计算系统自检程序(POST,Power On Self Test)和系统自启动程序,因此是计算机系统启动后的第一道程式。由于不可篡改性,故程序存储在 ROM 芯片中,并且在断电后,依然可以维持原有设置。

BIOS 主要功能是控制计算机启动后的基本程式,包括硬盘驱动(如装机过程中优先选择 DVD 或者 USB 启动盘),键盘设置,软盘驱动,内存和相关设备。

CMOS(complementary metal-oxide-semiconductor 的缩写)是通常用来描述计算机主板上存储BIOS设置的少量内存的术语。CMOS 有时被称为实时时钟 (RTC)、CMOS RAM、非易失性 RAM (NVRAM)、非易失性 BIOS 存储器或互补对称金属氧化物半导体 (COS-MOS) )。下图为计算机主板上的 CMOS 电池:

在这里插入图片描述

重置 BIOS 为出厂设置时,即会重写 CMOS,且 CMOS 掉电不丢:
在这里插入图片描述

2.1 grub

GRUB 是 GRand Unified Bootloader(大一统引导程序) 的首字母缩写。如果你曾经使用过 Linux 桌面,你一定见过这个屏幕。这就是所谓的 GRUB 屏幕。

在这里插入图片描述

GRUB 是一个用于加载和管理系统启动的完整程序。它是 Linux 发行版中最常见的引导程序bootloader。引导程序是计算机启动时运行的第一个软件。它加载 操作系统的内核,然后再由内核初始化操作系统的其他部分(包括 Shell、显示管理器、桌面环境 等等)。

你在菜单界面里对 GRUB 所做的任何改变都是暂时的。如果你想对 GRUB 做一些永久性的改变,比如改变默认的超时时间,你可以在 Linux 系统启动后修改 GRUB 配置文件。

默认的 GRUB 配置文件是 /etc/default/grub。还有一个 /etc/default/grub.d 目录,里面也存放一些配置。你可以直接编辑 /etc/default/grub 文件,但是我还是建议通过在这个目录中添加配置文件(.cfg 文件)进行额外的修改。

在这里插入图片描述

三、BMC

BMC(BaseboardManagement Controller) 用来管理服务器上的硬件(管理、监控、安装、重启等)。

3.1 原理

​ BMC是一款服务器AC上电起始即运行的软件,运行在服务器上一款单独的ARM芯片上,这个ARM芯片就是BMC软件的CPU,同时会芯片外围会配置自己的RAM、Flash等器件,只要服务器插上电源线,BMC软件便快速运行起来,此时有可能我们通常意义上的x86服务器侧的OS都还没有安装呢。BMC是整个服务器的大管家,主要用于服务器各个部件(CPU、内存、硬盘、风扇、机框等)的温度、电压等健康状态进行检测,同时根据各个温度采集点情况实时调整风扇转速保证服务器不产生过温、而且控制总体功耗又不能过高,如果单板部件出现任何异常则通过SNMP协议、SMTP协议、Redfish协议等多种业界通用规范讲信息及时上报给上层网管,以便运维人员及时处理,保证业务无损。

比如,我们操作一台服务器,通常都是用ssh远程连接。登录ssh,我们需要变更网卡地址,命令service network restart, 过了一会儿发现连不上了。可能是配置错了,访问不了了。那么怎么办?这个时候就需要重新配置,然后重启服务了。呼哧呼哧找网管要门禁卡,再跑到机房,再在这一堆一堆的服务器中找到目标机器,然后本地操作修正。

如果使用BMC,就可以解决这个问题,它提供了远程管理硬件的功能。它可以改BIOS,改介质启动顺序,改风扇转速,统计耗电信息等等。它也提供一整套的管理命令,比如 ipmicmd ipmievd ipmilan ipmish ipmi_sim ipmitool ipmi_ui等。

3.2 使用场景

BMC 是独立于服务器系统之外的小型操作系统,是一个集成在主板上的芯片 or 通过 PCIE 等形式插在主板上,对外表现形式只是一个标准的 RJ45 网口,拥有独立 IP 的固件系统。

BMC 比主机服务器享有更大的权限,这有效地保证了业务节点和管理节点的分离,保证业务节点不会干扰管理节点,而管理节点可以实时对业务节点进行管理监控。
在这里插入图片描述

功能如下:

  • 异常上报:当系统实际发生故障时,BMC需要第一时间捕捉异常,实现实时告警及log上传,运维人员可及时锁定故障部件并完成替换,保证业务稳定不中断。
  • 管理网络:监控运行状态、升级机器固件、远程批量部署OS、针对严重事件的自发纠正。
  • 支持设置 BIOS
  • 自主监控:组件(如CPU、内存、芯片组、环境、部件等)的温度、电压、风扇状态、电源状态等
  • 日志记录:当检测系统出现错误(如某一设备温度过高,服务器蓝屏宕机)时,生成相关日志并保存
  • 恢复控制:当检测到严重错误(如CPU core温度超出阈值,整机功耗超出电源额度功耗范围)时,可将服务器下电保护
  • Web Server:提供Web界面,用户可以访问Web并查看系统状态
  • 远程控制:远程上电/下电/复位服务器、vKVM、vMedia
  • 风扇转速控制,主要用于系统散热优化
  • 告警功能:LED指示灯、SNMP Trap、邮件通知等

3.3 IPMI 规范

IPMI(Intelligent Platform Management Interface):智能型平台管理接口,是一组交互标准管理规范,由 Intel、HP、Dell 和 NEC 公司于1998年9月16日共同提出,主要用于服务器系统集群自治,监视服务器的物理健康特征,如温度、电压、风扇工作状态、电源状态等。同时,IPMI 还负责记录各种硬件的信息和日志记录,用于提示用户和后续问题的定位。目前,IPMI 已经为超过 200 多家计算机供应商所支持。

IPMI 是独立于主机系统 CPU、BIOS/UEFI 和 OS 之外,可独立运行的板上部件,其核心部件即为 BMC。或者说,BMC 与其他组件如 BIOS/UEFI、CPU 等交互,都是经由 IPMI 来完成。在 IPMI 协助下,用户可以远程对关闭的服务器进行启动、重装、挂载 ISO 镜像等。

在这里插入图片描述

3.4 配置和使用

服务器后面有两个网口,一个用于共享网络,另一个用于专用网络。共享网络就是指我们正常使用的网络,而专用网络是用来访问BMC。

在这里插入图片描述

每个服务器出厂之后,就像路由器一样,自带一套管理系统。这个系统是相对服务器操作独立存在,而管理其硬件,比如电源,风扇,存储,CPU等等。

在这里插入图片描述

3.4.1 通过 ipmitool 设置 BMC IP

那我们怎么登陆这个管理系统呢?

这里用到了一个命令ipmitool。

ipmitool lan 使用来配置网络信息,

ipmitool lan print 1 可以查看当前BMC的ip,我们可以通过这个IP访问管理界面。

修改命令 ipmitool lan set 1 ipaddr x.x.x.x

(这里的1,是指通道号)

在这里插入图片描述

接下来确认,专用网络连通,就是把专用网口用网线连到交换机上。这样我们就可以远程访问BMC了。

3.4.2 通过 BIOS 设置 BMC IP

例如开机,按F2进入BIOS,进入Server Mgmt:

在这里插入图片描述

进入configuration (static on next reset),配置ip:

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

第九十三天学习记录:C++核心:类和对象Ⅱ(五星重要)

对象的初始化和清理 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始化状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c利用了构造函数和析构函数…

React Native 集成到iOS原有的项目上

1.官方说明地址: 集成到现有原生应用 2. 主要步骤说明 把 React Native 组件集成到 iOS 应用中有如下几个主要步骤: 配置好 React Native 依赖和项目结构。了解你要集成的 React Native 组件。使用 CocoaPods,把这些组件以依赖的形式加入到项…

机器学习复习6

机器学习复习 1 - 在机器学习的背景下,什么是诊断(diagnostic)? A. 这指的是衡量一个学习算法在测试集(算法没有被训练过的数据)上表现如何的过程 B. 迅速尝试尽可能多的不同方法来改进算法,从而看看什么方法有效 C. 机器学习在医疗领域的应用…

Python 基本数据类型(五)

文章目录 每日一句正能量List(列表)结语 每日一句正能量 营造良好的工作和学习氛围,时刻牢记宗旨,坚定信念,胸怀全局,埋头苦干,对同事尊重信任谅解,发扬团体协作精神,积极…

让集合数据操控指尖舞动:迭代器和生成器的精妙之处

文章目录 💙迭代器(Iterator)迭代器的特点:迭代器的优点:代码案例: 💚生成器(Generator)生成器的特点:生成器的优点:代码案例: &#…

在WSL2中安装IntelliJ IDEA开发工具

一、wsl支持图形 windows安装xming https://sourceforge.net/projects/xming/ 添加白名单 查看服务器ip ifconfig 编辑配置文件(结合自己的安装目录) ‪D:\ProgramFiles\Xming\X0.hosts 启动Xlaunh wsl 配置并验证 #b编辑配置文件 vi ~/.bashrc #末尾增加配置 export DI…

二、1什么是面向对象编程?

你好,我是程序员雪球,接下来与你一起学习什么是面向对象编程。 面向对象编程是一种编程风格。它以类或对象作为组织代码的基本单元,并将封装,抽象,继承,多态四个特性,作为代码设计的实现基石。 …

你如何理解 JS 的继承?

在JavaScript中,继承是一种机制,允许一个对象(子类)从另一个对象(父类)继承属性和方法。这使得子类可以共享父类的功能,并有能∧自身定义新的功能。 JavaScript中的继承通过原型链实现。 具体来…

RabbitMQ管理界面介绍

1.管理界面概览 connections: 无论生产者还是消费者,都需要与RabbitMQ建立连接后才可以完成消息的生产和消费,在这里可以查看连接情况 channels: 通道,建立连接后,会形成通道,消息的投递获取依…

ChatGPT中 top_p 和 temperature 的作用机制

1. temperature 的作用机制 GPT 中的 temperature 参数调整模型输出的随机性。随机性大可以理解为多次询问的回答多样性、回答更有创意、回答更有可能没有事实依据。随机性小可以理解为多次询问更有可能遇到重复的回答、回答更接近事实(更接近训练数据)…

自动化测试框架[Cypress概述]

目录 前言: Cypress简介 Cypress原理 Cypress架构图 Cypress特性 各类自动化测试框架介绍 Selenium/WebDriver Karma Karma的工作流程 Nightwatch Protractor TestCafe Puppeteer 前言: Cypress是一个基于JavaScript的端到端自动化测试框架…

【SpringMVC 学习笔记】

SpringMVC 笔记记录 1. SpringMVC 简介2. 入门案例3. 基本配置3.1 xml形式配置3.2 注解形式配置 4. 请求4.1 请求参数4.1.1 普通类型传参4.1.2 实体类类型传参4.1.3 数组和集合类型传参 4.2 类型转换器4.3 请求映射 5. 响应 1. SpringMVC 简介 三层架构 2. 入门案例 3. 基本…

基于matlab使用深度学习估计身体姿势(附源码)

一、前言 此示例演示如何使用 OpenPose 算法和预训练网络估计一个或多个人的身体姿势。 身体姿势估计的目标是识别图像中人的位置及其身体部位的方向。当场景中存在多个人时,由于遮挡、身体接触和相似身体部位的接近,姿势估计可能会更加困难。 有两种…

Spring概念:容器、Ioc、DI

目录 什么是容器? 什么是 IoC? 传统程序的开发 理解 Spring IoC DI 总结 我们通常所说的 Spring 指的是 Spring Framework(Spring 框架),它是⼀个开源框架,有着活跃⽽庞⼤的社区,这就是它…

Swin Transformer训练报错问题

1. 训练遇到报错问题 (1)mportError: cannot import name _pil_interp from timm.data.transforms 原因: timm.data.transforms里面没有_pil_interp,只有str_to_pil_interp、_str_to_pil_interpolation、_pil_interpolation_to_s…

【Docker】docker安装配置Jenkins

docker 安装 Jenkins #拉镜像 docker pull jenkins/jenkins#创建卷(volume) docker volume create jenkins_home#制作容器并启动 docker run -d \ -p 8080:8080 \ -p 50000:50000 \ -v jenkins_home:/var/jenkins_home \ -v /usr/lib/jvm/java-8-openjdk-amd64:/usr/local/java…

如何将window文件夹挂载到VMware系统mnt目录

背景:项目开发过程中,通常是在Windows上编码,有些框架和软件只能够在Linux上面执行,如果在 VMware中的Linux上面开发不太方便,因此需要在Windows上面开发好再同步到Linux上面运行。 软件: Samba客户端 V…

配置Jenkins的slave agent并使用它完成构建任务

上一章,使用单机配置并运行了一个简单的maven项目,并发布到了一个服务器上启动。这一章将要配置一个slave agent,并将上一章的job放到agent上执行。我们agent使用的是ssh的方式 前置步骤 准备两台虚拟机: 192.168.233.32&#…

svn commit 用法

转载   原文:https://blog.csdn.net/qq_39790633/article/details/103700391 使用svn进行代码的提交有两种方法:一种是通过TortoiseSVN客户端界面进行提交,另一种是通过svn commit指令提交。 方法一:通过TortoiseSVN客户端界面提…

STM32速成笔记—IWDG

文章目录 一、IWDG简介二、STM32的IWDG2.1 STM32的IWDG简介2.2 喂狗2.3 IWDG框图 三、IWDG配置步骤四、IWDG配置程序4.1 IWDG初始化程序4.2 喂狗 五、应用实例 一、IWDG简介 独立看门狗(Independent Watchdog, IWDG),什么是看门狗&#xff1…