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
    • 最新
    • 标签
主页 / computer / 问题 / 1630756
Accepted
grifferz
grifferz
Asked: 2021-03-04 23:23:26 +0800 CST2021-03-04 23:23:26 +0800 CST 2021-03-04 23:23:26 +0800 CST

grub-install:错误:嵌入是不可能的,但这是 RAID 和 LVM 安装所必需的

  • 772

在 Debian 10 (buster) 系统上,我刚刚尝试安装最近的grub-pc更新,并且第一次收到此错误:

Installing for i386-pc platform.
grub-install: warning: your core.img is unusually large.  It won't fit in the embedding area.
grub-install: error: embedding is not possible, but this is required for RAID and LVM install.

对于构成我的/boot/分区的每个磁盘都重复了此操作。

这个安装很老了;它于 2006 年安装,磁盘已多次移植到新硬件中,并且操作系统从那时起一直保持最新状态。

因此,for 的设置/boot相当陈旧,但仍然可以工作。有四个相同分区的 HDD:

$ sudo fdisk -u -l /dev/sda
Disk /dev/sda: 298.1 GiB, 320069031424 bytes, 625134827 sectors
Disk model: ST3320620AS     
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000

Device     Boot   Start       End   Sectors  Size Id Type
/dev/sda1  *         63    514079    514017  251M fd Linux raid autodetect
/dev/sda2        514080   6393869   5879790  2.8G fd Linux raid autodetect
/dev/sda3       6393870 625121279 618727410  295G fd Linux raid autodetect

所以这是一个老式的 MBR,第一个分区从 63 个扇区开始。每个磁盘的第一个分区被放入一个 4 路 RAID-1 中md0,这就是我的/boot:

$ sudo mdadm --detail /dev/md0                                                      
/dev/md0:              
           Version : 0.90            
     Creation Time : Sun Jun  4 08:18:05 2006                                       
        Raid Level : raid1                                                          
        Array Size : 256896 (250.88 MiB 263.06 MB)
     Used Dev Size : 256896 (250.88 MiB 263.06 MB)
      Raid Devices : 4
     Total Devices : 4                                                              
   Preferred Minor : 0                                                              
       Persistence : Superblock is persistent                                       
                                                                                    
       Update Time : Thu Mar  4 06:52:36 2021                                       
             State : clean
    Active Devices : 4
   Working Devices : 4
    Failed Devices : 0
     Spare Devices : 0

Consistency Policy : resync

              UUID : 78cf4169:e31908f4:e667021c:582159fb
            Events : 0.2479

    Number   Major   Minor   RaidDevice State
       0       8       49        0      active sync   /dev/sdd1
       1       8        1        1      active sync   /dev/sda1
       2       8       17        2      active sync   /dev/sdb1
       3       8       33        3      active sync   /dev/sdc1

这个 md 数组故意具有元数据版本 0.90,以便它可以由 grub 引导,因为它可以追溯到 grub 不支持 md 的时间;0.90 元数据版本将元数据放在分区的末尾,因此 grub 应该能够读取每个分区,就好像它不是软件 RAID 一样。

grub 已安装到基本磁盘设备,即每个/dev/sd{a,b,c,d}. 软件包的后续升级grub-pc似乎知道运行grub-install /dev/sda,然后对于sd{b,c,d}.

直到今天才出现此错误。

这个系统现在无法启动吗?它看起来像一个错误情况,所以我假设新版本的 grub 并没有实际安装。

我很困惑为什么它说它需要为 RAID/LVM 做一些事情,而不需要这样的支持来引导这个系统。

grub 是否因某种原因增大了大小,现在不适合每个磁盘的前 63 个扇区?我知道现在的惯例是以 1MB 开始分区,但正如我所说,这是一个非常古老的安装,一直有效。

安装此 grub 更新的最简单方法是什么?如果我需要删除那些第一个分区并以 1MB 的大小启动它们,我可以很容易地做到这一点,尽管我想在我达到那个长度之前确定这实际上是问题所在。

的详细输出grub-install -v /dev/sda是巨大的,然后以相同的方式结束。我无法在其中发现任何有用的内容,但如果有人认为有必要,我会将其包括在内。

debian grub2
  • 2 2 个回答
  • 2526 Views

2 个回答

  • Voted
  1. Best Answer
    user1686
    2021-03-05T00:47:14+08:002021-03-05T00:47:14+08:00

    grub 是否因某种原因增大了大小,现在不适合每个磁盘的前 63 个扇区?我知道现在的惯例是以 1MB 开始分区,但正如我所说,这是一个非常古老的安装,一直有效。

    具体来说,Debian Buster 和 Bullseye 上的最新 grub2 软件包包含大量补丁变更日志,其中很多都涉及添加缺失检查(例如缓冲区溢出、NULL 取消引用),这些在以前的版本中是不存在的。

    其中一些会影响配置解析器、grub.cfg 脚本执行器和分区表扫描器,所有这些都包含在安装在 MBR 后间隙中的核心映像中。这会稍微增加代码大小。

    但是,如果余量如此之小,您甚至可能会受到不同编译器为同一源输出不同代码的影响,或者受到分发更改编译器标志以添加运行时安全检查的影响。

    如果您不断更新系统,这本身就意味着软件不断变化,并且“它不能停止工作,因为它一直在工作”的理念直接消失了。

    这个 md 数组故意具有元数据版本 0.90,以便它可以由 grub 引导,因为它可以追溯到 grub 不支持 md 的时间;0.90 元数据版本将元数据放在分区的末尾,因此 grub 应该能够读取每个分区,就好像它不是软件 RAID 一样。

    但是 GRUB 2现在确实支持 md ,这意味着如果它检测到 /boot 位于 mdraid 阵列上,那么它将在其核心映像中包含一个 mdraid 驱动程序——即使该阵列恰好是 0.90 RAID1。这增加了核心图像的大小。

    (mdraid 支持不仅仅意味着能够跳过元数据——它意味着能够从 raid0/5/6 阵列读取、识别备用磁盘等等。)

    在当前的 Debian Buster 上,只有 GRUB 2 内核(没有模块也没有配置)的完全准系统 core.img 是 39 个扇区1。使用默认的 'biosdisk'、'part_msdos'、'search_fs_uuid' 和 'ext2' 模块集,它有 54 个扇区 - 如果在顶部添加 'mdraid09' 模块,那已经是 64 个扇区,而您的磁盘只有 62 个扇区备用(不包括位置 0 的 MBR 引导扇区)。

    1使用 测量grub-mkimage -O i386-pc -p /boot [modules] | wc -c。

    包裹 内核 + 5 个模块 磁盘大小
    拉伸2.02~beta3-5+deb9u2 31 186 字节 61 (~60.9) 个扇区
    克星 2.02+dfsg1-20+deb10u2 32 061 字节 63 (~62.6) 个扇区
    克星 2.02+dfsg1-20+deb10u4 32 729 字节 64 (~63.9) 个扇区
    靶心 2.04-15 31 902 字节 63 (~62.3) 个扇区
    靶心 2.04-16 33 072 字节 65 (~64.6) 个扇区
    Arch Linux 2:2.04-10 32 131 字节 63 (~62.75) 个扇区

    grub-install 还需要添加一个简短的 2 行配置,将 GRUB 内核指向您的真实 /boot 位置,但假设这适合剩余的 1⁄4 个扇区。

    在 BIOS 系统上,grub-install 还为 Reed-Solomon 纠错码使用了一些额外的空间,以便在其中一个扇区损坏的情况下进行引导——我找不到关于它使用了多少空间的信息,但它至少是几个部门。

    所以你有几个选择:

    • 将您的 /boot 分区移动到另一个偏移量,例如扇区 1024 或 2048。
    • 尝试安装--no-rs-codes并希望结果足够小以适合。
    • 构建一个不包含 mdraid09 的自定义 GRUB 核心映像(可能grub-install --skip-fs-probe --modules=...,但更可能使用grub-mkimage),假装它仍然是 2006 并且 GRUB 还没有 md 支持。
    • 2
  2. jaMO
    2021-03-05T10:37:31+08:002021-03-05T10:37:31+08:00

    该死,我的 RAID1 /boot 分区与 sda/sdb 有完全相同的问题。

    # fdisk -l /dev/sda
    Disk /dev/sda: 232.9 GiB, 250059350016 bytes, 488397168 sectors
    Disk model: WDC WD2500AAJS-0
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    I/O size (minimum/optimal): 512 bytes / 512 bytes
    Disklabel type: dos
    Disk identifier: 0x0007d768
    
    Device     Boot   Start       End   Sectors   Size Id Type
    /dev/sda1  *         63   1953125   1953063 953.7M fd Linux raid autodetect
    /dev/sda3       4305420 488392064 484086645 230.9G fd Linux raid autodetect
    

    不久前,当我从 Stretch 升级到 Buster 时,我能够从 /boot 磁盘空间不足的情况下恢复。现在这个:(

    抱歉,我对 user1686 作为解决方案提供的可能替代方案有点厚积薄发。特别是移动引导分区听起来很有趣。您能否详细说明它们,或者创建 grifferz 先生评论的新的更小的引导阵列/分区。

    从之前的引导分区练习中,我确实有一些 1GB 的未分配空间可用。我想知道我是否可以以某种方式利用它?

    Command (m for help): F
    Unpartitioned space /dev/sda: 1.1 GiB, 1206319104 bytes, 2356092 sectors
    Units: sectors of 1 * 512 = 512 bytes
    Sector size (logical/physical): 512 bytes / 512 bytes
    
        Start       End Sectors  Size
      1953792   4305419 2351628  1.1G
    488392704 488397167    4464  2.2M
    

    不知何故重装系统一点都不吸引人……

    • 0

相关问题

  • Debian 9 服务器上的 Node-RED 无法连接到 MQTT 代理

  • 使用 docker 获取 http://deb.debian.org/debian/dists/jessie-updates/InRelease 的问题

  • 根分区变成2个分区

  • Pixelbook 安装 r-base 依赖项时出现 held broken packages 错误

  • 重启 Debian 服务器后目录丢失

Sidebar

Stats

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

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve