繁体   English   中英

重置默认Grub引导

[英]Resetting Default Grub Boot

我有一个在单个硬盘上安装了多个Red Hat的系统。 我想自动选择要在运行时启动的默认安装。 红帽这样做的方法(与Grub文档略有不同)是进入grub外壳并说

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

保存到指定的文件中。

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

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的传统保证将某些变量硬编码到该文件中的特定位置( 请参见此处 )。 请注意,在stage2的情况下,相对于512字节的偏移量给出了这些偏移量。 在我们的特殊情况下,我们要更改已保存的条目号,偏移量为0x200 + 0xC。 要将其更改为1,我们说

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM