簡體   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