因為作業系統核心程式kernel實作的功能很多,為了減少編寫難度,肯定要使用C語言編寫,這就要求核心是在保護模式下使用彙編和C語言編寫的。并且為了核心調試友善,選擇使用ELF格式的核心程式。
一個作業系統從開機到開始運作,大緻經曆 “引導→加載核心入記憶體→跳入保護模式→按照ELF格式移動核心-->開始執行核心”這樣一個過程。也就是說,在核心開始執行之前不但要加載核心,而且還有準備保護模式等一系列工作,如果全都交給引導扇區來做,而且我們的引導扇區為了能夠讓DOS以及 Linux識别了增加了BPB塊,512位元組很可能是不夠用的,是以,不妨把這個過程交給另外的子產品來完成,我們把這個子產品叫做Loader。
是以orange's的程式規劃為:
boot程式不能大于512位元組,編譯生成以後使用dd指令寫入到軟碟的引導扇區,由BIOS加載引導扇區并跳轉到boot執行;
boot按照FAT12檔案系統格式尋找loader程式,把loader從軟碟讀入到指定記憶體位置,并跳轉到loader執行;
(loader程式編譯生成以後,是借助linux識别軟碟并寫入到軟碟的)
loader程式按照FAT12檔案系統格式尋找kernel程式,把kernel從軟碟讀入到指定記憶體位置,按照ELF格式移動核心,并跳轉到kernel執行;
(kernel程式編譯生成以後,是借助linux識别軟碟并寫入到軟碟的)