大家好,我是光輝。我們都知道一些大型電器的啟動需要藉助繼電器,小汽車的啟動需要電子打火。可以說任何一個複雜設備的啟動都有一個從量變到質變的過程。電腦的啟動同樣如此,那麼電腦的啟動有沒有類似用鑰匙打火這個過程呢,答案是:有
現在我們來描述一下電腦從按下開機鍵到進入系統的過程。以Legacy模式下的Windows7為例(其實即使是UEFI的Win10也沒有多少不同,萬變不離其宗)
我們先畫一個簡易的流程圖。
這個流程圖是我的原創,對於不熟悉電腦的人來說,可能像一串看不懂的密碼,而對於有些IT人員來說,也許能起到撥雲見日的作用。過程1和2主要涉及到硬體層面,重裝系統一般涉及不到(過程1主要是CPU,EC,南橋等的供電過程,過程2主要是內存,CPU風扇等故障時進行相應的聲光報警,對維修有興趣的人可以了解一下,比如開機啟動電流等),因此略過不講。
我們重點從第3個過程開始講,電腦的啟動順序是指電腦要讀取哪個設備,從而進入該設備上的系統。稍微了解計算機的朋友都知道電腦可以從軟盤,光碟,硬碟(機械和固態)啟動。其實電腦還可以從U盤(PE系統),移動硬碟,以及網絡(網吧裡面的無盤系統)啟動。這裡我們假如硬碟是BIOS的第一啟動順序。
過程4:選擇硬碟之後,BIOS就要進行它的最後一步工作了,那就是讀取硬碟的第一個扇區:MBR扇區(Main Boot Record),並執行MBR中的程序代碼。MBR是硬碟分區的時候產生的,它共佔用512個字節,也就是4096個0和1組成的,這些0和1表示出了硬碟的各項信息,比如是如何分區的,硬碟總容量等。MBR中有一段長度為446個字節的主引導程序代碼。也正因為這段程序,才有主引導記錄MBR之說。
說到MBR,要講一個題外話,那就是4K對齊,MBR跟DBR不同,MBR不包含在分區之內,我們知道分區要存放數據必須先進行快速格式化,格式化的簇大小一般規定為4K,分區內的存放的數據無論大小都要遵守簇規定而DBR也正是在格式化後生成的。如此一說,硬碟存放數據默認都是對齊的啊,但是,MBR是硬碟分區還未格式化前產生的,是獨立於分區之外的,而且默認情況下該扇區和後續的62個扇區(扇區大小512B)都是隱藏的。因此硬碟真正可以存儲數據是從第64個扇區開始(這個不是絕對的,用Diskgenius等工具可以消除那62個隱藏分區,也就說最早可以從硬碟第二個扇區讀數據)。有興趣的朋友們可以上百度搜索了解下4K對齊,微軟推薦的解決方法是從第2048個扇區開始對齊(網上有帖子測試硬碟對齊到2048扇區是性能最好的)。我可以說有些幹了十幾年的IT維護員也未必清楚4K對不齊的原因,甚至在用分區工具分區的時候從未考慮過4k對齊。4K對不齊對電腦性能影響真的很大,尤其是固態硬碟。大家裝系統時候一定要注意!
過程5:執行了MBR的主引導程序之後,BIOS退出。主引導程序獲得控制權,並根據MBR中記載的活動分區,讀取活動分區的第一個扇區:DBR扇區。DBR同樣是512個字節,他們表示了分區的另外一些信息。DBR中有一段長度為410個字節的分區引導代碼。(DBR也有叫OBR,PBR,VBR的,都是一個意思)。MBR讀取DBR後,執行其中的分區引導程序代碼,並將控制權交給分區引導程序。
過程6:分區引導程序加載Bootmgr這個文件。Bootmgr是windows7和windows10在安裝過程中放在系統分區的。( 如果是UEFI引導,會在EFI系統分區生成Bootx64.efi和Bootmgrfw.efi,還是那句話萬變不離其宗)。
過程7:Bootmgr獲得控制權,並讀取系統分區中的系統信息文件boot.ini,找打作業系統位置。此時會在屏幕上顯示系統名
過程8:Bootmgr找到了作業系統的位置,比如說是D盤,然後加載windows文件夾下的系統引擎程序winload.exe. 至此成功進入系統。
總結:我們可以把Bootmgr理解為啟動windows引擎的鑰匙,而boot.ini是鑰匙孔。而Bootmgr從開機到獲得控制權經歷了一系列的過程,也就是我們說的從量變到質變。