
我設定了雙啟動 Linux/Windows 系統,並且經常從一種系統切換到另一種系統。我在想是否可以在其中一個選單中新增一個選單項,以便直接重新啟動進入 Windows,而無需在 GRUB 提示符處停止。
我看見這個問題在論壇上,這正是我想要的,但它正在處理 lilo,這不是我的情況。
我想到了一個解決方案,修改 GRUB 選單中的預設條目,然後重新啟動,但有一些缺點,我想知道是否有更乾淨的替代方案。
(另外,我對從 Windows 直接啟動到 Linux 的解決方案感興趣,但這可能更難,並且不屬於這裡。無論如何,只要我以一種方式擁有它,另一種方式可以設定為預設值。
更新好像有人問類似的問題,如果這些是建議的答案,我不妨編輯/boot/grub/grubenv
和grub-reboot
做。 )grub-set-default
grub-editenv
預先感謝您的任何提示。
更新:
這是我的 GRUB 版本:(GRUB) 1.99-12ubuntu5-1linuxmint1
我嘗試運行grubonce
,找不到該命令。在儲存庫中搜尋它卻一無所獲。我使用的是 Linux Mint,所以可能就是這樣...
看起來man grub-reboot
,它似乎滿足了我的要求,也是grubonce
如此。它也隨處可用(至少對我來說是這樣,我認為它是 grub 包的一部分)。我看到兩個相關的命令:grub-editenv
和grub-set-default
。
我發現運行後sudo grub-set-default 4
,運行時grub-editenv list
你會得到類似的內容:
saved_entry=4
當運行時grub-reboot 4
,你會得到類似的東西:
prev_saved_entry=0
saved_entry=4
這意味著兩者都做同樣的事情(一個是臨時的,一個不是)。
令人驚訝的是,當我嘗試時:
sudo grub-reboot 4
sudo reboot now
它不起作用,好像我什麼也沒做,它只是像往常一樣向我顯示選單,並選擇第一個條目,說它將在 10 秒內啟動該條目。
我又試了一次,我想我可能寫錯了(它是從零開始的,對吧?)。那一次,它只是掛在選單螢幕上,我必須硬重置電腦才能啟動。
如果有人可以嘗試一下,看看是否只有我這樣,我將不勝感激。 (薄荷一直讓我很難過,這將是一個改變的好機會:P)。
閱讀 中的程式碼/boot/grub/grub.cfg
,似乎這是要走的路,但根據我的觀察,它只是忽略了這些設定...
答案1
- 編輯 /etc/default/grub 並替換
GRUB_DEFAULT=0
為GRUB_DEFAULT=saved
sudo update-grub
您的命令將是:
sudo grub-reboot "$(grep -i windows /boot/grub/grub.cfg|cut -d"'" -f2)" && sudo reboot
A漂亮的
~/.bashrc
您的or的函數.bash_aliases
可能如下所示:# Reboot directly to Windows # Inspired by http://askubuntu.com/questions/18170/how-to-reboot-into-windows-from-ubuntu reboot_to_windows () { windows_title=$(grep -i windows /boot/grub/grub.cfg | cut -d "'" -f 2) sudo grub-reboot "$windows_title" && sudo reboot } alias reboot-to-windows='reboot_to_windows'
編按:
我已經更換了已棄用的反引號(
``
)$(...)
構造。一般來說,我重寫了它以遵循當前的POSIX(維基百科)標準,並在過程中做了一些其他的小改變。
為了完整起見,我保留了以下函數以進行比較。
如果您的 grub.conf 包含適用於 Windows 的多行,則下列函數將只專注於以第一行開頭的行menuentry
,並僅選擇第一行(參考 Windows):
function my_reboot_to_windows {
WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
sudo grub-reboot "$WINDOWS_TITLE"
sudo reboot
}
答案2
為了使該grub-reboot
命令正常工作,必須進行一些必要的配置更改:
- grub 的預設條目必須設定為
saved
。一個可能的位置是GRUB_DEFAULT=
以下行:/etc/default/grub
- 用於
grub-set-default
將預設條目設定為您通常使用的條目。 - 更新您的 grub 配置(例如
update-grub
)。
這應該可以完成初始設定。以後只要做grub-reboot <entry>
一次一次啟動就可以了<entry>
。
答案3
我為 Ubuntu 20.04/22.04 編寫了一個工具來執行此操作: https://github.com/mendhak/grub-reboot-picker
它可能適用於以前的 Ubuntu,但我從未測試過。
答案4
同意@jw013。您也可以將選單圖塊賦予 grub-reboot(包括父選單的標題)。例如:
$ sudo grub-reboot "Advanced options for Ubuntu>Ubuntu, with Linux 4.13.0-26-generic"
$ sudo reboot
其中「Ubuntu 的進階選項」是父選單,「Ubuntu, with Linux 4.13.0-26-generic」是子選單。