嗨我是k66,還記得本系列文初衷是做一個開機畫面嚇唬邪惡城主這件事嗎?以做出嚇唬畫面來說Day17已完成XDD但開機畫面而言還不算做完,目前為止我們的bootloader還沒有辦法將控制權交給OS。
小豬Oink: 豬油博士我們已經完成開機畫面了耶!
豬油博士: 不!眾人熟知的開機畫面需要進入作業系統,那我們還算做完。我們需要進到作業系統。
小豬Oink: 進到作業系統!會很難嗎?!10天做的完嗎!!OinkOinkOinkOink!!!
豬油博士: Oink你先別緊張,成熟的作業系統很複雜,但我們可以做一個簡單的呀!
小豬Oink: 太好了~嚇死我了><
豬油博士: 還記得Day2提過,Bootloader將控制權交給kernel嗎?
小豬Oink: 我記得!kernel要怎麼實作呢?
豬油博士: 實作前我們須先了解kernel製作原理,kernel可以由Assembly或C語言開發。控制權交給kernel時多在UEFI開機流程七階中的第4(BDS)至5(RT)階,可被NASM、GCC及Clang等編譯器編成`.bin`或`.elf`的二進制文件。
小豬Oink: kernel為什麼會有`.bin`和`.elf`二種格式呢?
豬油博士: 簡單記是.bin是Windows的附檔名,.elf是Unix家的。因為Windows採PE(Portable Executable),而Unix採ELF(Executable and Linkable Format)。[註1]每個ELF檔由二header table(Program, Section)組成。
本篇介紹Kernel開發原理,下一篇實作Kernel,我們明天見!