「重灌實驗室"筆電" Ubuntu 14.04 16.04」無法以ubuntu開機 / grub 未顯示 / boot order 更改方法 更改無效 / windows boot manager / thinkpad —— trouble shooting

Standard
其實在筆電上灌ubuntu大致上和在桌電上灌沒什麼差別
可以參考上一篇:
「重灌實驗室電腦 Ubuntu 14.04 16.04」雙系統,分割硬碟,製作開機隨身碟,真的很簡單,小朋友一定很喜歡~
有些人運氣好,甚至可以用一樣的方法一次就成功
但運氣不好的話會怎麼樣都跳不出grub畫面(作業系統選單)如下圖,
取而代之的是直接進入windows系統,或直接進入Ubuntu系統
所以本篇接下來就要就這個問題來探討解法
然後原諒我都用手機拍,因為懶得截圖再傳來傳去


Step 0. 確認環境
首先先介紹一下我的環境
我使用的筆電是
Thinkpad X1 Carbon 4th 灌 windows, ubuntu16.04 雙系統在同一個 256G的硬碟(SSD)
就我在debug時爬過的資料所知這個問題會隨著不同品牌不同型號而有所不同(BIOS不一樣)
所以如果你是一次就成功的也不要笑你朋友一直灌不好很智障
因為等你真的去用他的電腦灌的時候你有可能也灌不好


Step 1. 進BIOS改設定
前置作業,插上Live USB (Ubuntu開機隨身碟),進BIOS,調整設定
進BIOS的方法百百種,每個廠牌的筆電要進去要按的案件都不一樣
Delete, Enter, ESC, F1, F2, F8, F10, F12 ....千奇百怪
但有一個方法最穩那就是先進去windows10
在桌面右鍵 顯示設定
搜尋bios,進入 變更進階啟動選項
點 立即啟動
使用裝置
選擇Setup直接至BIOS選單
或是選擇USB HDD
在這個換面按enter
F1進入BIOS
確定幾個設定是否正確
Security => Secure Boot => Secure Boot [Disabled]
Startup => Boot => Boot Priority Order => 把剛剛插的USB調到第一個
Startup => Boot Order Lock [Disabled]
Startup => UEFI/Legacy Boot [Both]
Startup => UEFI/Legacy Boot -- UEFI/Legacy Boot Priority [UEFI]
最後
Restart => Exit Saving Changes => Yes


Step 2. Install Ubuntu by live USB
在最後修改完BIOS後重開機應該就會進入live USB
接下來就和之前一樣
-> try ubuntu -> gparted切割 -> install ubuntu開始安裝 -> 選擇something else
要注意的是,從這裡開始就和上一篇有些許的不同
要特別注意「 Device for boot loader installation: 」的選擇
如果和我一樣是在同一顆硬碟裡面灌windows和ubuntu,並且選擇以這個硬碟開機的話
這邊務必選擇「/dev/sda? Windows Boot Manager」
然後就照著之前教學的步驟灌完


Step 3. Change boot order
灌好後重啟電腦,想必有超過一半的然還是以windows開機
沒有跳出任何選單可以選擇以ubuntu開機
因此我們要在boot order裡新增ubuntu這個開機選項
做此步驟前務必確認你的電腦的BIOS一定要Disable Boot Order Lock
不然怎麼改,重開機之後都是不會變的!! from之前的慘痛經驗
https://github.com/rhboot/efibootmgr/issues/19
以下介紹三種方法:(新手建議使用法二就好)
https://superuser.com/questions/1247300/how-to-make-uefi-bios-start-grub-not-windows


法一:用ubuntu開機隨身碟的try ubuntu系統改
打開live usb的ubuntu的terminal
sudo efibootmgr
查看你目前的選項代號與開機順序(BootOrder)
複製原本的順序,並做出調整,以下為舉例
sudo efibootmgr -o 001B,0002,0000


法二:用windows軟體easyEFI
上網下載免費的試用版easyEFI,安裝並打開程式
進到Manage EFI Boot Option,選Create a new entry
Type選Linux,Description寫ubuntu,File path照下圖的Browse,
Please select the target partition選windows跟ubuntu共存的那顆應該會有個區間可以點


法三:用windows cmd改
回到windows10,搜尋cmd,右鍵以系統管理員身份執行,打開命令提示字元
bcdedit
設定新的boot loader
bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efi

bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
然後讓選項好看一點
bcdedit /set "{bootmgr}" description "ubuntu"


WHY
1.
可以想像成 boot loader 應該都要放在 type 為 efi 的磁碟分區中
或是說 efi 這個型態的分區就是專門拿來放 boot loader 的
而如果先灌好windows的話就會自動切好這個分區 (約100~200MB)
也就是上圖選單中命名為 Windows Boot Manager 的那個
並且在裡面放入 Windows Boot Manager 這個 boot loader

2.
根據鳥哥
開機的流程由:BIOS-->MBR-->-->boot loader-->核心檔案;
boot loader的功能主要有:提供選單、載入核心、轉交控制權給其他loader
boot loader可以安裝的地點有兩個,分別是 MBR 與 boot sector
如果空有OS沒有 boot loader 是沒辦法開啟該作業系統的
想實驗的朋友可以把 Windows Boot Manager 這個磁碟分區刪掉看看
windows 保證開不起來
實際上 efi 這個磁碟分區裡面的檔案就如easyEFI上面看到的一樣
那些 .efi檔 就是可以開機的關鍵
如果去看 bios 等等的設定,唯有有efi檔的選項選下去才是有辦法開機的

3.
整理一下
所以如果以 windows ubuntu 同一硬碟下的雙系統為例
該硬碟會被切分出四區,如下:name(type)
ubuntuOS(ext4), windowsOS(ntfs), linux-swap(swap), Windows Boot Manager(efi)

4.
但即使你把boot loader放在對的位置了
這時你會發現你的電腦開機之後還是直接出現windows沒有跳出選單
我認為可以看作是 windows boot manager 比較強勢把主控權搶走
實際上來說就是 windows boot manager 的 boot order 比較前面
加上灌好ubuntu後,系統沒有在 efi 分區中 抓到 grub
所以甚至連boot選項都沒出現ubuntu

5.結論
所以我們要做的事就是讓系統找到efi分區中新載的ubuntu的boot loader
這樣boot order裡面就會出現ubuntu這個選項
然後我們再把boot order的順序 ubuntu放在windows boot manager前面就可以了

補充:
如果是灌了ubuntu,win不見,可以試試在ubuntu打sudo xdiagnose來重新掃描到windows10


0 comments:

張貼留言

留言