![](/img/trans.png)
[英]Adding hugepages to default boot option in grub.conf through bash script
[英]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.