138b341b8SYJwu2023#!/bin/bash 238b341b8SYJwu2023grub_dir_i386_efi=arch/i386/efi/grub 3*d02e6ea4Slogingrub_dir_i386_legacy=arch/i386/legacy/grub 438b341b8SYJwu2023grub_dir_x86_64_efi=arch/x86_64/efi/grub 5*d02e6ea4Slogin 6*d02e6ea4Sloginmkdir -p ${grub_dir_i386_efi} 7*d02e6ea4Sloginmkdir -p ${grub_dir_i386_legacy} 8*d02e6ea4Sloginmkdir -p ${grub_dir_x86_64_efi} 9*d02e6ea4Slogin 1038b341b8SYJwu2023 1138b341b8SYJwu2023#检测grub是否已经安装 12*d02e6ea4Sloginif [ -d ${grub_dir_i386_efi}/bin ] || [ -d ${grub_dir_i386_legacy}/bin ] && [ -d ${grub_dir_x86_64_efi}/bin ] ; then 1338b341b8SYJwu2023 exit 0 1438b341b8SYJwu2023fi 1538b341b8SYJwu2023#仅支持Ubuntu/Debain下的自动安装 1638b341b8SYJwu2023if ! hash 2>/dev/null apt-get; then 1738b341b8SYJwu2023 echo "脚本暂不支持对该系统下grub的安装,请手动完成" 1838b341b8SYJwu2023 exit 0 1938b341b8SYJwu2023fi 2038b341b8SYJwu2023#下载grub2.06 21*d02e6ea4Sloginif [ ! -f "grub-2.06.tar.xz" ]; then 22*d02e6ea4Slogin wget https://mirrors.tuna.tsinghua.edu.cn/gnu/grub/grub-2.06.tar.xz || exit 1 23*d02e6ea4Sloginfi 24*d02e6ea4Slogin 2538b341b8SYJwu2023echo "开始下载grub2.06" 26*d02e6ea4Slogin 2738b341b8SYJwu2023echo "下载完成" 28*d02e6ea4Slogintar xvf grub-2.06.tar.xz 2938b341b8SYJwu2023#安装对应依赖 3038b341b8SYJwu2023sudo apt-get update 3138b341b8SYJwu2023sudo apt-get install -y \ 3238b341b8SYJwu2023 make \ 3338b341b8SYJwu2023 binutils \ 3438b341b8SYJwu2023 bison \ 3538b341b8SYJwu2023 gcc \ 3638b341b8SYJwu2023 gettext \ 3738b341b8SYJwu2023 flex \ 3838b341b8SYJwu2023 bison \ 3938b341b8SYJwu2023 automake \ 40*d02e6ea4Slogin autoconf 4138b341b8SYJwu2023 4238b341b8SYJwu2023cd grub-2.06 4338b341b8SYJwu2023echo "开始安装grub2.06" 4438b341b8SYJwu2023#编译安装三个版本的grub 45*d02e6ea4Slogin./configure --target=i386 --prefix=$(dirname $PWD)/${grub_dir_i386_legacy} || exit 1 46*d02e6ea4Sloginmake -j $(nproc) || exit 1 47*d02e6ea4Sloginmake install || exit 1 48*d02e6ea4Sloginmake clean || exit 1 4938b341b8SYJwu2023 50*d02e6ea4Slogin./configure --target=i386 --with-platform=efi --prefix=$(dirname $PWD)/${grub_dir_i386_efi} || exit 1 51*d02e6ea4Sloginmake -j $(nproc) || exit 1 52*d02e6ea4Sloginmake install || exit 1 53*d02e6ea4Sloginmake clean || exit 1 5438b341b8SYJwu2023 55*d02e6ea4Slogin./configure --target=x86_64 --with-platform=efi --prefix=$(dirname $PWD)/${grub_dir_x86_64_efi} || exit 1 56*d02e6ea4Sloginmake -j $(nproc) || exit 1 57*d02e6ea4Sloginmake install || exit 1 5838b341b8SYJwu2023 5938b341b8SYJwu2023cd .. 6038b341b8SYJwu2023#解除权限限制 61*d02e6ea4Sloginsudo chmod -R 777 ${grub_dir_i386_legacy} 6238b341b8SYJwu2023sudo chmod -R 777 ${grub_dir_i386_efi} 6338b341b8SYJwu2023sudo chmod -R 777 ${grub_dir_x86_64_efi} 6438b341b8SYJwu2023rm -rf grub-2.06 65*d02e6ea4Sloginrm grub-2.06.tar.xz* 6638b341b8SYJwu2023echo "grub2.06安装完成" 67