為樹莓派3B 編譯 64位UEFI 韌體

2021-09-24 07:31:16 字數 1794 閱讀 4179

樹莓派(raspberry) 是基於arm架構的單板機,憑藉著低廉的**,豐富的社群資源風靡全球。

在iot 大行其道的今天,微軟也在樹莓派上面開發了windows iot 的作業系統。為支援windows,微軟請intel為樹莓派開發了32位的uefi 韌體(專案位址)。但是微軟的這個韌體非常簡陋,支援的功能也很有限。國外有位大神基於微軟的專案又開發了64 位的uefi 韌體raspberrypipkg(專案位址),可以啟動arm 版的windows/linux/bsd等。微軟的方案在windows 下面編譯起來非常簡單,就不再贅述。這裡只記錄一下如何編譯64位的raspberrypipkg 。

os:這裡要求用linux環境,例如用的是ubuntu 18.04.2 lts x64

step1:安裝edk2 build 所需的基本工具集,乙個命令搞定:

sudo apt-get install build-essential git uuid-dev acpica-tools nasm python
tar xvjf gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu.tar.xz
git clone
git clone git:

cd edk2

git reset --hard 66127011a544b90e800eb3619e84c2f94a354903

git config --global user.email "[email protected]"

git config --global user.name "charles"

git am --ignore-whitespace ../raspberrypipkg/edk2patches/*.patch

step6:複製「raspberrypipkg\scripts\build5」到工作目錄下。並且執行它:

#最終的目錄結構應該是像下面一樣:

# \# \edk2

# \raspberrypipkg

# \gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu

# \build5

#修改build5裡面的編譯工具路徑:

#export path=$path:$pwd/gcc-linaro-5.5.0-2017.10-i686_aarch64-linux-gnu/bin

export path=$path:$pwd/gcc-linaro-5.5.0-2017.10-x86_64_aarch64-linux-gnu/bin

執行build5,注意不要用root 許可權來執行:

./build5
可以看到最終順利生成 rpi_efi.fd,這就是樹莓派的uefi 韌體檔案。這個檔案加上閉源的gpu 韌體和配置檔案,放到sd卡裡面就可以順利進入uefi shell。

補充:1.關於aarch64-linux-gnu,使用「sudo apt-get install gcc-aarch64-linux-gnu」 來安裝的話,安裝的版本是最新7.4版本。也可以正常編譯,但是release 版的檔案會有奇怪的問題。所以採用raspberrypipkg 一致的5.5.0版本。

sudo apt-get install gcc-5

#鏈結gcc 5到gcc

cd /usr/bin

sudo rm gcc

sudo ln -s gcc-5 gcc

樹莓派3B 核心編譯

1.1開發環境系統 ubuntu 16 64 位 linux 樹莓派核心原始碼 tools 樹莓派的交叉編譯工具 儲存路徑為 raspberry 下2.1檢視當前樹莓派編譯器的資訊 root raspberrypi cat proc version linux version 4.4.13 v7 d...

樹莓派3B 核心編譯

選著linux工程 版本分支選擇rpi 4.14.y 如果已經有核心配置檔案則不需要此步驟。在當前執行系統中執行如下命令可以獲取config.gz配置檔案,pi raspberrypi sudo modprobe configs pi raspberrypi ls proc con proc con...

樹莓派3B 編譯EMQX

emq是一款國產的高效能訊息 伺服器。功能也挺強大,使用也挺簡單。但是,emq是一款商業軟體,高階功能是需要購買license的。官方 上有詳細的介紹。類別效能 license emq x broker 十萬級開源免費 emq x enterprise 百萬級官網免費30天 emq x platfo...