xref: /DragonOS/tools/grub_auto_install.sh (revision d02e6ea4112ad520aa4090ff73cdf592e14c0a82)
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