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

news2025/1/12 18:20:14

在这里插入图片描述

文章目录

  • 一、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:

在这里插入图片描述

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

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

相关文章

糟糕透了!知识答题PK出线上bug了!复盘与总结一下吧

糟糕透了!知识答题PK出线上bug了!我来进行复盘与总结一下吧。 主要两大问题: 1、服务器问题:云数据库watch监听报错的问题; 2、卡bug问题:匹配成功或者pk开始后,有人中途退出的问题;…

数据库监控与调优【十九】—— SQL调优实战

SQL调优实战 SQL调优实战1-常规调优 项目建表语句 -- ---------------------------- -- Table structure for carousel -- ---------------------------- DROP TABLE IF EXISTS carousel; CREATE TABLE carousel (id varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_09…

找不到mfc140u.dll怎么解决?mfc140u.dll丢失的三个解决方法

在使用Windows操作系统的时候,即使更新到最新系统,电脑系统偶尔也会出现系统报错,这个是由于Windows系统的开放性导致的。在系统报错的时候,只需要找对修复方法,对其进行修复即可,比如提示“由于找不到mfc1…

oracle只读打开数据库

客户经常有这样的需求,数据库已迁移,但还是希望原库可以打开,就只能只读模式打开了 方法一 SYSorcl> STARTUP OPEN READ ONLY; ORACLE instance started. Total System Global Area 4.0086E10 bytes Fixed Size 22549…

浅谈 Android Tombstone(墓碑日志)分析步骤

最近项目产品刚刚出货,客户退机、死机事件频发。日常解决bug中,少不了和墓碑日志打交道,截止今天之前,见到墓碑日志都是一脸懵逼,不知道怎么分析。最近又有了两个日志,硬着头皮看吧。之所以称之为浅谈&…

fail-safe 机制与 fail-fast 机制分别有什么作用

fail-safe 和 fail-fast ,是多线程并发操作集合时的一种失败处理机制。 Fail-fast : 表示快速失败,在集合遍历过程中,一旦发现容器中的数据被修改了,会立刻抛ConcurrentModificationException 异常,从而导致…

蓝奥声开发高性价比智能wifi插座进军智能家居

智能硬件的大潮袭来让智能家居这一并不新鲜的概念再次火热起来,关于智能家居的各种场景的描述给了我们很大的想象空间,然而落到实处真正开始走进生活时却又显得那么骨感,一时间作为智能家居的控制中介,小巧实用智能插座就成为家居…

多元分类预测 | Matlab粒子群算法(PSO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,PSO-HKELM分类预测

文章目录 效果一览文章概述部分源码参考资料效果一览 文章概述 多元分类预测 | Matlab粒子群算法(PSO)优化混合核极限学习机(HKELM)分类预测,多特征输入模型,PSO-HKELM分类预测 多特征输入单输出的二分类及多分类模型。程序内注释详细,直接替换数据就可以用。程序语言为matl…

C++ 内联函数基本概念学习

https://blog.csdn.net/bcbobo21cn/article/details/71305186 这里是一些内联函数示例;有时间再逐个看; 学习一下内联函数的基本概念; 其基本概念有三点; 函数调用都有开销;如果函数体代码比较多,那么…

物业租赁管理系统

物业租赁管理系统是现代宏观经济下的必备产品。随着城市化的加速和移民进城的人口数量的增加,房屋租赁业务市场得到了前所未有的爆发式增长。在这个市场中,物业租赁管理系统成为了各大物业公司的重要工具,有助于物业公司更加有效地管理各种房…

Python_类对象、实例对象、类属性、实例属性、类方法、实例方法

目录 认识类对象、实例对象、类属性、实例属性、类方法、实例方法 类对象实例化过程中的内存分配说明 认识类对象、实例对象、类属性、实例属性、类方法、实例方法 类对象:定义的类就是类对象实例对象:类对象实例化后就是实例对象类属性:定…

HarmonyOS/OpenHarmony应用开发-Stage模型应用程序包结构

基于Stage模型开发的应用,经编译打包后,其应用程序包结构如下图应用程序包结构(Stage模型)所示。开发者需要熟悉应用程序包结构相关的基本概念。 在开发态,一个应用包含一个或者多个Module,可以在DevEco S…

web自动化测试思路及实战:PO设计模式介绍

Page Objects 设计模式 Page Objects概念: Page Objects是指UI界面上用于与用户进行交互的对象 pageobjects 设计模式概念: pageobjects 模式是Selenium中的一种测试设计模式,主要是将每一个页面设计为一个Class,其中包含页面…

vue3 拖拽实现,最简单的demo

入门教程&#xff0c;后续有时间会慢慢更新&#xff0c;下面是一个简单demo实现拖拽功能 <template><div><div ref"targetDom" id"div" dragenter"dragenter">我是可放置目标</div><p id"drag" draggable…

声明式事务

1.回顾事务 把一组业务当成一个业务来做&#xff1a;要么都成功&#xff0c;要么都失败&#xff01;事务在项目开发中&#xff0c;十分的重要&#xff0c;涉及到数据的一致性问题&#xff0c;不能马虎&#xff01;确保完整性和一致性&#xff1b; 事务ACID原则 原子性一致性…

基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定

系列文章目录 基于PyQt5的桌面图像调试仿真平台开发(1)环境搭建 基于PyQt5的桌面图像调试仿真平台开发(2)UI设计和控件绑定 基于PyQt5的桌面图像调试仿真平台开发(3)黑电平处理 基于PyQt5的桌面图像调试仿真平台开发(4)白平衡处理 基于PyQt5的桌面图像调试仿真平台开发(5)…

value-initialization of reference type ‘nlohmann::basic_json<>’的错误

使用json出现这个错误&#xff0c;是因为gcc的版本问题&#xff0c;我的是4.8版本 解决办法就是更改gcc版本&#xff0c;我更改的版本是9.3 参考更改版本(3条消息) 【Linux基础】CentOS 7环境下安装高版本GCC (gcc/g 9.3)_centos7gcc版本_宁海没有七号公园的博客-CSDN博客

leetcode验证回文字符串

链接: 验证回文字符串 class Solution { public:bool isLetterOrNumber(char ch){return (ch>a && ch<z)|| (ch> 0 && ch < 9);}bool isPalindrome(string s) {//大写字母转换成小写for(auto& ch : s){if(ch> A && ch < Z){ch…

POI导出Excle工具类(反射读取Java类)

文章目录 简介操作Excel相关组件使用工具类 简介 POI是Apache软件基金会用Java编写的免费开源的跨平台的 Java API&#xff0c;Apache POI提供API给Java程序对Microsoft Office格式档案读和写的功能。 所以POI的主要功能是可以用Java操作Microsoft Office的相关文件&#xff0…

【uniapp开发小程序】点击获取手机号(使用@getphonenumber)

一、实现效果 二、代码实现&#xff1a; <template><view><view class"shopadd" v-if"info.mobile">{{info.mobile}}</view><button class"getNumber" v-else open-type"getPhoneNumber" getphonenumber…