最簡單的方法是使用 Grub

最簡單的方法是使用 Grub

我有雙啟動設定:

  1. Ubuntu 16.04 LTS
  2. 視窗

目前,當我想reboot從 Ubuntu 進入 Windows 時,我會使用grub-reboot適當的數字作為參數。這效果很好。

然而,有時 Windows 需要重新啟動,以便某個程式可以安裝或更新,我必須手動選擇正確的 grub 啟動選單項目。是否有類似的方法(從 Windows UI)告訴 grub 啟動哪個項目?

我想該grub-reboot命令將參數傳遞給一個文件,該文件又由 grub 讀取reboot

編輯(關於我選擇的答案): 我目前正在考慮安裝包含 /boot 的 ext4 驅動器並編寫編輯腳本。這可能需要相當長的時間,因為我是在每週 40 小時的非技術工作之外的空閒時間做這件事的。 ^^

答案1

最簡單的方法是使用 Grub

grub從 Windows控制很麻煩。從 Windows 存取 Ubuntu 的第三方應用程式和一些駭客技術是必需的。然而,從這篇文章的頂部:如何更改我的雙重開機發行版上的順序,您可以設定grub自動重啟到最後一個選單選項。因此,當您最初使用 Windows 啟動並在凌晨 2 點喚醒執行更新時,grub它將重新載入 Windows,以便它可以順利完成更新。

當您手動重新啟動並從grub所有下一次重新啟動中選擇 Ubuntu 時,會自動載入 Ubuntu。如果目前核心中存在錯誤並希望grub自動重新啟動到您選擇的舊核心版本,則此功能同樣有效。

如何讓 Grub 重複上次啟動選擇

這是相當簡單的。使用sudo權力編輯/etc/default/grub和更改以下內容:

#GRUB_DEFAULT=0 # Rather than option #1, we'll always default to last boot choice.
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

您將註解掉第一行,並在其下方插入接下來的兩行。

儲存檔案並在終端機中輸入:

sudo update-grub

Ubuntu 命令列重新啟動進入 Windows

目前你使用這樣的東西:

sudo grub-reboot x # Where x is Windows zero-based grub menu number
sudo reboot now

從這個修改後的堆疊交換回答您可以使用 grub 預設值重新啟動進入 Windows。將此程式碼複製到您的~/.bashrc文件中:

function reboot-to-windows {
    WINDOWS_TITLE=`grep -i "^menuentry 'Windows" /boot/grub/grub.cfg|head -n 1|cut -d"'" -f2`
    sudo grub-set-default "$WINDOWS_TITLE"
    sudo reboot
}
  • ~/.bashrc使用新函數儲存檔案reboot-to-windows
  • 關閉目前的終端會話。
  • 打開一個新的終端機會話以~/.bashrc載入變更。
  • 您可以鍵入: ~/.bashrc將其重新載入到現有的終端會話中,但有些人建議不要這樣做。

若要從命令列重新啟動到 Windows,請使用:

reboot-to-windows

如果 Windows 在您不注意時會自動重新啟動,則 Windows 會重新啟動。這使得 Windows 自動更新能夠在 Windows 有時使用的多個重新啟動週期中正常處理。

答案2

您可以複製grub-reboot所做的事情。這只是一個最終呼叫的腳本:

grub-editenv /boot/grub/grubenv set next_entry="Windows"

Windowsgrub 選單項目的名稱在哪裡。可能不是那樣

我跑了那個。它所做的一切都是插入next_entry=Windows/boot/grub/grubenv.在第 2 行。您可以在 Windows 中執行完全相同的操作。這是一個需要解決的 Windows 問題,但以下是進階概述:

  • 掛載引導所在的磁碟。這可能是最難的一點,因為這可能是 ext4。可能會有所幫助,但您可能需要與 Windows 一起運行的 Linux 來編輯它,這並非不可想像。

    正如穆魯所指出的那樣,事情並不需要這麼難。您可以移動/boot到自己的FAT32分區。這使得在 Windows 中安裝變得非常簡單。

  • next_entry=Windows在註釋之後、散列之前插入(或其他內容)到文件中。

  • 解除安裝.
  • 重啟。

編寫腳本在Windows中遠遠超出了我的舒適區,也不是我們在這裡所做的事情。但這應該就是您需要做的全部。

答案3

grub-set-default應該與 grub-reboot 執行相同的操作,但使設定永久化。正如您所問,這並不完全來自 Windows UI,但也許它適合您。

答案4

您尚未說明 Windows 的版本或是否使用 UEFI。

如果您使用正確的 UEFI 啟動(而非傳統啟動),則可以暫時啟動至 Windows UEFI 啟動項目。在 Linux 上,這可以使用efibootmgr.在 Windows 上,我個人使用EasyUEFI。它可以免費供個人 GUI 使用,但不適用於企業或 CLI 使用。我不能保證它的安全性。它似乎也有點慢,但它似乎確實有效

在我自己的設定中,它使用 Arch Linux(核心 EFI shim,沒有 GRUB)和 Windows 10,在開始畫面上選擇「管理 EFI 啟動選項」後,情況如下:

顯示一次啟動選項的影像

如果您使用 UEFI 引導,您應該會看到與 Windows 類似的內容,以及 Ubuntu(載入 GRUB)的單一條目,以及一些其他特定於裝置的選項。然後,可以使用一次性啟動選項將 Windows 設定為啟動到 UEFI 啟動項,然後再啟動到 GRUB。設定完畢後,就可以正常重啟了。

相關內容