Linux 006 作業系統啟動過程

2021-09-24 15:31:37 字數 2616 閱讀 6433

不錯的文章:

mbr(ms-dos)與gpt——兩種磁碟分割槽表(partition table)格式

硬碟0磁軌的第乙個扇區存放mbp和partition table,這個扇區的大小通常是512位元組。

主引導記錄(mbr,master boot record):佔據硬碟 0 磁軌的第乙個扇區,前 446 個位元組安裝啟動引導程式(boot loader)的地方;之後的 64 個(16×4)位元組的空間,就是儲存的分割槽表(partition table)相關資訊。

分割槽表(partition table):記錄磁碟分割槽狀態,每個分割槽表大小為16個位元組,所以在乙個硬碟上最多可以劃出4個主分割槽。

du命令和df命令的區別

有時我們會發現,使用 du 命令和 df 命令去統計分割槽的使用情況時,得到的資料是不一樣的。那是因為df命令是從檔案系統的角度考慮的,通過檔案系統中未分配的空間來確定檔案系統中已經分配的空間大小。也就是說,在使用 df 命令統計分割槽時,不僅要考慮檔案占用的空間,還要統計被命令或程式占用的空間(最常見的就是檔案已經刪除,但是程式並沒有釋放空間)。

而 du 命令是面向檔案的,只會計算檔案或目錄占用的磁碟空間。也就是說,df 命令統計的分割槽更準確,是真正的空閒空間。

過去乙個磁碟扇區的大小為512 b(byte),隨著4k扇區設計出現,為了相容所有的磁碟,在扇區的定義上面,大多會使用所謂的邏輯區塊位址(logical block address,lba)來處理。

gpt將磁碟所有區塊以lba(預設512b)來規劃,而第乙個lba稱為lba0(從0開始編號)。gpt使用34個lba區塊來記錄分割槽資訊。

lba0(mrp相容區塊):分為兩部分,一部分446b儲存安裝引導程式;另一部分僅放入乙個特殊標誌符,用來表示此磁碟為gpt格式之意。

lba1(gpt 表頭記錄):記錄了分割槽表本身的位置與大小,同時記錄了備份用的gpt分割槽放置的位置。

lba2-33(實際記錄分割槽資訊處):每個lba大小為512b,記錄4組分區記錄,每組分區記錄佔128b;32個lba可以儲存32*4=128組分區記錄。gpt在每組記錄中分別提供了64位來記載開始/結束的扇區號碼,因此gpt分割槽表對於單一分割槽來說,它的最大容量限制在2^(64) * 512位元組=2^(63) * 1k位元組=2^(33) * tb=8zb

給硬碟分割槽

在 linux 中有專門的分割槽命令 fdisk 和 parted。其中 fdisk 命令較為常用(不支援gpt),但不支援大於 2tb 的分割槽;如果需要支援大於 2tb 的分割槽,則需要使用 parted 命令,當然 parted 命令也能分配較小的分割槽。

格式化分割槽(為分割槽寫入檔案系統)

分割槽完成後,如果不格式化寫入檔案系統,則是不能正常使用的。使用 mkfs 命令對硬碟分割槽進行格式化。

主機系統載入硬體驅動方面的程式,主要有早期的bios與新的uefi兩種機制

bios:寫入到主機板的乙個韌體

cmos:記錄各項硬體引數且嵌入在主機板上面的儲存器

啟動流程:

bios:自動啟動,根據使用者設定尋找啟動硬碟,並到該硬碟裡面去讀取第乙個扇區的mbr位置

mbr:第乙個可啟動裝置的第乙個扇區內的主引導記錄塊,內含啟動引導**,目的是載入核心檔案

啟動引導程式(boot loader):乙個可讀取核心檔案來執行的軟體

核心檔案:開始啟動作業系統

1. sec階段:

sec(安全性)階段其主要的特色為「cache as ram」,即處理器的快取當成記憶體。由於c語言需要使用堆疊,在這個階段的系統記憶體尚未被初始化,在沒有記憶體可用的情況下,便把處理器的快取當成記憶體來使用,在主記憶體被初始化之前來進行預先驗證cpu/晶元組及主機板。

因為這時侯沒有快取,會導致處理器的效能變得較差,所以在記憶體初始化完畢之前,sec和pei階段的程式碼越簡短,越能減少這個***。

2. pei階段:

和傳統bios的初始化階段類似,pei(efi前初始化)階段是用以喚醒cpu及記憶體初始化。這時候只起始了一小部分的記憶體。同時,晶元組和主機板也開始初始化。接下來的服務程式會確定cpu晶元組被正確的初始化,在此時,efi驅動程式派送器將載入efi驅動程式記憶體,進入了起始所有記憶體的dxe階段(驅動程式執行環境)。

3. dxe階段:

dxe的主要功能在於溝通efi驅動程式及硬體。也就是說此階段所有的記憶體、cpu(在此是指實體兩個或以上的非核心數目,也就是雙cpu插槽處理器甚至是四cpu插槽處理器)、pci、usb、sata和shell都會被初始化。

4. bds階段:

在bds(開機裝置選擇)這個階段,使用者就可以自開機管理者程式頁面,選擇要從哪個偵測到的開機裝置來啟動。

5. tsl階段:

然後進入tsl(短暫系統載入)階段,由作業系統接手開機。除此之外,也可以在bds階段選擇uefi shell,讓系統進入簡單的命令列,進行基本診斷和維護。

作業系統啟動過程

當我們按下開機鍵後,作業系統究竟是如何跑起來的?這個過程詳細說來很複雜。這裡只簡單描述一下。當機器剛從生產線上下線的時候,裡面沒有作業系統,稱之為裸機。裸機什麼事都幹不了,於是需要裝上作業系統。機器中固化了乙個用於讀取磁碟或者其他裝置的程式,於是當你在啟動時按下f2鍵,就會執行這個程式安裝作業系統。...

作業系統啟動過程

計算機的儲存器分為 大容量儲存器 通常為硬碟 和 主儲存器 即 記憶體 操作 系統 如 windows unix linux mac os 安裝在大容量儲存器上,而主儲存器又分為兩部分 能夠永久儲存資料的rom read only memory 和易失性儲存器部分 即在關機後資料全部丟失 bios ...

作業系統啟動過程

當我們按下開機鍵後,作業系統究竟是如何跑起來的?這個過程詳細說來很複雜。這裡只簡單描述一下。當機器剛從生產線上下線的時候,裡面沒有作業系統,稱之為裸機。裸機什麼事都幹不了,於是需要裝上作業系統。機器中固化了乙個用於讀取磁碟或者其他裝置的程式,於是當你在啟動時按下f2鍵,就會執行這個程式安裝作業系統。...