grub_auto_install.sh 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. #!/bin/bash
  2. grub_dir_i386_efi=arch/i386/efi/grub
  3. grub_dir_i386_legacy=arch/i386/legacy/grub
  4. grub_dir_x86_64_efi=arch/x86_64/efi/grub
  5. mkdir -p ${grub_dir_i386_efi}
  6. mkdir -p ${grub_dir_i386_legacy}
  7. mkdir -p ${grub_dir_x86_64_efi}
  8. #检测grub是否已经安装
  9. if [ -d ${grub_dir_i386_efi}/bin ] && [ -d ${grub_dir_i386_legacy}/bin ] && [ -d ${grub_dir_x86_64_efi}/bin ] ; then
  10. exit 0
  11. fi
  12. #仅支持Ubuntu/Debain下的自动安装
  13. if ! hash 2>/dev/null apt-get; then
  14. echo "脚本暂不支持对该系统下grub的安装,请手动完成"
  15. exit 0
  16. fi
  17. #下载grub2.06
  18. if [ ! -f "grub-2.06.tar.xz" ]; then
  19. wget https://mirrors.tuna.tsinghua.edu.cn/gnu/grub/grub-2.06.tar.xz || exit 1
  20. fi
  21. echo "开始下载grub2.06"
  22. echo "下载完成"
  23. tar xvf grub-2.06.tar.xz
  24. #安装对应依赖
  25. sudo apt-get update
  26. sudo apt-get install -y \
  27. make \
  28. binutils \
  29. bison \
  30. gcc \
  31. gettext \
  32. flex \
  33. bison \
  34. automake \
  35. autoconf
  36. cd grub-2.06
  37. echo "开始安装grub2.06"
  38. #编译安装三个版本的grub
  39. ./configure --target=i386 --prefix=$(dirname $PWD)/${grub_dir_i386_legacy} || exit 1
  40. make -j $(nproc) || exit 1
  41. make install || exit 1
  42. make clean || exit 1
  43. ./configure --target=i386 --with-platform=efi --prefix=$(dirname $PWD)/${grub_dir_i386_efi} || exit 1
  44. make -j $(nproc) || exit 1
  45. make install || exit 1
  46. make clean || exit 1
  47. ./configure --target=x86_64 --with-platform=efi --prefix=$(dirname $PWD)/${grub_dir_x86_64_efi} || exit 1
  48. make -j $(nproc) || exit 1
  49. make install || exit 1
  50. cd ..
  51. #解除权限限制
  52. sudo chmod -R 777 ${grub_dir_i386_legacy}
  53. sudo chmod -R 777 ${grub_dir_i386_efi}
  54. sudo chmod -R 777 ${grub_dir_x86_64_efi}
  55. rm -rf grub-2.06
  56. rm grub-2.06.tar.xz*
  57. echo "grub2.06安装完成"