61 lines
1.1 KiB
Bash
61 lines
1.1 KiB
Bash
|
#!/bin/bash
|
||
|
|
||
|
set -e
|
||
|
|
||
|
JOBS=5
|
||
|
HEAD="bac5d1a64ab4191058a8fd4c05f6b3b339e249e7"
|
||
|
SCRIPT_DIR=$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )
|
||
|
|
||
|
prepare() {
|
||
|
if [[ ! -d ./src ]]; then
|
||
|
git clone git://git.savannah.gnu.org/grub.git src
|
||
|
fi
|
||
|
|
||
|
pushd src
|
||
|
git checkout $HEAD
|
||
|
git clean -fdx
|
||
|
popd
|
||
|
}
|
||
|
|
||
|
build() {
|
||
|
pushd src
|
||
|
|
||
|
./autogen.sh
|
||
|
./configure --with-platform=efi --target=i386
|
||
|
|
||
|
make -j${JOBS}
|
||
|
|
||
|
./grub-mkimage -p /EFI/BOOT -d ./grub-core/ -O i386-efi -o grub.efi \
|
||
|
boot efifwsetup efi_gop efinet efi_uga lsefimmap lsefi lsefisystab \
|
||
|
exfat fat multiboot2 multiboot terminal part_msdos part_gpt normal \
|
||
|
all_video aout configfile echo file fixvideo fshelp gfxterm gfxmenu \
|
||
|
gfxterm_background gfxterm_menu legacycfg video_bochs video_cirrus \
|
||
|
video_colors video_fb videoinfo video
|
||
|
|
||
|
popd
|
||
|
}
|
||
|
|
||
|
setup() {
|
||
|
mkdir -p bin
|
||
|
cp src/grub.efi bin/
|
||
|
}
|
||
|
|
||
|
cleanup() {
|
||
|
rm -rf ./src
|
||
|
rm -rf ./bin
|
||
|
}
|
||
|
|
||
|
# This script will always run on its own basepath, no matter where you call it from.
|
||
|
pushd ${SCRIPT_DIR}
|
||
|
|
||
|
case $1 in
|
||
|
-c | --cleanup)
|
||
|
cleanup
|
||
|
;;
|
||
|
*)
|
||
|
prepare && build && setup
|
||
|
;;
|
||
|
esac
|
||
|
|
||
|
popd
|