引言
相比于Windows/MacOS/Linux等主流的操作系統,大部分人對于固件BIOS(Basic Input & Output System)并不熟悉,它誕生于1981年出產的第一代個人計算機IBM PC,在那時工程師將硬件檢測代碼、最基本的外圍設備I/O處理程序和操作系統引導程序代碼寫入僅有32KB大小的PROM(Programmable ROM)中。固件BIOS隱藏在啟動界面和操作系統桌面之后,作為計算機中最底層、最核心的關鍵性部件之一,在幾十年內受到的關注并不多,網上能找到的學習資料也偏少(相對Spring、Vue這種主流技術棧),可以說入門的門檻相對其他方向來說會高一些。
- 固件 && BIOS
固件(Firmware)是一種底層軟件或指令序列,早期常存儲于計算機或外部設備的PROM中,常用于對硬件設備進行配置或為操作系統提供硬件操作接口,使之能夠完成指定的功能,如初始化、驅動外圍設備等。計算機系統層次架構由硬件(Hardware)、固件和軟件(Software)構成,而固件的核心就是BIOS,它介于硬件和操作系統之間,為操作系統提供最直接、最底層的硬件控制,為操作系統的引導載入和正常運行提供良好支持。BIOS是計算機的核心部件之一,計算機開機后執行的第一條指令就由BIOS發出,它擔負著最初的引導和啟動任務。在這種架構中,BIOS能為操作系統提供一定程度上的硬件抽象,使操作系統不用直接進行的硬件操作。
BIOS的主要功能如下:
(1)開機自檢:BIOS在上電時獲得計算機的控制權,檢查CPU寄存器、標志位以及控制器等工作是否正常;
(2)系統初始化:針對CPU Cache、DRAM及顯卡、PCI等設備的初始化操作,設定相應寄存器的值,驅動外圍設備;
(3)提供常駐的RS(Runtime Services):RS一般常駐在某一段系統內存中,操作系統和應用程序能通過中斷方式調用這些服務代碼;
(4)系統設置
(5)引導操作系統:按照系統設置搜索軟硬盤驅動器及CD-ROM、網絡服務器等,讀入操作系統的引導代碼,將控制權交由引導代碼
2. 關于Legacy BIOS
固件BIOS的發展大致可以Legacy BIOS和UEFI兩個階段
Legacy BIOS發展初期,行業中除了IBM的接口規格外,并沒有統一的開發規范,90年代Intel聯合其他幾家公司制定了BIOS啟動規范和