![](/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.