iT邦幫忙

2023 iThome 鐵人賽

DAY 28
0

嗨我是k66,今天要把我們寫好的開機畫面放到實體機器(電腦)上運行,之前都是在QEMU(虛擬機)上運行。先展示畫面~
https://ithelp.ithome.com.tw/upload/images/20231004/20161828Yc5q96Zq8A.jpg

可以看到與虛擬機(QEMU)有些不同,虛擬機呈現的畫面如圖。
https://ithelp.ithome.com.tw/upload/images/20231004/201618281Ei6ejRyRY.png

此問題是在虛擬機上跑時沒發現的,未來會更新之。

為使讀者容易操作,以下我們先講完所有步驟,實作成功後再講述步驟背後意義。


在實體機跑的7步步驟

  1. 準備好一台USB隨身碟,將其格式化成FAT32格式。
  2. 將以下檔案放入USB隨身碟中。請至[註1]下載,OinkBL.efi產生位置請參考Day10
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828IfiqPkBQSW.png
  3. 在efi/boot/下新增一startup.nsh[自我挑戰8]。
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828yP3nypbvj4.png
    fs0:\OinkBL.efi
  1. 進電腦的UEFI選單(如按F2,詳情請看[註2])
  2. 選擇將Secure Boot關閉(disable)
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828gM2OOeOIsa.jpg
  3. 選擇開機順序(boot order)為USB隨身碟第一,通常為UEFI:隨身碟廠牌名稱。
    https://ithelp.ithome.com.tw/upload/images/20231004/201618280XMvgUeHOw.jpg
  4. 存檔並開機,會看到以下UEFI Shell畫面
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828Yc5q96Zq8A.jpg

我們自己做的UEFI開機畫面成功啦!


為什麼要有這7步步驟?

  1. 需要將USB格式化,且存efi/boot/是為了將USB做成能開機的Live USB
  2. 第三步設定startup.nsh可省略,省略後會變成讀者得在每次以USB隨身碟開機時都得輸入指令:
    fs0:\OinkBL.efi

仔細看可以發現在開機時會有startup.nsh字樣,表示優先執行startup.nsh。因此我們利用此特性,在startup.nsh加入欲被優先執行之指令,如此便不用每次都要手動輸入,也才符合漫畫中小豬Oink的目標—做個有模有樣的開機畫面能嚇唬邪惡城主。
https://ithelp.ithome.com.tw/upload/images/20231004/20161828LkJHQR0Z3J.jpg


題外話,UEFI SHELL的實用指令

  1. map // 查看所有裝置(原文是device handle),若FS0:找不到USB時使用。
  2. cd efi // 去efi資料夾
  3. edit startup.nsh // 編輯startup.nsh

其中edit又有:

  1. ctrl+E: help(如圖右下角)
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828kanXIiEHe7.jpg
    2.ctrl+Q: 離開
    https://ithelp.ithome.com.tw/upload/images/20231004/20161828gQ7Y6ejGWt.jpg

總結

本篇完成將我們的開機畫面運行在實體機上,我們明天見!


自我挑戰8

DOS時代也有類似 /EFI/BOOT/startup.nsh的script,請問是什麼?


[註1] https://github.com/tianocore/edk2/blob/UDK2018/ShellBinPkg/UefiShell/X64/Shell.efi
請建立efi\boot\後,將shell.efi改名成bootX64.efi。
[註2] 各家OEM廠進UEFI/BIOS設計有異,大部分OEM如ASUS、ACER等是F2,HP則是F10。參考此處


上一篇
【Day 27】自己寫的UEFI小遊戲
下一篇
【Day 29】豬腳城結局 + 回顧所學 + UEFI debug技巧
系列文
世界第一簡單的UEFI,實作打造自己的開機畫面31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言