gpt4 book ai didi

linux - 重置默认 Grub 引导

转载 作者:太空宇宙 更新时间:2023-11-04 10:54:38 26 4
gpt4 key购买 nike

我有一个系统,在一个硬盘驱动器上安装了多个 Red Hat。我想在运行时自动选择默认安装来启动。 Red Hat 的做法(与 Grub 文档略有不同)是进入 grub shell 并说

savedefault --stage2=<Stage 2 File> --default=<default>

其中保存到指定的。

我使用链式加载,所以磁盘上有几个 grub.conf 文件。我只想更改与/boot 中的 MBR 相关联的 stage2 文件,而不是与安装本身相关联的各个文件。在 grub 中,如果我说

find /boot/grub/stage2

find /grub/stage2

我得到了相关分区和文件的完整路径名的有效列表。在前一种情况下,类似

(hd0,1)
(hd0,2)

在后者

(hd0,0)

我想改变的是后一种情况。但是,如果我接着说

根目录 (hd0,0)

savedefault --stage2=/grub/stage2 --default=1

或类似的变体

savedefault --stage2=(hd0,0)/grub/stage2
savedefault --stage2=(hd0,0)/boot/grub/stage2

或类似的,我得到

Error 15: File not found

我隐约怀疑我没有正确安装分区,而且它可能是只读的,就像我做事的方式一样,但我所做的一切似乎都没有改变正确的 stage2 文件。请注意,如果我只是说

savedefault --stage2=/boot/grub/stage2 --default=1

或者完全关闭“--stage2=...”选项,命令成功,但会更改当前正在运行的操作系统从中启动的分区上的 stage2 文件 - 而不是与 MBR grub.conf 关联的文件实际上控制初始引导。

我在这里错过了什么?

最佳答案

因此,答案似乎是暴力覆盖 stage2 grub 文件。这是保存的菜单条目的存储位置。

Grub legacy 保证某些变量被硬编码到此文件中的特定位置 (see here)。请注意,在 stage2 的情况下,这些偏移量是相对于 512 字节偏移量给出的。在我们的特定情况下,我们想要更改偏移量 0x200 + 0xC 处保存的条目号。要将其更改为 1,我们说

printf '\x01' | dd conv-notrunc of=/boot/grub/stage2 bs=1 seek=$((0x20c))

在下次重新启动时,grub 将自动选择菜单项 1。

这是 grub-set-default 命令应该做的,但在 Redhat 发行版中缺少它,并且上面描述的替代“修复”不起作用。

关于linux - 重置默认 Grub 引导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29301084/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com