iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
SideProject30

世界第一簡單的UEFI,實作打造自己的開機畫面系列 第 20

【Day 20】bootloader轉交控制權給kernel?ASM+UEFI寫kernel(上)

  • 分享至 

  • xImage
  •  

嗨我是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,我們明天見!


註[1] https://zh.wikipedia.org/zh-tw/%E5%8F%AF%E5%9F%B7%E8%A1%8C%E8%88%87%E5%8F%AF%E9%8F%88%E6%8E%A5%E6%A0%BC%E5%BC%8F


上一篇
【Day 19】自己寫UEFI創建事件—按ESC退出
下一篇
【Day 21】bootloader轉交控制權給kernel?ASM+UEFI寫kernel(下)
系列文
世界第一簡單的UEFI,實作打造自己的開機畫面31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言