• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            旅途

            如果想飛得高,就該把地平線忘掉

            Boot Sector結構、系統(tǒng)啟動過程簡介

            解決困擾已久的系統(tǒng)啟動過程,可以幫助使多系統(tǒng)共存,而不影響各自啟動!

            Boot Sector 結構、系統(tǒng)啟動過程簡介

            一. Boot Sector 的組成

            ? ?Boot Sector 也就是硬盤的第一個扇區(qū)(注10柱面,0磁道,1扇區(qū)) (注2 1磁道=16扇區(qū),1扇區(qū)=512字節(jié)), 它由 MBR (Master Boot Record), DPT (Disk Partition Table) 和 Boot Record ID ?三部分組成.
            ? ?MBR 又稱作主引導記錄占用 Boot Sector 的前 446 個字節(jié) ( 0 to 0x1BD ),
            存放系統(tǒng)主引導程序 (它負責檢查硬盤分區(qū)表、尋找可引導分區(qū)并負責將可引導分區(qū)的引導扇區(qū)(DBR)裝入內(nèi)存).
            ? ?DPT 即主分區(qū)表占用 64 個字節(jié) (0x1BE to 0x1FD), 記錄了磁盤的基本分區(qū)
            信息. 主分區(qū)表分為四個分區(qū)項, 每項 16 字節(jié), 分別記錄了每個主分區(qū)的信息
            (因此最多可以有四個主分區(qū)).
            ? ?Boot Record ID 即引導區(qū)標記占用兩個字節(jié) (0x1FE and 0x1FF), 對于合法
            引導區(qū), 它等于
            0xAA55, 這是判別引導區(qū)是否合法的標志.
            ? ?Boot Sector 的具體結構如下圖所示:
            ? ? ?0000 ?|------------------------------------------------|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? Master Boot Record ? ? ? ? ? ? ? ? |
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? 主引導記錄(446字節(jié)) ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01BD ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01BE ?|------------------------------------------------|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01CD ?| ? ? ? ? ? ? 分區(qū)信息 ?1(16字節(jié)) ? ? ? ? ? ? ? ?|
            ? ? ?01CE ?|------------------------------------------------|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01DD ?| ? ? ? ? ? ? 分區(qū)信息 ?2(16字節(jié)) ? ? ? ? ? ? ? ?|
            ? ? ?01DE ?|------------------------------------------------|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01ED ?| ? ? ? ? ? ? 分區(qū)信息 ?3(16字節(jié)) ? ? ? ? ? ? ? ?|
            ? ? ?01EE ?|------------------------------------------------|
            ? ? ? ? ? ?| ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?|
            ? ? ?01FD ?| ? ? ? ? ? ? 分區(qū)信息 ?4(16字節(jié)) ? ? ? ? ? ? ? ?|
            ? ? ? ? ? ?|------------------------------------------------|
            ? ? ? ? ? ?| 01FE ? ? ? ? ? ? ? ?| 01FF ? ? ? ? ? ? ? ? ? ? |
            ? ? ? ? ? ?| ? ? ? ? 55 ? ? ? ? ?| ? ? ? ? ? AA ? ? ? ? ? ? |
            ? ? ? ? ? ?|------------------------------------------------|

            二. 系統(tǒng)啟動過程簡介

            ? ?系統(tǒng)啟動過程主要由一下幾步組成(以硬盤啟動為例):

            ? ?1. 開機
            ? ?2. BIOS 加電自檢 ( Power On Self Test -- POST )
            ? ? ? 內(nèi)存地址為 0ffff:0000
            ? ?3. 將硬盤第一個扇區(qū) (0頭0道1扇區(qū), 也就是Boot Sector)
            ? ? ? 讀入內(nèi)存地址 0000:7c00 處.(注3:遇到最后兩個字節(jié)55 AA讀入內(nèi)存執(zhí)行)
            ? ?4. 檢查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于
            ? ? ? 則轉去嘗試其他啟動介質(zhì), 如果沒有其他啟動介質(zhì)則顯示
            ? ? ? "No ROM BASIC" 然后死機.
            ? ?5. 跳轉到 0000:7c00 處執(zhí)行 MBR 中的程序.
            ? ?6. MBR 首先將自己復制到 0000:0600 處, 然后繼續(xù)執(zhí)行.
            ? ?7. 在主分區(qū)表中搜索標志為活動的分區(qū). 如果發(fā)現(xiàn)沒有活動
            ? ? ? 分區(qū)或有不止一個活動分區(qū), 則轉停止.
            ? ?8. 將活動分區(qū)的第一個扇區(qū)讀入內(nèi)存地址 0000:7c00 處.

            (注4:在分區(qū)表的四個記錄中,一般來說有且只有一個記錄的標記是活動的,MBR(主要負責從活動分區(qū)中裝載并運行系統(tǒng)引導程序)會去找到這個分區(qū)記錄,根據(jù)記錄的起始扇區(qū)加載該分區(qū)的邏輯 0 扇區(qū)(起始扇區(qū))的內(nèi)容到 0x07C0:0000,并且執(zhí)行 JUMP 0x07C0:0000(按照規(guī)范,BOOT RECORD 也應該從 0x07C0:0000 處開始執(zhí)行,所以 MBR 通常都要先將自己搬移,以騰出位置去加載 BOOT RECORD)。控制權切換到 BOOT RECORD。BOOT RECORD(包括boot loader如grub或lilo 等)以 linux 為例,它會讀取 linux 內(nèi)核鏡像到地址 0x9000:0000,然后開始切換到 0x9000:0000 繼續(xù)運行。 以 MS-DOS 為例,則它會讀取文件系統(tǒng)根目錄下的 IO.SYS 和 MSDOS.SYS 兩個文件然后加載到內(nèi)存中繼續(xù)運行。)
            ? ?9. 檢查 (WORD) 0000:7dfe 是否等于 0xaa55, 若不等于則
            ? ? ? 顯示 "Missing Operating System" 然后停止, 或嘗試
            ? ? ? 軟盤啟動.
            ? ?10. 跳轉到 0000:7c00 處繼續(xù)執(zhí)行特定系統(tǒng)的啟動程序.
            ? ?11. 啟動系統(tǒng) ...

            ? ?以上步驟中 2,3,4,5 步是由 BIOS 的引導程序完成. 6,7,8,9,10
            步由MBR中的引導程序完成.

            ? ?一般多系統(tǒng)引導程序 (如 SmartFDISK, BootStar, PQBoot 等)
            都是將標準主引導記錄替換成自己的引導程序, 在運行系統(tǒng)啟動程序
            之前讓用戶選擇要啟動的分區(qū).
            ? ?而某些系統(tǒng)自帶的多系統(tǒng)引導程序 (如 lilo, NT Loader 等)
            則可以將自己的引導程序放在系統(tǒng)所處分區(qū)的第一個扇區(qū)中, 在 Linux
            中即為 SuperBlock (其實 SuperBlock 是兩個扇區(qū)).
            ? ?注: 以上各步驟中使用的是標準 MBR, 其他多系統(tǒng)引導程序的引導過程與此不同.

            注5:一些早期的引導型病毒,以及某些 bootloader,還有些硬盤加密卡,他們會修改 MBR,做個“鉤子”出來。

            posted on 2007-08-23 00:36 旅途 閱讀(805) 評論(0)  編輯 收藏 引用 所屬分類: linux內(nèi)核

            亚洲国产精品成人久久| 亚洲国产精品久久久久婷婷软件 | 久久亚洲私人国产精品vA| 亚洲国产精品高清久久久| 国产午夜精品久久久久九九| 久久综合九色综合久99| 亚洲国产另类久久久精品黑人 | 久久人人爽人人人人爽AV| 久久精品aⅴ无码中文字字幕不卡| 2021国产成人精品久久| 久久人人爽人人爽人人av东京热 | 中文国产成人精品久久亚洲精品AⅤ无码精品 | 99久久无码一区人妻| 国产精品美女久久福利网站| 1000部精品久久久久久久久| 人妻系列无码专区久久五月天| www性久久久com| 少妇无套内谢久久久久| 精品久久久久久久久久中文字幕 | 久久久久女人精品毛片| 精品久久久一二三区| 久久精品中文字幕第23页| 久久99久久99小草精品免视看 | 免费精品久久天干天干| 秋霞久久国产精品电影院| 久久久久亚洲AV无码专区体验| 青青草原综合久久大伊人导航| 香蕉久久夜色精品国产小说| 久久久久久久亚洲Av无码| 久久精品国产久精国产果冻传媒 | 久久精品人人做人人爽电影| 国产AV影片久久久久久| 亚洲香蕉网久久综合影视| 伊人久久国产免费观看视频| 久久久噜噜噜久久中文字幕色伊伊| 久久综合综合久久狠狠狠97色88| 精品无码久久久久久尤物| 精品熟女少妇av免费久久| 久久婷婷五月综合97色| 久久AV高清无码| 超级碰久久免费公开视频|