[Linux核心]從開機加電到main函數執行前的過程

來源:互聯網
上載者:User

第一步:啟動BIOS

          CPU加電後首先工作在16位實模式下,

                1.啟動BIOS是通過硬體的特殊設計完成的。加電瞬間強行置CS:0xFFFF,IP:0x0000,如此CS:IP就指向0xFFFF0。BIOS的入口地址即為0xFFFF0

                2.定位BIOS後便開始執行BIOS代碼(比如自檢)。最重要的任務就是在記憶體中建立中斷向量表和中斷服務程式。

                  如:0x00000—0x003FF的1KB構建中斷向量表

                          0x00400—0x004FF用256位元組構建BIOS資料區

                          0x0E2CE載入了8KB左右的中斷服務程式

 

第二步:載入作業系統核心

                1.第一步載入引導程式到記憶體。BIOS程式發出int 0x19中斷,CPU在中斷向量表中找到中斷服務程式入口地址後執行。此段代碼BIOS設計好,與作業系統無關。此中斷程式把軟碟機的0號磁頭對應盤面的0磁軌1扇區的內容拷貝至記憶體0x07C00,此扇區的內容即是linux 0.11的引導程式bootsect,他會把磁碟片中的作業系統陸續載入進記憶體

 

                兩頭約定,定位識別

              兩頭約定就是指約定作業系統必須把最開始執行的代碼放在0盤面0磁軌1扇區,約定BIOS在接到啟動命令後要把開機磁區的代碼載入到0X07C00。這樣只要作業系統的設計者和BIOS的設計者遵照這個約定,BIOS就能順利的引導作業系統的啟動。

 

                 2.第二步,載入setup代碼。

                    linux設計者很好的規划了實模式下1MB記憶體的使用:

SETUPLEN = 4    ! nr of setup-sectors
BOOTSEG  = 0x07c0   ! original address of boot-sector
INITSEG  = 0x9000   ! we move boot here - out of the way
SETUPSEG = 0x9020   ! setup starts here
SYSSEG   = 0x1000   ! system loaded at 0x10000 (65536).
ENDSEG   = SYSSEG + SYSSIZE  ! where to stop loading

                    首先要複製bootsect,就是把自己從BOOTSEG位置複製到INITSEG。從現在起作業系統已經不需要依賴BIOS,可以完全按照自己的意圖分配記憶體使用量。

                   將Setup程式載入到記憶體需要依靠BIOS提供的int 0x13中斷向量所指的中斷服務程式(磁碟服務程式)。使用0x13中斷必須先給他“傳參”,指定的扇區和載入記憶體的位置傳給他。

                   linux會從第2個扇區到第4個扇區載入至記憶體0x90200處

 

                3.第三部,載入system模組。使用的依然是int 0x13中斷。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.