啟動程式
引導,或稱啟動程式,在電腦中是計算控制系統的一個初始化過程。引導過程可以是「硬引導」,如:開機通電後硬件診斷;也可以是「軟引導」,此時會跳過開機自啟。一些系統中軟啟動過程中,RAM可以不清零。軟啟動和硬啟動都可以通過硬件發起,如按下電源開關;也可以通過軟件命令來進行。當正常、有效的執行環境達到後,啟動完成。
引導裝載程式是電腦開機自檢完成後裝載作業系統或者其他系統軟件的電腦程式。自檢完成後執行引導裝載程式,然後再載入並執行軟件。引導裝載程式可以從硬碟裝載到主主記憶體中。一些老電腦中,引導裝載程式可以從打孔卡、穿孔紙帶、或者磁帶中載入到主主記憶體中。啟動裝載程式載入且執行完成啟動的程式。和POST程式相似,啟動裝置代碼可以儲存在永久儲存體位置中,也可以為硬連線的形式。
當代通用電腦中,啟動過程通常包含開機自檢(POST)、初始化周邊裝置、然後載入作業系統。一些嵌入式系統直接執行儲存在ROM中的可執行程式。
引導在英文中為「boot」,是bootstrap的縮寫,源自於短語「Pull oneself up by one's bootstraps」,即「靠自己振作起來」。如果大部分軟件需要通過其他已執行的程式載入到電腦中,則必須存在一個將初始軟件載入到電腦中的機制。
第一台商業電腦
[編輯]早期可程式化商業電腦,如UNIVAC I和IBM 701,會包含執行完整的輸入輸出操作的指令。相同的硬件邏輯可以被用來載入穿孔卡片的內容,或者其他輸入媒體,如磁鼓或者磁帶,這些啟動程式可以通過按鍵啟動。IBM701 電腦擁有一個 "Load" 按鈕,此按鈕可以將打孔卡片的前 36個bit字讀入到主記憶體中。左18-bit 半字被視為指令而執行,通常用來將額外的字讀入到主記憶體中。隨後被載入的啟動程式被執行,反過來無需更多地人為操作從媒介中載入更大的程式到主記憶體中。隨後電腦跳轉到主記憶體位置001,讀取儲存的第一個指令。第一條指令一般是相同的:將前80個主記憶體位置的資訊移到一個匯集區域(打孔卡片2,3,4...)。一旦資訊被移動到這些區域後,機器跳轉到080位元置(讀取一個卡片),然後下一個卡片將被讀取,並處理相關資訊。 同期的其他IBM電腦有着相似的特性。IBM1401系統使用讀卡器從打孔卡片中載入一個程式。打孔卡片中儲存的80個字元被讀入到主記憶體地址001~080.
引導程式
[編輯]引導程式(英語:boot loader)是指啟動作業系統的程式。在普通的個人電腦上,啟動程式通常分為兩部分:第一階段啟動程式位於主開機紀錄(MBR),用以引導位於某個分區上的第二階段啟動程式,如NTLDR、BOOTMGR和GNU GRUB等。
BIOS開機完成後,bootloader就接手初始化硬件裝置、建立記憶體空間的對映,以便為作業系統內核準備好正確的軟硬件環境。
但是隨着電腦作業系統越來越複雜,位於主開機紀錄的空間已經放不下啟動作業系統的代碼,於是就有了第二階段的啟動程式,而MBR中代碼的功能也從直接啟動作業系統變為了啟動第二階段的啟動程式。
對於UEFI系統,由EFI應用程式(即EFI系統分區中的.efi檔案)取代MBR和第二階段啟動程式,UEFI韌體會載入啟動程式的.efi檔案,再由啟動程式載入作業系統。
個人電腦
[編輯]啟動裝置
[編輯]現代電腦的UEFI和BIOS都支援從多種裝置中啟動,如:硬碟(MBR或者GPT)、光驅、USB大容量儲存裝置(USB手指、SD卡等),或者從網卡啟動(使用PXE)。
通常,韌體(UEFI或BIOS)都會允許用戶設置啟動順序(英語:boot order)。如果將啟動順序設為「第一:DVD 驅動器;第二:硬碟機」,韌體會先嘗試從 DVD 驅動器啟動,如果失敗(比如驅動器中沒有 DVD)則會再嘗試從本地的硬碟機啟動。
假設有一台PC,硬碟上裝有 Windows 10,用戶可以設置啟動順序為上述順序,然後插入Linux Live CD,這樣就可以直接試用Linux。更常見的情況是直接使用鍵盤從BIOS或UEFI的引導選單(英語:boot menu)或者BIOS設置(英語:BIOS Setup)中選擇,BIOS設置通常可以通過在POST時按Delete或F2進入。
智能電話
[編輯]現代的智能電話具備作業系統,系統在啟動之前需要通過bootloader啟動,手機啟動的時候基帶執行初始化,然後引導系統內核,直到系統啟動。智能電話生產廠商通常在出廠時鎖定了手機的bootloader,以防止用戶誤操作損壞了系統檔案造成手機功能異常,部分廠商會給開發者或普通用戶發放bootloader解鎖碼,這通常需要步驟眾多的申請,鎖定bootloader能部分有效阻止惡意程式對手機造成的破壞,部分用戶或開發者會通過解鎖Bootloader以獲得更多的功能和權限,這通常會帶來使用風險。