今天應該是沒啥新進度了。花了比較多時間在 debug。先上圖這是目前引入 GRUB 的結果。目前還有一些 INT 中斷服務程式尚未實作,導致 GRUB 開不起來。
在之前我們實作 INT 13h 是以 AX 比對功能號,命中就 call 對應處理,但對於未實作的功能號,沒有做任何處理最後就返回了,這導致花了很多時間才發現問題。補上 I/O log 之後才看見,GRUB 調用了多個我們尚未實作的功能號(INT 13h 的),而 GRUB 則因為無法取得正確信息而導致觸發跑到 INT 06h (#UD 無效指令)。但實際上這個 INT 06h 不是因為載入的 img 出錯而是 BIOS 沒有實作造成的錯誤。
為了避免以後發生類似問題,未實作的功能號一律留下 log,避免再被吞掉導致 debug 困難,我們就跟著 log 逐步補齊必要的實作。
參賽到現在也快 30 天,我高估自己的能力同時也沒分配足夠的時間在鐵人賽上。最早我打算先在 KVM 上做 Type‑2,接著嘗試抽離 KVM 開始處理 Type‑1,讓 Type‑2 跑在 Type‑1 上,不過目前得進度說明,這個規模超過了我時間與精力的上限。
第 1 天訂下的一些目標應該有不少會跳票了,目前先希望可以把 Type-2 做到一個程度。我會補齊 GRUB 實作在套個簡單開機碟,至少要能看到真正的開機流程與畫面。實作的天數應該會超出 30 天。