dos boot record(dbr)作業系統引導記錄是由作業系統的格式化程式建立的,在檔案系統驅動操作任何乙個磁碟卷時,這一部分的資訊將被讀取並作為檔案系統在這個磁碟卷上的引數被使用。它包含了有效的引導程式、廠商標誌、bpb資料塊等。
1.那麼怎麼得到dbr呢?它位於分割槽的第乙個扇區。而分割槽的位址可以從磁碟的第乙個分割槽的分割槽表項中獲得。
具體可參考
2.分析本扇區資料
下面是乙個fat檔案系統的dbr的資訊
(注意 資料以小端格式儲存的)
0x01~0x02: 3個位元組,跳轉指令。跳轉到dbr後面一點的引導程式處。引導程式是一段用來載入真正作業系統的程式。
0x03~0xa: 8個位元組,oem串。本例中是msdoc5.0
0x0b~0x0c: 2個位元組,每扇區的位元組數。本例是0x0200,512
0x0d 1個位元組,每簇的扇區數。本例是0x8
0x0e~0x0f: 2個位元組,保留扇區數。本例是0x0026
0x10: 1個位元組,fat表個數。本例是0x02
0x11~0x12: 2個位元組,根目錄最多可容納的目錄項數。fat12和fat16通常為512,fat32不使用此值,為0.本例中是fat32,所以為0.
0x13~0x14: 2個位元組,扇區總數。小於32mb時使用該處存放,超過32mb的使用偏移0x20~-x23位元組處的4位元組存放。本例中磁碟為7g多,故為0.
0x15: 1個位元組,介質描述。本例中0xf8表示本地硬碟。
0x16~0x17: 2個位元組,每個fat表的扇區數。同樣,fat32不使用,為0.
0x18~0x19: 2個位元組,每個磁軌的扇區數。本例是0x3f,63
0x1a~0x1b: 2個位元組,磁頭數。本例是0xff,255
0x1c~0x1f: 4個位元組,分割槽前已經使用的扇區數,隱藏扇區數。本例是 0x 00 00 00 3f,63
0x20~0x23: 4個位元組,檔案系統扇區數。本例是 0x00 ea 58 78,15358072
0x24~0x27: 4個位元組,每個fat表的扇區數。本例是 0x00 00 3a 79,14969
0x28~0x29: 2個位元組,標記。
0x2a~0x2b: 2個位元組,版本號。
0x2c~0x2f: 4個位元組,根目錄簇號,2。(雖然在fat32檔案系統下,根目錄可以存放在資料區的任何位置,但是通常情況下還是起始於2號簇)
0x30~0x31: 2個位元組,fsinfo(檔案系統資訊扇區)扇區號,1。該扇區為作業系統提供關於空簇總數及下一可用簇的資訊。
0x32~0x33: 2個位元組,備份引導扇區的位置,6。備份引導扇區總是位於檔案系統的6號扇區。
0x34~0x3f: 12個位元組,未使用。
0x40~0x40: 1個位元組,bios int 13h 裝置號,0x80。
0x41~0x41: 1個位元組,未用。
0x42~0x42: 1個位元組,擴充套件引導標誌。0x29。
0x43~0x46: 1個位元組,卷序列號。通常為乙個隨機值。
0x47~0x51: 11個位元組,卷標(ascii碼),如果建立檔案系統的時候指定了卷標,會儲存在此。本例中是no name
0x52~0x59: 8個位元組,檔案系統格式的ascii碼,fat32。
0x5a~0x1fd: 410個位元組,未使用。該部分沒有明確的用途。
0x1fe~0x1ff: 簽名標誌「55 aa」。
3.fsinfo資訊扇區
fsinfo一般位於檔案系統的1號扇區,就是dbr的下乙個扇區。它用來記錄檔案系統中空閒簇的數量以及下一可用簇的簇號等資訊。
下面介紹一下fsinfo的結構
0x00~0x03: 4個位元組,擴充套件引導標誌「52526141」。
0x04~0x1e3: 480個位元組,未使用,全部置0。
0x1e4~0x1e7: 4個位元組,fsinfo簽名「72724161」。
0x1e8~0x1eb: 4個位元組,檔案系統的空簇數,41207688(0x00 12 6d 88)。
0x1f0~0x1fd: 14個位元組,未使用。
0x1fe~0x1ff: 2個位元組,「55 aa」標誌。
注意:通常情況下,檔案系統的2號扇區結尾也會被設定「55 aa」標誌。6號扇區也會有乙個引導扇區的備份,相應的,7號扇區應該是乙個備份fsinfo資訊扇區。8號扇區可以看做是2號扇區的備份,它的結尾也會有乙個「55 aa」標誌。
4.下面是乙個ntfs檔案系統的dbr
0x01~0x02: 3個位元組,跳轉指令。
0x03~0xa: 8個位元組,檔案系統的字串。本例中是ntfs
0x0b~0x0c: 2個位元組,每扇區的位元組數。本例是0x0200,512
0x0d 1個位元組,每簇的扇區數。本例是0x8
0x0e~0x0f: 2個位元組,保留扇區數。本例是0x0000
0x10~0x13: 4個位元組,未使用
0x15: 1個位元組,介質描述。本例中0xf8表示本地硬碟。
0x16~0x17: 2個位元組,總為0.
0x18~0x19: 2個位元組,每個磁軌的扇區數。本例是0x3f,63
0x1a~0x1b: 2個位元組,每個柱面的磁頭數。本例是0xff,255
0x1c~0x1f: 4個位元組,隱含扇區數。本例是 0x 0c 81 98 00,209819648
0x20~0x23: 4個位元組,未使用
0x24~0x27: 4個位元組,未使用,一般都為0x80 00 80 00
0x28~0x2f: 8個位元組,該分割槽的扇區數。本例為0x00 00 00 00 19 01 8f ff,419532799
0x30~0x37: 8個位元組,$mft的起始邏輯簇號。本例為0x00 00 00 00 00 0c 00 00
0x38~0x3f: 8個位元組,$mftmirr(mft檔案的映象檔案)的起始邏輯簇號。本例為0x00 00 00 00 00 00 00 02
0x40~0x43: 4個位元組,每個mft記錄所佔的簇數。本例中為0xf6 00 00 00
0x44~0x47: 4個位元組,每索引簇數,通常每索引簇數為1個簇。本例為0x00 00 00 01
0x48~0x4f: 8個位元組,分割槽的邏輯序列號,這個序列號是硬碟格式化時隨機產生的。本例為0x14 a2 8f a3 a2 8f 87 c6
0x50~0x53: 4個位元組,校驗和。為0x00 00 00 00 00
0x54~0x1fd: 426個位元組,自舉**
0x1fe~0x1ff: 結束標誌
作業系統引導
1.系統開機或者重啟。2.bios 加電自檢 power on self test post bios執行記憶體位址為ffff 0000h 處的跳轉指令,跳轉到固化在rom中的自檢程式處,對系統硬體 包括記憶體 進行檢查。3.當bios檢查到硬體正常並與cmos 中的設定相符後,按照cmos 中對啟...
作業系統引導
作業系統是如何引導的呢?當系統加電自檢通過以後,硬碟被復位,bios 將根據使用者指定的啟動順序從軟盤 硬碟或光碟機進行啟動。以從硬碟啟動為例,系統 bios 將主引導記錄讀入記憶體。然後,將控制權交給主引導程式,然後檢查分割槽表的狀態,尋找活動的分割槽。最後,由主引導程式將控制權交給活動分割槽的引...
作業系統引導扇區
作業系統全部筆記目錄見 作業系統筆記整理 load setup 載入setup模組 mov dx,0x0000 mov cx,0x0002 mov bx,0x0200 mov ax,0x0200 setuplen int 0x13 bios中斷 jnc ok load setup mov dx,0x...