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
    • 最新
    • 标签
主页 / user-256536

Cedric Knight's questions

Martin Hope
Cedric Knight
Asked: 2017-08-21 00:40:09 +0800 CST

GRUB 在菜单之前挂起,在 HDD 升级之后。如何调试?

  • 7

我在运行 Debian wheezy 和 GRUB 1.99-27+deb7u3 的 4 x 1 TB 驱动器的服务器上遇到问题。

sda 和 sdb 具有使用(Linux 软件)RAID1 镜像的分区,包括/boot. sdc 和 sdd 各有一个分区,为数据镜像一个 LVM 物理卷。GRUB 安装到 sda 和 sdb。我曾经使用mdadm1 TB sdc,--fail并--remove用新的 2 TB ST2000NX0243 替换了旧驱动器(ST91000640NS)。

有了新的驱动器,GRUB 就更远了

GRUB loading.
Welcome to GRUB!

但无法显示菜单。sdc 上的驱动器指示灯持续亮起,因此推测 GRUB 内核正在尝试读取该驱动器,即使它不需要访问 /boot/grub。我已经尝试了两个相同型号的驱动器,两者都用 测试良好smartctl,结果相同。在 sdc 驱动器托架为空的情况下,一切正常启动。系统从 live USB 启动并且可以访问新驱动器,因此这不是硬件不兼容 (*)。我确定是 sdc 被删除了,并且没有迹象表明 BIOS 重新排序了驱动器。

(*)这可能不是一个安全的假设。查看答案。

所以我有以下相关问题:

  1. 更改的逻辑扇区大小(4096 而不是 512 字节)是否会导致问题,也许是在 GRUB 内核中内置的 RAID 支持中?为什么我至少没有得到grub rescue>提示?4K 问题也会阻止将驱动器用于 Linux RAID 吗?
  2. 解决这个问题的最快方法是什么?[以前的建议包括:我是否需要在新驱动器就位的情况下重新安装 GRUB,在这种情况下如何?GRUB 救援 USB(由同一系统制成)会出现同样的问题吗?它是 GRUB 中的一个已知错误,我应该升级吗?这些问题的答案似乎是:不,是和否。] 我可以永久配置 Debian 使用的 GRUB 映像前缀吗?
  3. 如何调试这个阶段的 GRUB?它可能对内置的模块很敏感,但是您如何找到它呢?

我正在考虑一个 debug.cfgdebug=all和类似的东西:

grub-mkimage -c debug.cfg -o dcore.img configfile normal raid fs multiboot
grub-setup -c dcore.img /dev/sda

那行得通吗?(我在自己的回答中提到了第 3 点,但在我的情况下,挂起似乎发生在嵌入式配置被执行之前。)

更多系统细节

如果它有助于可视化,这是lsblk输出的一部分:

NAME                             MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
sdb                                8:16   0 931.5G  0 disk  
├─sdb1                             8:17   0   957M  0 part  
│ └─md0                            9:0    0 956.9M  0 raid1 /boot
├─sdb2                             8:18   0   9.3G  0 part  
│ └─md1                            9:1    0   9.3G  0 raid1 /
├─sdb3                             8:19   0 279.4G  0 part  
│ └─md2                            9:2    0 279.4G  0 raid1 /var
└─sdb4                             8:20   0 641.9G  0 part  
  └─md3                            9:3    0 641.9G  0 raid1 
    ├─vg0-home (dm-0)            253:0    0   1.4T  0 lvm   /home
    └─vg0-swap (dm-2)            253:2    0    32G  0 lvm   [SWAP]
sdc                                8:32   0 931.5G  0 disk  
└─sdc1                             8:33   0 931.5G  0 part  
  └─md4                            9:4    0 931.5G  0 raid1 
    └─vg0-home (dm-0)            253:0    0   1.4T  0 lvm   /home
sdd                                8:48   0 931.5G  0 disk  
└─sdd1                             8:49   0 931.5G  0 part  
  └─md4                            9:4    0 931.5G  0 raid1 
    └─vg0-home (dm-0)            253:0    0   1.4T  0 lvm   /home
sda                                8:0    0 931.5G  0 disk  
├─sda1                             8:1    0   957M  0 part  
│ └─md0                            9:0    0 956.9M  0 raid1 /boot
├─sda2                             8:2    0   9.3G  0 part  
│ └─md1                            9:1    0   9.3G  0 raid1 /
├─sda3                             8:3    0 279.4G  0 part  
│ └─md2                            9:2    0 279.4G  0 raid1 /var
└─sda4                             8:4    0 641.9G  0 part  
  └─md3                            9:3    0 641.9G  0 raid1 
    ├─vg0-home (dm-0)            253:0    0   1.4T  0 lvm   /home
    └─vg0-swap (dm-2)            253:2    0    32G  0 lvm   [SWAP]

这是 2010 年之前的 BIOS,没有 EFI 功能。

无关:在正在运行的系统上,以下给出了与 grub-install 相同的 grub-probe 1.99 的 LVM 错误,尽管一切似乎都可以正常工作(这在 GRUB 2.02 中似乎已修复)。

# grub-fstest /dev/sda cp '(loop0,msdos1)/grub/grub.cfg' grub.cfg
error: unknown LVM metadata header.

以下答案中的调试方法显示正在安装到 sd[ab] 的图像的前缀是:

grub-mkimage -d /usr/lib/grub/i386-pc -O i386-pc --output=/boot/grub/core.img '--prefix=(mduuid/<UUID of sdN1>)/grub' biosdisk ext2 part_msdos part_msdos raid mdraid09

我不知道为什么重复“part_msdos”。没有 gpt 表。md0(引导)使用 RAID 超级块版本 0.9,md1、md2 和 md4(这些是旧阵列)也是如此。md3 是超级 1.2,但不应该参与引导。


更新

感谢您迄今为止的建议。进一步测试后:

  • BIOS 已设置为使用 sda (ata1.00) 启动。将 GRUB 重新安装到所有带有 的驱动器后dpkg-reconfigure grub-pc,没有任何变化,当新驱动器通过 SATA 连接时,GRUB 仍然挂在菜单之前。无论如何,这不能由 /boot/grub 内容与核心映像不匹配来解释。同样,物理上重新排列驱动器也没有区别。
  • 在 Debian Jessie 中将 GRUB 升级到 2.02 只会产生Welcome to GRUB!不打印消息的效果 - 相反,它会更改图形模式。它仍然在相同的条件下挂起。
  • 挂起似乎发生在嵌入式配置设置debug变量之前。不会发出有用的调试信息。
  • 当从前缀不使用 UUID 的可移动介质引导时,GRUB 会显示一个菜单,这样就可以在驱动器物理存在的情况下引导系统。但是,驱动器的 TAB 枚举会冻结。正如预期的那样,从硬盘驱动器链式加载 GRUB 像以前一样挂起。grub-mkrescue从同一系统制作的 USB 驱动器启动也会挂起。
  • 作为一个单独的故障,在实时系统(Linux 3.2.0-4-amd64)上,尝试通过内部 SATA 或 USB 将新的 4Kn 驱动器添加到 RAID1 阵列会导致Bad block number requested设备出现故障,然后是 md 系统失败驱动器BUG: unable to handle kernel paging request和内核哎呀。(mdadm --remove说失败的元素很忙,并且 md-resync 进程没有响应 SIGKILL。我没有尝试echo frozen > /sys/block/mdX/md/sync_action。使用 SATA 测试驱动器dd一切正常。)。Linux MD 驱动程序肯定能够将 4Kn 驱动器与旧驱动器同步并且不使用 BIOS 吗?

因此解决方法可能包括将非 RAID 分区挂载为/boot/; 安装带有设备相关前缀的 GRUB;或刷新 BIOS。最明智的做法可能是联系供应商更换驱动器。

换句话说,问题 3 有一个解决方案,其无效性可能是 GRUB 功能请求的主题;问题 2 说错了树,所以我修改了它;问题 1,如果不是太离题的话,现在也是关于为什么驱动器显然不能用于 Linux RAID。

我很乐意将赏金奖励给任何一个体面的解释,关于 RAID 重新同步错误,或使用flashrom4Kn 支持的轶事,如何告诉 grub-install 不要使用 UUID 或任何相关的系统管理员提示。

raid
  • 3 个回答
  • 2459 Views

Sidebar

Stats

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

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

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

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve