grub_auto_install.sh 1.4 KB

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