grub-2.06.tar.gz
编译环境:opensuse 15.3 WSL,x86_64,参考源码包内的INSTALL文件
- 安装编译工具
# zypper in gcc make bison gettext binutils flex freetype2-devel device-mapper-devel xz-devel
默认安装的gcc版本为7.5
# zypper in cross-aarch64-gcc7 cross-aarch64-binutils
若要交叉编译适用于aarch64架构所需的额外软件包
- ./configure
下载源码包,解压缩,并进入文件夹
$ mkdir i386pc
$ cd i386pc
$ ../configure --prefix=[grub最后将要安装的路径]
默认的配置方式是传统BIOS启动
$ mkdir x64efi
$ cd x64efi
$ ../configure --prefix=[grub最后将要安装的路径] --target=x86_64 --with-platform=efi
UEFI x86_64位启动
$ mkdir arm64efi
$ cd arm64efi
$ ../configure --prefix=[grub最后将要安装的路径] --target=aarch64-suse-linux --with-platform=efi
UEFI aarch64启动
以上配置均为在x86系统下运行grub程序,最终grub在目标环境启动运行。
若要在arm或其他架构运行grub程序,则需要指定--host=,详见INSTALL文件
- make
- make install
将编译的程序安装至prefix指定的路径中。
注意:在较高版本linux编译,会导致程序放到低版本linux无法运行。
目前,交叉编译的arm的grub已在基于飞腾的终端上验证。