本帖最後由 阿達金田一 於 2020-8-21 11:32 編輯
windows boot manager 是會判斷目標磁碟和分區
但並沒有什麼鎖定
我猜你是設錯 bcd 了...
如果你是去設 sata hdd pe 的 bcd ... 一定是不行的
因為 bcd 加載前是要先能 該 hdd boot ...如果連這都不行...bcd 根本沒加載
本來之前我的回文...有想寫一些原理流程...
但又想到我每次都會打很長...光是只說操作方法回文就不短
所以就只打了我想到的方法...因為怕太長不容易看懂
這次稍微說一下...原則和流程...不過因為不同BIOS會有差異...所以要看實際情況為主
簡單說...
為什麼要設 boot deivce , BBS (英文大概是 BIOS Boot Specification , BIOS 開機規則 )
就是要讓 BIOS 可以依使用者想要的裝置開機
原則也很多簡單...就是依序 1個裝置 不能就下一個裝置繼續試
UEFI / Legacy 原則上一樣 (當然硬體底層處理不一樣)...
一般使用者只要瞭解表面上的應用原則就 ok
這裡只說單純 UEFI 不考量 CSM
其實 UEFI BIOS 算是很簡化了...簡單說就是 boot menu
也就是 bcdedit /enum all 中看到的 {fwbootmgr}
( 注意後面文, 我順手...有可能打 boot menu 也有可能打 {fwbootmgr} ...但是指同一個東西 )
表層應用...主要就是這個...
不管是用什麼裝置...其實大都是對 {fwbootmgr} 加入 menu item
那 UEFI BIOS 中...的 boot device 和 hdd bbs 之類的...是在設啥
其實就是把 device boot 加入到 {fwbootmgr}
不過依據 BIOS 設計 和 設定 ...也會有些差異
所以真要鎖定...那也是 UEFI BIOS 管理 {fwbootmgr} 的問題
簡單流程大概就是
bios boot -> {fwbootmgr} -> device boot -> load efi
在 {fwbootmgr} 只說表面使用上差異...大概有2種設定
1. devcie boot
2. efi boot
2個只差在...一個有指定 efi 一個沒有
device boot 就是 "僅" 指定了 device 但沒指定 efi
所以一般就是用預設的 \efi\boot\bootx64.efi
( 有的 BIOS 可能也會判斷 \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI )
而 efi boot 就是有指定 efi
通常 efi boot 只會用在 hdd 上...因為 hdd 基本上是固定在 電腦內部
一般使用者可以增加到 {fwbootmgr} 大多是 efi boot
而 device boot 則是 BIOS 在處理
所以就看 BIOS 設定中有沒有設定項
通常即使有也是很簡易的限定...例如 直接在 {fwbootmgr} 加上
UEFI Hard Disk Device
UEFI CD/DVD Device
之類的
不過很多時是沒有...而且都用 BIOS 在管理
大多是給使用者去設 boot device 和 device BBS ... 然後開機時 BIOS 可能就自動處理 {fwbootmgr}
因為這包含 BIOS 怎麼設計 和 其處理方法...所以不同BIOS可能都有差異
例如 uefi fast boot 有的可能可以細節設定...例如
要不要 初始化 USB , CD/DVD 或 其它 device
如果只保留了 一個 hdd device , 其它裝置都不留...那速度應該最快
但也同時其它 device 就沒法開機
有的 BIOS 的 fast boot 可能就沒細節設定...內部是用固定的 或是 自動判斷
一般使用者大多也只能依實際操作結果大概判斷一下
拿我PC 的情況

這是我前面貼過的圖片
實際上我正常開機...{fwbootmgr} 只會有
Windows boot Manager
和
Windows PE ( 這個是我自己用 bootice 自己加的 )
(上圖我我目前的 boot menu ...並沒有另外3個 device boot )
那為啥會有後面3個...那是 Bios 自己加的
下面就是我對我PC主機板BIOS的行為推測
如果一開機 {fwbootmgr} ( boot menu ) 是空的 或是 有進 BIOS 改設定
BIOS 可能就會依 boot device 和 BBS 的設定...對 {fwbootmgr} 加入 device boot
如果 BIOS 預設 boot device 是 CD/DVD , USB , Net , HDD
那 boot menu 可能就會加上這些 device boot
然後 hdd BBS ...就依 hdd 的位置 來預設
就是 sata 0 1 2 3 4 ... M.2 一般應該都在 sata 前 (M.2 就算是走 sata bus 大概也是 sata 0)
而我的是 (都是 sata 我原本就是照 sata 0 1 2 去接...所以 BBS 我沒改)
hdd bbs1 - 120G SSD (win10, pe)
hdd bbs2 - 480G SSD (game 用)
hdd bbs3 - 2T HDD ( data and bak )
題外話:
其實 Legacy 也是差不多...如果每次開機都偵測一次...其實 BIOS boot 就會很慢
而 Legacy 很多時後預設都是 全偵測 ...所以不會設的 Legacy 就會很慢
早期的 Legacy Bios 可能會手動設定 hdd 參數...並指定 hdd device boot
不然預設每次都偵測 hdd device 真的會很慢
但其實後期的 Legacy 原則已經和 UEFI 沒差很多
可能第一次偵測後...就記錄下來(等於是自動依偵測設定好)
第2次就會比較快...除非開機裝置有問題...要重偵測
所以我個人 Legacy boot 時...老實說我也不會覺的慢...頂多是機能上的差異
單純 bios boot 進到 Windows boot Manager...
老實說我 現在用 UEFI 和 以前用 Legacy ... 都沒幾秒
當然現在的機子性能比較好多少快個 1-2秒
回主題:
所以我圖片有 UEFI: xxxx device
然後推測 MSI BIOS 本身有優化開機(流程)速度 ...不是 Fast boot 但有點雷同
不過這不會影響到 USB 開機...
只是要按 F11 叫出 boot menu 才能用 usb boot
不然就是要進 BIOS 設 boot device 和 usb-hdd bbs
簡單說 ... 我PC 的 MSI BIOS 正常開機...boot menu 只有設定好的 efi boot
按 F11 或 進BIOS改設定 會依 boot device 和 bbs 臨時偵測 device 和 增加 device boot menu
但用完後後...再重開機回正常開機...之前BIOS 加的那些可能就會又清掉了
(這是看 BIOS ...可能有的就不會)
我是覺的 MSI 的 BIOS boot 還不錯...滿算智能...純UEFI usb boot 也沒問題
(看到一堆 ASUS UEFI usb boot 不能 的案子...對 ASUS 有點沒信心了)
只是沒提供比較細節或直接的設定...(因為都自動判斷管理)
例如...主板 BIOS 好像沒有提供 boot menu 直接設定 efi boot
(基本是直接設 boot menu 的部份都沒有...)
boot menu 全都 BIOS 在管...只能設 boot device 和 bbs
(然後推測是 BIOS 依 boot device 和 bbs 設定自動設定 boot menu)
所以我只好用 bootice 去設 efi boot , 算美中不足的地方
我好像又扯遠了...回主題
BIOS boot ...這你只能看實際情況...設BIOS 推測 BIOS boot 的行為
例如 故意把 boot menu 用 bootice 清空...重開機再看 boot menu 有什麼
先假設你 BIOS boot device 只有設了 hdd device
在 {fwbootmgr} 空的情況下
等於 boot menu 只有 hdd device boot ( 應該 bios 會加到 boot menu )
然後 hdd device boot ...預設就是
hdd device boot -> 依 hdd bbs -> 依 該hdd 分區順序 -> 可開機 FS (一般是 FAT) -> \efi\boot\bootx64.efi
簡單說中間 boot 有問題大多數原則就是
繼續後面一個序列
如果沒後一個序列,退到上一步, 然後上一步繼續後一個序列
例如
hdd bbs
(註1 通常沒人這樣搞...這只是舉例 )
(註2 這不是 hdd 位置...只是如果沒改過 bios 初始自動偵測大多會先 hdd 位置來做 BBS 順序 )
BBS 1 - 1T HDD 分區1 NTFS
BBS 2 - 120G SSD 分區1 NTFS, 分區2 FAT
假設主機板不支援 NTFS 只能 FAT
hdd device boot -> 1T HDD -> 分區1 NTFS 不能開機 ... 沒分區了( 1T HDD 全測完)...退到 BBS 換下一個 hdd device
hdd device boot -> 120G SSD -> 分區1 NTFS 不能開機 ... 還有分區...換下一個分區
hdd device boot -> 120G SSD -> 分區2 FAT -> \efi\boot\bootx64.efi
如果有 efi 就正常開機(我是指 bios boot ... 開機管理程式那是後面的流程)
沒有... 也沒下一個 hdd device...那就在退到 boot deivce ...
如果 boot device 也沒了...就開機失敗...沒可用的開機裝置
然後正常的 windows boot
會自動在 {fwbootmgr } 中加上 Windows boot Manager
指到 \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
( 而不是 \efi\boot\bootx64.efi )
而一般情況下...
先假設 bios 全新設定(或 reset )
boot menu 空的...
boot devcie 預設
bbs 預設
看 BIOS ... 像我的 MSI 主板
boot device 預設 是所有的 device 類型都加進去
順序好像是... CD/DVD , USB , Network , HDD
然後我是改成 HDD , USB , CD/DVD ...所以插上 USB 也要按 F11 才能 USB Boot
這樣正常開機直接就用 HDD , F11 時才會偵測 USB
你的情況要自測
假設你BIOS 預設
boot device 只有 hdd device
hdd BBS 是 (這通常是會先偵測 hdd device ...然後設到 BBS )
bbs 1 - SSD
bbs 2 - HDD
一般而言大多是 boot device 設定問題... hdd BBS 只是 hdd boot 時的 hdd 順序
也就是 bbs 1 - SSD 開機了...就不會去用 bbs 2 - HDD
然後 bbs 1 - SSD boot ... win boot
然後 win 會自動在 {fwbootmgr} 加上 efi boot
Windows boot Manager ( \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI )
這裡推測可能 win 也可能是 BIOS 會把 Windows boot Manager 做為 {fwbootmgr} 的第1序列 (一般這就是預設開機項)
然後像我的 MSI 是看不到
UEFI: hard disk device ... (並非沒有..我猜是 win 或 bios 自動修改或清除掉)
流程 bios 全新或reset , boot menu 為空
我個人覺的 UEFI boot 可以簡化為
bios boot -> {fwbootmgr} -> ....
只是 BIOS 自動 或 使用者 DIY 手動處理 boot menu
bios boot -> boot device -> {fwbootmgr} -> hdd device -> bbs 1 - ssd -> FAT \efi\bootx64.efi
推測 bios boot 這裡 {fwbootmgr} 可能會加上 UEFI hard disk device 或 UEFI hard disk 0: SSD 之類的
然後進 win 後... {fwbootmgr} 會加上 Windows boot Manager ( \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI )
或是 替換掉之前 {fwbootmgr} 開機項目 ...
所以我也搞不清楚是 win 還是 bios 在處理 ... 我也沒法 bios 開到一半停下來看{fwbootmgr} 吧
反正我的 hdd device 開機完...{fwbootmgr } 有可能看到的 CD/DVD , USB(removable) , Network
就是沒看到過 Hard Disk (不過我推是 BIOS 的問題...並非沒有...只是進 win 後清掉了...因為有了 efi boot 直接用 efi boot 開機比較快)
總之... win boot 完...boot menu 會有 Windows boot Manager
至於有沒有其它的 boot menu 看實際情況...可能不同 bios 情況不同
然後再次重開機...就會直接以 hdd 的 efi boot , Windows boot Manager ( 尤其是用 uefi fast boot 的 )
bios boot -> {fwbootmgr} -> 預設的 efi boot Windows boot Manager -> FAT \EFI\MICROSOFT\BOOT\BOOTMGFW.EFI
然後 ssd 的 Windows boot Manager ...其 bcd 當然在 ssd 中
所以方法4是改 win 本身使用的 bootmgr 和 bcd (即ssd 中的)
而方法3是改 {fwbootmgr}
預設 boot menu 1 - Windows boot Manager
加上 boot menu 2 - PE ... 然後 efi boot 到 sata hdd 上的 \efi\boot\bootx64.efi (win bootmgr)
這個啟動是用 sata hdd 上的 bcd
所以用的 bcd 是不一定的
如果你沒改 boot menu(方法4) ...你 bcd 要改 ssd 中的 (進 win 後 bootice 改當前系統的 bcd)
而改 boot menu (方法3) ...ssd bcd 不用動...只要看 sata hdd 中 pe 用的 bcd 有沒有問題
注意...這裡 PE to USB 時...
ISO 的 BCD 設定一般是用 [boot] (開機裝置) 做為 PE 所在裝置...這在 CD/DVD
或是 PE WIM 放在 boot 分區 時..是可以的
而 Legacy boot 很多會用 NTFS 所以...大多數也是 放 PE NTFS 分區,亦即 boot 分區
但是 UEFI boot 因為要用 FAT 一般是分成2個以上的分區即 1 FAT , 1 NTFS
FAT 就只是拿來 boot 用...但是 PE 可能是放到 NTFS ...
這時 bcd 中的 [boot] 設定就不能...因為會找不到 pe wim
這時就要改 bcd 設定...直接指定 pe wim 所在的 hdd 和 分區
不然就是把 PE WIM 也放到 FAT 放區 (而一般 win 自動分割的 FAT 分區大小是不夠用的...如果 PE Wim 要放到 FAT 要調大小)
像我之前圖片有注意的話 用來開機的 FAT32 我是切出快 16G ...放 10PE 和 install.wim (原始的 win10安裝)
(install.wim 一開始本來還想用 wimboot , 我之前 win7 是用 wimboot 不過想 win10有 compact 所以就還是正常安裝然後用 compact )
說了一堆...也覺的又打太長...好亂...所以先說到這
然後 bcd 設定一些小地方也要注意...例如
Legacy / UEFI 的 BCD 是分開的...你用 UEFI boot 去改 Legacy BCD 是沒意義的
Legacy BCD 是用 winload .exe , UEFI BCD 是用 winload.efi
所以設錯也會失敗...
bootice 在建立 WIM啟動項 時...好像會是當前系統的BIOS模式來判斷是用 winload.efi 還是 .exe 來設定
所以建新啟動項還好...如果修改現有的 bcd 啟動項 , 如果啟動項 中是用 winload.exe
但實際上要 uefi boot ... 那就要改成 winload.efi
|