
最近在我的筆記型電腦上安裝了 Ubuntu 15.04 和 Windows 7。分割區看起來正確,一切看起來都不錯,但由於某種原因,當我啟動電腦時,它直接啟動到 Windows,而不載入 GRUB 選單。
我已多次嘗試使用 Live CD 中的啟動修復工具,但仍未解決此問題。我還按照網路建議使用終端機嘗試了一些手動修復,但這也不起作用。我是 Ubuntu 新手,因為這是我第一次安裝,我正在尋求一些幫助。
我真的很喜歡 Ubuntu,並且非常熟悉 Linux 命令,所以我不是一個完全的初學者,但我確實需要一些幫助來弄清楚如何正確設定我的系統。
可以找到我目前設定的啟動資訊摘要這裡
感謝您提前提供的任何幫助。
答案1
根據您的啟動資訊摘要
=> Windows 7/8/2012 安裝在 /dev/sda 的 MBR 中。
您已將 Windows 開機載入程式安裝到 MBR 中,並將 grub 安裝到分割區 /dev/sda6 中。所以你的電腦會直接啟動到 Windows 引導程序,它對你的 grub、linux 等一無所知。
您需要將grub直接安裝到sda,而不是分割區(sda6)。
為此,請使用任何方式啟動 Linux(您可以使用撲通啟動管理器從 CD 或任何光碟),並在控制台中執行sudo grub-install /dev/sda
(這會將其安裝在 mbr 中),然後sudo update-grub
(這將更新 grub 選單)。
根據 sda6 上的 grub.conf 判斷,update-grub 會自動將 Windows 啟動項目加入選單中。
然後你也可以啟動到任何已安裝的作業系統和Linux(似乎這將是預設選項)。
答案2
經過多次嘗試解決這個問題,我終於透過各種來源的一些提示解決了它。首先,我感謝大家為解決此問題提供的協助。所有答案都沒有直接起作用,但它們都幫助我找到了問題的解決方案,所以謝謝。
將 GRUB 直接安裝到 /dev/sda 的 MBR 中不起作用,因為我相信 Windows 和 Sony 很好地掩蓋了 Windows 在我的電腦上實際啟動的方式。最後我必須將「grubx64.efi」檔案複製到 Windows 的啟動管理器檔案上。以下是我為了安全有效地完成此操作而採取的步驟。我將詳細介紹安裝 Ubuntu 時所採取的每個步驟,以防遇到類似問題的人需要徹底的答案。
在裝有 Windows 7 的 Sony Vaio S 上安裝 Ubuntu 15.04 的步驟
注意:僅當您認為已用盡所有其他可能的選項時才應使用此流程。此過程可以工作,但需要重命名 Windows 啟動文件,如果操作不當可能會很危險。我強烈建議您在繼續之前備份重要資訊。
為 Ubuntu 安裝準備硬碟
- 啟動進入 Windows
- 如果需要,您可以對硬碟進行碎片整理,但這不是必需的
- 將 Windows 分割區縮小所需的量。我建議您決定需要多少空間來存放所有文件和安裝等,然後將 RAM 的大小添加到該數量中。
- 有關如何縮小分割區的視覺化教學課程,請按一下這裡
- 範例:我想要為我的 Ubuntu 系統保留 50GB,並且我有 16GB 的 RAM。因此我將分割區縮減了 66GB。然而,Windows 以 MB 為單位計算收縮量,因此您需要將所需的大小乘以 1024。66 x 1024 = 67584MB
- 注意:如果您目前的安裝是不是已經有 ESP(EFI 系統分割區),那麼我建議您按照另一個教學進行安裝。本教學專門針對具有 ESP 的電腦上的安裝,該電腦由於 Windows 安全措施而導致啟動問題。了解有關 UEFI 和 ESP 的更多信息這裡
從 Live CD 或 USB 啟動 Ubuntu
- 當 GRUB 選單出現時,請按一下「嘗試 Ubuntu,無需安裝」。請注意,考慮到您使用 CD 或 USB 記憶棒進行操作,所有內容載入速度都會非常慢。
當 Ubuntu 最終啟動並運行時,無論您要安裝什麼版本,請按一下桌面上的「安裝 Ubuntu XX.XX」標誌。就我而言,時間是 15.04。
按照說明單擊選單(如果您有快速的互聯網連接,尤其是在 SSD 上安裝,我建議您單擊安裝“第 3 方驅動程式”和“安裝更新”複選框。
如果您想要更快地安裝,請不要選取這些框,因為您可以稍後執行這些步驟。
重要的:當您到達顯示「指派磁碟機空間」的功能表時,您需要按一下顯示「其他內容」的選項,因為這是我們設定您在步驟 1 中準備的分割區的位置。
建立分區:
- 為交換建立分割區。選擇可用空間分割區,然後按一下左下角的加號按鈕。使大小等於您的 RAM 大小,在我的例子中是 16GB (16384MB)。選擇“主”作為分區類型,選擇“空間開始”作為位置,選擇“交換”作為部分。注意:選擇“交換”時,安裝點選項應該會消失。點擊“確定”
為所有檔案和根目錄建立分割區。這是所有檔案和程式所在的主分割區。選擇可用空間,點選左下角的加號按鈕。使大小等於您擁有的剩餘可用空間(編輯器應該自動執行此操作)。選擇「Primary」作為分割區類型,「Beginning of this space」作為位置,「Ext4 日誌檔案系統」作為使用,最後選擇「/」(根)作為安裝點。點擊“確定”
注意:不應再有剩餘的「可用空間」。如果還有剩餘,請確保所有分割區大小加起來等於您在步驟 1 中縮小視窗的 MB 總數。
重要的:選擇「用於引導程式安裝的裝置」選項時,您需要選擇與「/boot」目錄相同的位置。由於這是在 ESP 系統上安裝,因此您的啟動目錄將與 Windows 啟動管理員位於相同位置。
在我的例子中,這是“/dev/sda3”,但應該有一個描述,說“Windows Boot Manager”或類似的東西,這樣你就知道你的 ESP 位於哪個裝置上。
如果安裝程式中沒有說明,請開啟 GParted 並在「標籤」部分中尋找描述 Windows 啟動管理員的內容,這就是您要尋找的位置。在「用於引導程式安裝的裝置」中選擇該設備
現在點選右下角的「立即安裝」按鈕。這是一條不歸路。僅當您確定已正確設定所有內容時才繼續
安裝完成後,請勿按一下「重新啟動」。請點選“繼續嘗試 Ubuntu”連結並繼續執行步驟 7。
關閉所有開啟的程式和視窗。
注意:在本節中,將“/dev/sda3”替換為您在步驟 6 結束時選擇用於安裝引導程式的裝置。
打開終端並執行以下操作,同時確保仔細閱讀並花點時間。
我們需要確定您的 Windows 啟動管理員檔案所在的位置。它很可能位於“/EFI/Microsoft/Boot/bootmgfw.efi”路徑中,就像我的一樣,但我們需要確定。
我知道如何做到這一點的唯一方法是更新 grub 並讓它告訴我們它在哪裡找到了啟動管理員。透過鍵入以下內容來執行此操作,請記住將“/dev/sda3”替換為您安裝引導程式的裝置:
sudo mount /dev/sda3 /mnt cd /mnt sudo update-grub
該
cd /mnt
命令是進入 grub 安裝目錄所必需的,並且在稍後導航到不同目錄時也很有用。該update-grub
命令應該輸出如下所示的內容。這是我吐出來的:jrichter@RICKY:~$ sudo update-grub Generating grub configuration file ... Found linux image: /boot/vmlinuz-3.19.0-22-generic Found initrd image: /boot/initrd.img-3.19.0-22-generic Found linux image: /boot/vmlinuz-3.19.0-15-generic Found initrd image: /boot/initrd.img-3.19.0-15-generic Found Windows Boot Manager on /dev/sda3@/EFI/Microsoft/Boot/bootmgfw.efi done
查看最後一行,即“done”之前的行,我們應該看到引導管理員在哪裡找到。我的說 Windows 啟動管理員位於
/dev/sda3
以下位置:/EFI/Microsoft/Boot/bootmgfw.efi
這是系統正常啟動時呼叫的啟動檔案的確切位置,這就是我們需要替換的位置。筆記:如果更新 GRUB 時出錯,或者找不到 Windows 引導管理器的位置,那麼您可能安裝了錯誤的設備,或者在安裝期間將引導程式安裝到了錯誤的設備上。
如果一切運行沒有錯誤,而您現在了解 Windows 啟動的檔案和位置,那麼我們就可以繼續前進了。對於其餘步驟,請記住將我的引導檔案所在的位置替換為您的引導檔案所在的位置,儘管我敢打賭它們是相同的。
繼續輸入以下命令:
前往啟動檔案所在的目錄:
cd EFI/Microsoft/Boot
將正常的 Windows 啟動文件複製到備份和一個我們稱為「bootwin.efi」的新文件,我們將把 Windows 7 設定為啟動到 GRUB 內部:
sudo cp bootmgfw.efi bootmgfw.efi.bkp sudo cp bootmgfw.efi bootwin.efi
將 GRUB 載入程式檔案複製到正常的 Windows 開機檔案上。這是為了讓您的機器認為它正在載入 Windows,但實際上它會載入 GRUB 選單。輸入以下內容:
cd /mnt/EFI sudo cp ubuntu/grubx64.efi Microsoft/Boot/bootmgfw.efi
變更回主目錄,卸載引導程式裝置並重新啟動電腦。請注意,卸載指令稱為
umount
NOTunmount
:cd sudo umount /dev/sda3 sudo reboot
電腦重新啟動後,它應該會啟動到 GRUB 選單。
注意:我們不再使用 Live CD 或 USB,因此請確保將其刪除。如果它沒有啟動到 GRUB,那麼您可能在某個地方犯了一個錯誤,或者我們複製的檔案(「bootmgfw.efi」)實際上並不是 Windows 啟動管理員啟動時呼叫的檔案。
- 如果您遇到此錯誤,我建議您將 rEFInd 下載到可啟動 CD。插入可啟動 CD 並啟動電腦。 rEFInd 應該能夠看到所有啟動檔案並為您提供啟動選項。我建議仔細檢查這些選項,直到找到一個可以正常啟動 Windows 的選項。注意:啟動時呼叫的檔案位於 rEFInd 中的選項選擇下。將此文件用作複製“grubx64.efi”的文件
載入 GRUB 選單後,請引導至 Ubuntu。
注意:如果所有步驟都正確執行,選擇 Windows Boot Manager 選項應該會讓您返回 GRUB 功能表。這是因為我們複製了用於引導 Windows 開機管理員的檔案和用於引導 GRUB 的檔案。
現在我們回到 Ubuntu,打開終端機並輸入以下命令:
鍵入以下內容啟動管理員終端機:
sudo -s
這使我們能夠發出根級別的命令,而不必每次都鍵入 sudo。現在鍵入以下內容以尋找要新增 Windows 項目的檔案:
cd /etc/grub.d ls
這應該會給你一個文件列表。尋找類似「XX_custom」的內容,其中 XX 是一個數字,可能是十的倍數。就我而言,它是“40_custom”。該文件應如下所示:
#!/bin/sh exec tail -n +3 $0 # This file provides an easy way to add custom menu entries. Simply type the # menu entries you want to add after this comment. Be careful not to change # the 'exec tail' line above.
鍵入以下命令以新增適用於 Windows 的功能表項目(將「40_custom」替換為適當的檔案名稱):
nano 40_custom
在所有註釋下方新增一個選單項目(以 # 表示)。
注意:將「hd0,gpt3」替換為引導程式所在的對應硬碟和裝置(這與您在安裝過程中安裝引導程式的位置相同,例如,gpt3 代表 sda3)。也會將「chainloader」後面的行替換為您確定 Windows 啟動檔案所在的位置。
現在輸入以下內容,確保末尾的檔案名稱是我們先前透過複製「bootmgfw.efi」所建立的檔案名稱。我將我的命名為“bootwin.efi”:
menuentry "Windows 7" { root='hd0,gpt3' chainloader /EFI/Microsoft/Boot/bootwin.efi }
現在按“Ctrl-X”,然後按“Y”,然後按“Enter”儲存變更。確保您位於
sudo -s
終端中,否則您將無法進行變更。最後,我們需要使用新條目更新 GRUB 並重新啟動系統以確保一切正常。透過鍵入以下內容來執行此操作:
update-grub reboot
系統啟動時,GRUB 應該預設加載,並且您應該看到一個新條目,其名稱與您在“XX_custom”檔案中指定的名稱相同。就我而言,它顯示“Windows 7”。選擇 Windows 選項以確保其正確加載,因為它應該以與安裝之前相同的方式啟動 Windows。
重新啟動並確認 Ubuntu 選項仍然有效。
恭喜!您已全部完成,如果一切順利,您就已經在具有 ESP 和 Windows 的電腦上正式安裝了 Ubuntu。現在您可以雙重啟動兩個最好的作業系統:)