複製鏈接
請複製以下鏈接發送給好友

引導程序

鎖定
引導是計算機開始輸入時常採用的一種手段。計算機啓動後,由設備來實現少量指令和數據的輸入,然後由它們再輸入其他程序,這種過程稱為引導。微型計算機中的引導程序可將用户通過鍵盤打入的程序及數據引導輸入到隨機存儲器中。
中文名
引導程序
外文名
boot loader
領    域
計算機
性    質
程序

引導程序簡介

引導程序(英語:boot loader)位於電腦或其他計算機應用上,是指引導操作系統的程序。引導程序啓動方式及程序視應用機型種類而不同。例如在普通的個人電腦上,引導程序通常分為兩部分:第一階段引導程序位於主引導記錄(MBR),用以引導位於某個分區上的第二階段引導程序,如NTLDRBOOTMGR和GNU GRUB等。
BIOS引導完成後,boot loader就接手初始化硬件設備、創建存儲器空間的映射,以便為操作系統內核準備好正確的軟硬件環境。
簡單的boot loader的虛擬彙編碼,如其後的八個指令:
  • 第一:將P寄存器的值設為8
  • 第二:檢查紙帶(paper tape)讀取器,是否已經可以進行讀取
  • 第三:如果還不能進行讀取,跳至1
  • 第四:從紙帶讀取器,讀取一byte至累加器
  • 第五:如為帶子結尾,跳至8
  • 第六:將寄存器的值,存儲至P寄存器中的數值所指定的地址
  • 第七:增加P寄存器的值
  • 第八:跳至1
但是隨着計算機操作系統越來越複雜,位於主引導記錄的空間已經放不下引導操作系統的代碼,於是就有了第二階段的引導程序,而MBR中代碼的功能也從直接引導操作系統變為了引導第二階段的引導程序。對於UEFI系統,已由EFI應用程序(即EFI分區中的.efi文件)取代MBR和PBR,UEFI會加載引導程序的.efi文件,再由引導程序加載操作系統。MBR和PBR程序通常是用彙編語言編寫的,會調用BIOS中斷調用;而.efi文件則是PE格式的文件,可用C語言編寫。
在計算機中, 引導或者引導程序是計算控制系統的一個初始化過程。引導過程可以使“硬引導”,如:開機通電後硬件診斷;也可以使“軟引導”,此時會跳過開機自啓。一些系統中軟啓動過程中,RAM可以不清零。軟啓動和硬啓動都可以通過硬件發起,如按下電源開關;也可以通過軟件命令來進行。當正常、有效的運行環境達到後,啓動完成。引導裝載程序是計算機開機自檢完成後裝載操作系統或者其他系統軟件的計算機程序。自檢完成後運行引導裝載程序,然後再加載並運行軟件。引導裝載程序可以從永存體(硬盤)裝載到主內存中。一些老計算機中,引導裝載程序可以從打孔卡、穿孔紙帶、或者磁帶中加載到主內存中。啓動裝載程序加載且執行完成啓動的程序。和POST程序相似,啓動裝置代碼可以存儲在永久存儲體位置中,也可以為硬連線的形式。 當代通用計算機中,啓動過程通常包含開機自檢、定位以及初始化外圍設備、然後找到、加載、並開始一個操作系統。睡眠和休眠過程不包含啓動。一些嵌入式系統不要求可察的啓動序列,可以直接運行存儲在ROM中的可運行程序。所有計算機系統都是狀態機,只有重啓才可能返回到初始狀態。 引導在英文中為"boot",是bootstrap的縮寫,源自於短語"pull oneself up by one's bootstraps",即"靠自己振作起來"。如果大部分軟件需要通過其他已運行的程序加載到計算機中,則必須存在一個將初始軟件加載到計算機中的機制。 各種類型的只讀內存可以解決此類的矛盾體——允許計算機帶有可被擦除的啓動程序。隨着ROM容量的變大,更加精細的啓動程序得以實現。 [1] 

引導程序第一台商業計算機

早期可編程商業計算機,如UNIVAC I和IBM 701,會包含執行完整的輸入輸出操作的指令。相同的硬件邏輯可以被用來加載穿孔卡片的內容,或者其他輸入媒體,如磁鼓或者磁帶,這些引導程序可以通過按鍵啓動。IBM701 計算機擁有一個 "Load" 按鈕,此按鈕可以將打孔卡片的前 36個bit字讀入到主存中。左18-bit 半字被視為指令而執行,通常用來將額外的字讀入到內存中。隨後被加載的引導程序被執行,反過來無需更多地人為操作從媒介中加載更大的程序到內存中。隨後計算機跳轉到內存位置001,讀取存儲的第一個指令。第一條指令一般是相同的:將前80個內存位置的信息移到一個彙集區域(打孔卡片2,3,4...)。一旦信息被移動到這些區域後,機器跳轉到080位置(讀取一個卡片),然後下一個卡片將被讀取,並處理相關信息。 同期的其他IBM計算機有着相似的特性。IBM1401系統使用讀卡器從打孔卡片中加載一個程序。打孔卡片中存儲的80個字符被讀入到內存地址001~080。 [2] 

引導程序個人電腦啓動設備

啓動設備(英語:boot device)是指操作系統可被從其上加載的設備。現代計算機的UEFIBIOS都支持從多種設備中啓動,如:硬盤(裝有MBR或者GPT引導)、光驅USB大容量存儲設備(U盤、SD卡等),或者從網卡啓動(使用PXE)。
通常,固件(UEFI 和 BIOS)都會允許用户設置啓動順序(英語:boot order)。如果將啓動順序設為“第一:DVD 驅動器;第二:硬盤驅動器”,固件會先嚐試從 DVD 驅動器啓動,如果失敗(比如驅動器中沒有 DVD)則會再嘗試從本地的硬盤驅動器啓動。
假設有一台 PC,硬盤上裝有Windows 10,用户可以設置啓動順序為上述順序,然後插入LinuxLive CD,這樣就可以直接試用Linux。這樣的過程就是一種雙重引導,即計算機加電自檢(POST)後允許用户選擇所用的操作系統。這個例子中用户是通過 CD 的插入、移除來選擇操作系統的,更常見的情況是直接使用鍵盤從BIOSUEFI的引導菜單(英語:boot menu)中選擇,引導菜單通常可以通過在 POST 時按Delete或F11進入。 [2] 

引導程序智能手機

現代的智能手機具備操作系統,系統在啓動之前需要通過boot loader啓動,手機啓動的時候基帶執行初始化,然後引導系統內核,直到系統啓動。智能手機生產廠商通常在出廠時鎖定了手機的boot loader,以防止用户誤操作損壞了系統文件造成手機功能異常,部分廠商會給開發者或普通用户發放boot loader解鎖碼,這通常需要步驟眾多的申請,鎖定boot loader能部分有效阻止惡意程序對手機造成的破壞,部分用户或開發者會通過解鎖boot oader以獲得更多的功能和權限,這通常會帶來使用風險。 [2] 
參考資料
  • 1.    Principles of Operation Type 701 And Associated Equipment . IBM. 1953. p. 26. Retrieved November 9, 2012.
  • 2.    Larabel, Michael (June 14, 2008). "SplashTop Linux On HP, Dell Notebooks?". Phoronix. Retrieved 20 November 2010.