grub_auto_install.sh 1.9 KB

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