開機鏈:從按下電源到桌面,每一棒在做什麼

開機鏈:從按下電源到桌面,每一棒在做什麼 A workflow diagram generated by Archify. 01 / 平常開機(你現在就是這樣) 02 / 之後:m1n1 的另一種用法 韌體階段 載入器階段 作業系統 iBoot · Apple 的,不可改 · 平常開機(你現在就是這樣) › 韌體階段 · 驗證簽章 iBoot Apple 的,不可改 驗證簽章 m1n1 · 初始化硬體、給 DT · 平常開機(你現在就是這樣) › 韌體階段 · 已經在跑了 m1n1 初始化硬體、給 DT 已經在跑了 U-Boot · 提供標準開機介面 · 平常開機(你現在就是這樣) › 載入器階段 U-Boot 提供標準開機介面 GRUB · 讀清單、顯示選單 · 平常開機(你現在就是這樣) › 載入器階段 · 在這裡選 kernel GRUB 讀清單、顯示選單 在這裡選 kernel Linux kernel · 掛 rootfs、載入模組 · 平常開機(你現在就是這樣) › 作業系統 Linux kernel 掛 rootfs、載入模組 Hyprland · 你看到的桌面 · 平常開機(你現在就是這樣) › 作業系統 Hyprland 你看到的桌面 m1n1 @ EL2 · 改跑 hypervisor 模式 · 之後:m1n1 的另一種用法 › 載入器階段 m1n1 @ EL2 改跑 hypervisor 模式 macOS guest · 被觀測的對象 · 之後:m1n1 的另一種用法 › 載入器階段 macOS guest 被觀測的對象 載入選中那顆 當 guest 開起來 交棒 啟動桌面 換個模式跑 Legend 你看到的畫面 開機載入與核心 m1n1(關鍵分歧點) Apple 的/被觀測的

每一棒在做什麼

  • • iBoot:Apple 的韌體,驗證簽章後交棒,你碰不到
  • • m1n1:初始化硬體、產生 device tree —— Asahi 安裝時就放進 stub 了
  • • U-Boot:把 Apple 的特殊環境轉成標準 Linux 開機介面
  • • GRUB:讀開機項目清單、顯示選單、載入你選的那顆 kernel

檔案與清單在哪

  • • kernel 本體:/boot/vmlinuz-<版本>,每顆都有版本後綴所以能並存
  • • device tree:/boot/dtb-<版本>/ 模組:/lib/modules/<版本>/
  • • 開機項目清單:/boot/loader/entries/,一顆 kernel 一個 .conf
  • • 看人話版:sudo grubby --info=ALL

這個專案為什麼要懂它

  • • 你會多裝一顆 fairydust kernel,兩顆並存、開機時選
  • • 所以動手前要先讓 GRUB 選單顯示,否則新 kernel 開不起來時沒地方退回
  • • m1n1 不是要新裝的東西 —— 它現在就在你的開機鏈裡,只是換個模式跑
  • • hypervisor 用的是你自己 build 的另一份,跟 stub 那份互不干擾