AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 768241
Accepted
Dmitry Dmitriev
Dmitry Dmitriev
Asked: 2024-02-01 23:26:36 +0800 CST2024-02-01 23:26:36 +0800 CST 2024-02-01 23:26:36 +0800 CST

ESP 和 GRUB 安装

  • 772

目的是使用 debootstrap 安装 Debian。首先我想把所有系统安装在一个32GB的小闪存盘上。

GPT分区表和GRUB的概念很清楚:有一个分区表。每个分区都有唯一的 ID。此外,在每个分区上创建了一个文件系统。FileSystem本身是存储文件、日志、目录等的方式,它是一个DataSturture。

好的。清除。

现在有ESP。存储BOOTLoader的分区。而且一定是FAT32不是吗?

现在我需要获取内核、ramdisk。在 FlashStick 上创建 ESP。安装 GRUB,使其位于 ESP 上,并选择适当的内核和 Ramdisk。我被困在这里了。

  1. 如何创建ESP?它是一个简单的分区,进一步格式化为FAT32吗?
  2. 如何告诉 GRUB 安装在哪里?如何配置呢?我知道grub-mkconfig- 并且我知道需要设置 linux 和 initrd 但仍然有点令人困惑。

所以这里开始出现问题。

如何将 ESP 与文件系统的其余部分连接?内核如何知道在哪里搜索所有文件和配置?

从启动 GRUB 到启动内核传递参数以及将 ESP 安装到 FileSystm 的跳转看起来很奇怪和尴尬。

需要帮忙。

谢谢。

kernel
  • 1 1 个回答
  • 21 Views

1 个回答

  • Voted
  1. Best Answer
    telcoM
    2024-02-02T05:24:02+08:002024-02-02T05:24:02+08:00

    如何创建ESP?它是一个简单的分区,进一步格式化为FAT32吗?

    是的,它是一个简单的分区,格式化为 FAT32(较新的 UEFI 版本也可能接受其他形式的 FAT),并且GPT 样式分区表的分区类型 UUID设置为指示它是 EFI 系统分区(简称 ESP) 。如果您从 MBR 分区磁盘启动 UEFI 样式,则 ESP 的分区类型代码应设置为,0xef而不是常规的 FAT32 分区类型代码。

    如何告诉 GRUB 安装在哪里?如何配置呢?

    要安装 GRUB,grub-install需要使用该命令。它将应安装 GRUB 的磁盘或分区的设备名称作为参数。

    如果磁盘上只有一个 ESP(通常建议这样做),您可以只指定整个磁盘设备,例如/dev/sda或/dev/nvme0n1,就像安装旧版 BIOS 风格的 GRUB 时所做的那样。它会自动找到 ESP 并写入grubx64.efi其中,并将其注册到 UEFI NVRAM 固件变量中(您可以使用 查看efibootmgr -v)。

    如果要安装到可移动闪存磁盘,还应该指定--removable选项grub-install。如果磁盘本身不可移动,但您计划将其移动或克隆到另一个系统,--force-extra-removable则您可能应该使用该选项。

    一旦安装了 GRUB,grub-mkconfig或者它的 Debian 特定update-grub包装器,就可以用来创建 GRUB 配置文件。

    在 Debian 中,ESP 的标准挂载点是/boot/efi. 其他发行版的做法可能有所不同。


    当系统以 UEFI 方式引导时,固件将首先检查其 NVRAM 引导变量以获取引导顺序。UEFI 样式的引导变量将指定设备、其上的 ESP 分区(主要由 ESP 的唯一 PARTUUID 标识)以及要在该 ESP 中使用的引导文件。对于永久安装的 Debian 发行版,启动文件路径名将为(Windows 风格,就像固件通常代表的那样)\EFI\debian\grubx64.efi,或者\EFI\debian\shimx64.efi如果还需要安全启动兼容性并且已安装shim-signed和软件包。grub-efi-amd64-signed

    如果没有启动变量(例如,因为选择了可移动媒体进行启动),64 位 x86 UEFI 系统将查找路径名(Windows 风格)\EFI\BOOT\BOOTx64.efi。如果 GRUB 是使用--removable或--force-extra-removable选项安装的,则这实际上是grubx64.efi.

    因此,固件将启动 GRUB,然后 GRUB 将从\EFI\debian\grub.cfgESP 中读取数据。它通常只包含一个search命令,告诉 GRUB /boot/grub使用其 UUID 查找包含的任何分区,然后是/boot/grub/grub.cfg从那里读取所需的命令。(根据系统的设置方式,这可能指根文件系统,或单独的/boot文件系统 - 任何一种方式都可以。)

    从 读取真实配置后/boot/grub/grub.cfg,GRUB 将知道在哪里可以找到内核和 initramfs 文件,以及向用户呈现哪些菜单项。然后GRUB将加载选定的内核和initramfs文件,将指定的内核启动选项传递给内核命令行,然后启动内核。至此,GRUB、ESP 和目录的引导时工作/boot均已完成- 从此时起,引导可以在没有它们的情况下继续进行。

    内核将根据root=内核引导选项和 initramfs 中的任何脚本找到根文件系统,一旦找到、检查(如果需要)并安装根文件系统,引导过程将能够访问真实的文件系统/etc并根据在那里找到的信息。

    在启动时,内核永远不需要访问ESP /boot- 当内核启动时,引导加载程序和固件将已经从那里读取它们需要的所有内容。安装 ESP/boot/efi仅是为了方便更新引导加载程序及其配置。如果您打算永远不这样做(例如,在将通过完全重新映像接收任何更新的嵌入式设备系统中),您可以完全卸载 ESP。

    • 1

相关问题

  • /proc/net/wireless 如何是 /proc/net/dev 的“克隆”?

  • Linux Mint 内核损坏

  • Linux 内核开发人员如何处理数百万行代码的工作?他们是一种方法吗?[关闭]

  • 通过标签将根文件系统传递给linux内核

  • 以 root 用户身份访问文件系统

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve