通過grub2修改雙系統啟動順序
一般情況下,有人可能直接修改GRUB配置文件“/boot/grub/grub.cfg”,但使用“sudu vim /boot/grub/grub.cfg”發現提示這個是系統自動生成的文件,不建議直接編輯,而應該到“/etc/grub.d”和“/etc/default/grub”去修改。
“/etc/grub.d”是操作系統菜單目錄,一般由系統生成,我們無需修改,接下來就是修改“/etc/default/grub”文件了。使用“sudo vim /etc/default/grub”命令打開該配置文件。
其中的“GRUB_DEFAULT=0”就是設置的默認啟動項了。GRUB啟動項是按照啟動菜單依次使用數字進行索引了,起始數字為0。結合前面的系統啟動菜單,我們可以看到,Windows8的啟動項在第5項,因此這里我們就需要修改為4(因為第一項是從0開始的)。
修改完成,保存退出之后,還需要執行一下“sudo update-grub”來重新生成GRUB啟動配置項。
到此就大功告成了,重啟計算機看一下效果吧。默認啟動項成果被切換到“Windows8”了。同樣的方式,如果需要,還可以重新將默認啟動項切換到任何需要的啟動菜單項上的。
注意事項
修改GRUB配置之后,注意使用update-grub更新啟動程序,否則修改將不會生效。
grub 2介紹
grub的介紹:
https://zh.wikipedia.org/wiki/GNU_GRUB
GNU GRUB(簡稱“GRUB”)是一個來自GNU項目的啟動引導程序。GRUB是多啟動規范的實現,它允許用戶可以在計算機內同時擁有多個操作系統,並在計算機啟動時選擇希望運行的操作系統。現在是grub2版本。
啟動過程
計算機啟動后,BIOS將尋找第一個可啟動的設備(通常為硬盤),而后從MBR中載入啟動程序,然后把控制交給這段代碼。MBR位於硬盤的前512字節內。
GRUB第一版本
GRUB的步驟1包含在MBR中。由於受MBR的大小限制,步驟一所做的幾乎只是裝載GRUB的下一步驟(存放在硬盤的其它位置)。步驟1既可以直接裝載步驟2,也可以裝載步驟1.5:GRUB的步驟1.5包含在MBR后面的30千字節中。步驟1.5載入步驟2。
當步驟2啟動后,它將呈現一個界面來讓用戶選擇啟動的操作系統。這步通常采用的是圖形菜單的形式,如果圖形方式不可用或者用戶需要更高級的控制,可以使用GRUB的命令行提示,通過它,用戶可以手工指定啟動參數。GRUB還可以設置超時后自動從某一個內核啟動。
GRUB第二版本
與GRUB第一版相似的是,boot.img像步驟1一樣在MBR或在啟動分區中,但是,它可以從任何LBA48地址的一個扇區中讀取,它(boot.img)將讀取core.img(產生於diskboot.img)的第一個扇區以用來后面讀取core.img的剩余部分。core.img正常情況下跟步驟1.5儲存在同一地方並且有着同樣的問題,可是,當他被移動到一個文件系統或一個純粹的分區時會比在步驟1.5移動或刪除引起更少的麻煩。一旦完成讀取,core.img會讀取默認的配置文件和其他需要的模塊。
當GRUB啟動后
一旦選擇了啟動選項,GRUB把選擇的內核載入內存並把控制交給內核。在此步驟中,對於Windows之類不支持多啟動標准的操作系統,GRUB也可以通過鏈式啟動把控制傳給其它啟動器。在這種情況下,其它操作系統的啟動程序被GRUB保存了下來;與內核不同,其它操作系統如同直接自MBR啟動。類似Windows的啟動菜單,也許是另一個啟動管理器,它允許在多個不支持多啟動的操作系統中做進一步的選擇。(在已有Windows的系統上面,或者包含多個Windows版本的系統上安裝現代的Linux而不修改原操作系統,即屬於這類情況。)
Linux啟動流程介紹
https://zh.wikipedia.org/wiki/Linux%E5%90%AF%E5%8A%A8%E8%BF%9B%E7%A8%8B
出現 grub rescue 問題的解決辦法
原因
win10和ubuntu雙系統,win10大幅度升級時破壞了grub。
因為grub2其實分為兩部分,第一部分在MBR中,第二部分在Ubuntu的boot/grub中,win10升級導致在MBR中的grub找不到在boot/grub中的grub2.
解決辦法
開機錯誤顯示:
error: file '/boot/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>
先輸入ls回車,查看顯示的內容。如:
(hd0) (hd0,msdos14) (hd0,msdos13) (hd0,msdos12)....
然后找出哪個盤安裝了系統,
ls (hd0,msdos1)/boot/grub
ls (hd0,msdos2)//boot/grub
..
嘗試所有的,直到返回內容不再是error: unknown filesystem.為止。
然后依次輸入如下內容:
set root=(hd0,msdos13)/boot/grub
set prefix=(hd0,msdos13)/boot/grub
insmod normal
normal
然后就可以顯示grub2的圖形界面。詳情見https://jingyan.baidu.com/album/c85b7a640cd7d6003bac95f8.html?stepindex=6&wap_detail_test=G6&st=2&os=0&bd_page_type=1&net_type=&ssid=&from=
但這並沒有結束,因為win10已經將grub破壞了,下一次重啟我們仍會遇到grub rescue問題,所以我們必須重啟進入ubuntu修復grub2.
修復grub
進入Linux系統后,在命令行里
sudo update-grub
sudo grub-install /dev/sda
#=>sda是你的啟動磁盤,不是某一個扇區
下面是參考資料
1.http://jingyan.baidu.com/album/c85b7a640cd7d6003bac95f8.html?stepindex=6&wap_detail_test=G6&st=2&os=0&bd_page_type=1&net_type=&ssid=&from=
2.https://my.oschina.net/amath0312/blog/227225
3.http://m.blog.csdn.net/jscese/article/details/36865449
4.https://my.oschina.net/arvinjones/blog/139483
5.若以上資料仍未幫你解決問題,請參考一下grub的官網介紹吧
grub2中文繁體手冊
grub官網
grub英文手冊