UEFI/Legacy bios简介与grub安装教程

2023-11-03

目录

一、BIOS简介

二、UEFI与Legacy 启动模式简介

①Legacy启动模式

②UEFI启动模式

③具体不同

​三、grub安装

①grub软件包的安装

②grub源码下载

③grub本地编译安装及使用(Ubuntu 环境下)

四、参考


一、BIOS简介

BIOS 其实是一个英文缩略词,即 “Basic Input Output System” 四个单词的首字母组合,中文直译为“基本输入输出系统”,是一组固化到计算机内主板上一个 ROM 芯片上的程序。顾名思义,它保存着计算机最重要的基本输入输出的程序,还包括开机后自检程序和系统自启动程序。除此以外,它还可从 CMOS 中读写系统设置的具体信息。 其主要功能是为计算机提供最底层的、最直接的硬件设置和控制。

BIOS在加载工程中,承担kernel和硬件之前承上启下的作用。对于kernel来说,BIOS类似保镖一般,为其执行做好一切准备;对于硬件设备来说,BIOS就是质检员,检测初始化所有硬件设备。

二、UEFI与Legacy 启动模式简介

①Legacy启动模式


legacy启动模式是指BIOS 固件用来初始化硬件设备的引导过程,Legacy启动模式包含一系列已安装的设备,这些设备在引导过程中计算机执行 POST (开机自检)测试时会被初始化。传统引导将检查所有连接设备的主引导记录 (MBR),通常位于磁盘的第一个扇区。
当它在设备中找不到引导加载程序时,Legacy会切换到列表中的下一个设备并不断重复此过程,直到找到引导加载程序,否则返回错误。

②UEFI启动模式

UEFI(统一可扩展固件接口)是一个公开的规范,定义了操作系统和平台固件之间的软件接口。UEFI 是传统 PC BIOS 的继承者,旨在解决其技术限制。它将引导数据存储在 .efi 文件中,而不是固件中。你经常会在新款的主板中找到 UEFI 启动模式。UEFI 启动模式包含一个特殊的 EFI 分区,用于存储 .efi 文件并用于引导过程和引导加载程序。

UEFI使用GPT的分区引导方案,支持更大的硬盘。由于省去了BIOS自检的过程,所以启动速度更快。

 ③具体不同


三、grub安装

①grub软件包的安装

Debian/Ubuntu系统一般安装时会自带grub,如果没有的话可以通过 sudo apt-get install ...进行安装。但这种自带的grub一般只适配自身系统且版本不一,如果希望使用grub制作其他系统的启动盘还是建议下载源码进行本地编译安装。

②grub源码下载

官网链接:https://ftp.gnu.org/gnu/grub/(不推荐,下载速度)

清华镜像源:https://mirrors.tuna.tsinghua.edu.cn/gnu/grub/(推荐)

③grub本地编译安装及使用(Ubuntu 环境下)

(1)Legacy启动模式

grub编译安装:

进入解压完的grub文件夹,输入命令:

./configure --target=i386 --prefix=yourpath 
#--prefix选择自己想安装的地址,--target选择目标平台,一般为i386或x86_64
make -j $(nproc) #以自己的核心数进行代码编译
make install#安装

使用:①在启动盘上创建MBR分区表

           ②创建分区,将其第一个分区的文件系统设置为FAT32

           ③把grub安装到第一个分区上

./grub-install --target=i386-pc --boot-directory=${boot_folder} /dev/$LOOP_DEVICE
#运行刚刚安装的grub-install (需要自己加上对应安装路径或进入安装目录执行命令),
#--target选择目标平台(pc表示legacy bios),后面两个参数为boot所在文件夹与该启动盘在
#linux系统下的挂载位置

(2)UEFI启动模式

grub编译安装:

进入解压完的grub文件夹,输入命令:

./configure --target=i386 --with-platform=efi --prefix=yourpath
#--prefix选择自己想安装的地址,--target选择目标平台,一般为i386或x86_64
#--with-platform=efi表示目标平台为uefi启动模式,不设定该参数默认legacy
make -j $(nproc) 
make install

使用:①在启动盘上创建GPT分区表

           ②创建分区,将其一个分区的文件系统设置为FAT32,并将其标记为boot(启动)分区

           ③把grub安装到boot分区上

./grub-install --target=i386-efi  --efi-directory=${mount_folder}  --boot-directory=${boot_folder}  --removable
#运行刚刚安装的grub-install (需要自己加上对应安装路径或进入安装目录执行命令),
#--target选择目标平台(efi表示uefi bios),后面两个参数为该启动盘在linux系统下
#的挂载位置与boot所在文件夹,removeable表示该安装是可移动到其他设备上运行的

注意:boot分区的大小应大于32MB,小于32MB会导致识别不到efi文件

(3)grub.cfg文件的编写

uefi/legacy 启动grub,grub就按照grub.cfg的内容运行,所以如果想用grub来启动自己的kernel内核程序,就应该在grub.cfg里面加上对应内容。存放路径为${boot_folder}/grub/grub.cfg。

四、参考

UEFI与Legacy 启动模式简介参考:一文读懂Legacy 和 UEFI的区别,到底选择哪一个?

grub详细安装流程及问题处理:GRUB - ArchWiki

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

UEFI/Legacy bios简介与grub安装教程 的相关文章

随机推荐

  • PC软件崩溃定位方式-windbg

    本篇适用于WINDOWS的C C 编译的程序分析 不适用于C java程序分析 windbg是微软的工具 可以去微软官方搜索下载 该工具可以调试exe 也可以导出收集dmp文件 用于后续分析 当前方式主要应用于启动的瞬间崩溃 分析步骤 启动
  • Python实现字符串分隔(华为机试)

    目录 题目描述 题目分析 测试用例 代码 传送门 题目描述 连续输入两组字符串 请按长度为8拆分每个字符串后输出新的字符数组 长度不是8整数倍的字符数组请在后面补0 输入 输出示例 输入 abc 123456789 输出 abc00000
  • 点击按钮时触发防抖

    当在React中点击按钮时触发防抖 并传递一个ID作为参数 你可以使用useRef和useCallback钩子来实现 import React useState useRef useCallback from react const But
  • 802.11 帧格式及类型

    1 帧格式 下面是802 11帧的组成结构 帧总寻此结构 从上面的结构可以知道 前俩个字节为 帧控制字段 控制字段的前2bit节为 协议类型 目前此值为 0 1 控制帧 用于竞争期间的握手通信和正向确认 结束非竞争期等 2 管理帧 主要用于
  • Altium designer10---PCB添加Logo

    安全之安全 security 博客目录导读 目录 1 生成bmp后缀的图片 画图打开 调整大小 生成bmp 2 生成PCB Logo PCB Logo Creator 图标生成器 Load加载 Convert转换 3 复制到所制作板子的PC
  • python基础八:函数

    1 函数简介 1 1语法 语法 def 函数名 形参1 形参2 形参3 代码块 函数名 调用函数 1 2介绍 函数是个对象 function 函数用来保存一些可执行的代码 在你需要的时候可以对这些语句进行多次调用 函数中保存的代码不会立即执
  • Sublime Text 4 汉化 安装Install Package Mac 安装插件

    1 下载安装包Sublime Text 4 官网选择安装包下载 下载完成直接打开 下载应用程序 运行应用程序 2 Sublime Text 4 跳过 不需要 安装Install Package工具 Text 4 不需要安装Package工具
  • Description:Web server failed to start. Port 8080 was already in use.

    APPLICATION FAILED TO START Description Web server failed to start Port 8080 was already in use Action Identify and stop
  • 顺序表——简单实现(静态数组)

    实现基于静态数组的顺序表的以下基本操作 1 初始化 2 尾插 3 尾删 4 头插 5 头删 6 读任意位置元素 7 修改任意位置元素 8 查找指定元素值的下标 9 在任意位置插入元素 实现环境 Centos6 5 vim编辑器 大体的思路
  • web前端字体居中_css文字居中怎么弄?

    CSS是一种定义样式结构如字体 颜色 位置等的语言 被用于描述网页上的信息格式化和现实的方式 下面我们来看一下css设置文字居中的方法 css可以通过为文字所在标签添加text align center样式使文字居中 text align属
  • git冲突在eclipse、idea、sourceTree上的解决方法

    一 使用eclipse时 情形一 用户1编辑A文件并提交 用户2未拉取最近代码也编辑A文件产生的冲突 用户2未提交本地仓库时 1 进入同步页面 注意 只有一个向下箭头表示未提交本地仓库 2 拉取远程文件 双击冲突文件减去编辑 将右侧代码合并
  • IT实习技能提升第一篇

    文章目录 前言 一 Git 1 基础配置 2 老板让去git上拉取代码 3 更改完代码后上推 二 QT使用步骤 1 注册QT账号挺有必要 2 同时运行两个项目 总结 前言 新入职的码农 嵌入式软件方向 提示 以下是本篇文章正文内容 下面案例
  • IOS小白入门指南

    加入ios 项目已经一个多月了 本篇文章主要介绍IOS开发入门的一些基础知识 帮助想学习iOS开发的人更有效率地学习 目录 需要的计算机基础 开发语言选择 IOS两种开发语言的异同 Objective C和swift的相同点 二者的不同点
  • 关于webview加载网页,返回后总是刷新页面问题解决

    最近用webview发现返回上个页面总是又自动刷新页面 我的需求是进入下页的时候不用缓存 而返回上个页面的时候不要刷新页面回到顶部 要保持在原来页面进入下页的位置 首先来了解一下webview加载网页的几个模式 即websetting中设置
  • 【AI视野·今日CV 计算机视觉论文速览 第211期】Wed, 2 Jun 2021

    AI视野 今日CS CV 计算机视觉论文速览 Wed 2 Jun 2021 Totally 63 papers 上期速览 更多精彩请移步主页 Interesting YOLOS You Only Look at One Sequence 纯
  • 冲击python二级——python的安装,IDLE的一般操作,PIP包管理使用,变量基础

    现在大部分的教程 都会要求直接安装Anaconda 和Pycharm 虽然pycharm是非常优秀的python IDE生产工具 但是对于新手来说配置比较繁琐 并不友好 而且国考计算机二级 只能用python自带的idle 用pip包管理安
  • 大数据——基于Spark Streaming的流数据处理和分析

    基于Spark Streaming的流数据处理和分析 流是什么 为什么需要流处理 流处理应用场景 如何进行流处理 Spark Streaming简介 Spark Streaming流数据处理架构 Spark Streaming内部工作流程
  • 实验室项目——连接mysql服务器报错(驱动版本不一致)

    mysql right syntax to use near OPTION SQL SELECT LIMIT 15 at line 1 问题描述 OPTION SQL SELECT LIMIT XXX 问题原因 项目使用的mysql驱动和m
  • 集线器、交换机和路由器(图解)

    一 物理层 使用 MAC 解决设备的身份证问题 1 通信的原始时代 很久很久之前 你不与任何其他电脑相连接 孤苦伶仃 直到有一天 你希望与另一台电脑 B 建立通信 于是你们各开了一个网口 用一根网线连接了起来 用一根网线连接起来怎么就能 通
  • UEFI/Legacy bios简介与grub安装教程

    目录 一 BIOS简介 二 UEFI与Legacy 启动模式简介 Legacy启动模式 UEFI启动模式 具体不同 三 grub安装 grub软件包的安装 grub源码下载 grub本地编译安装及使用 Ubuntu 环境下 四 参考 一 B