GRUB(GRand Unified Bootloader)是Linux系统的默认引导程序。当系统引导文件损坏或需要修复启动菜单时,需要手动安装或修复GRUB以恢复系统引导功能。
背景信息
在通过阿里云服务器迁移中心SMC迁移Linux源服务器时,若Linux源服务器未安装GRUB、系统版本较低(如CentOS 5和Debian 7),或自带的GRUB版本低于2.02,日志文件提示“Do Grub Failed”时,您需要安装GRUB的2.02及以上版本。
本文以GRUB 2.02版本为例,介绍在Linux服务器上安装系统引导程序GRUB的操作步骤。安装其他版本的操作步骤与此相同,主要差异在于安装过程中需下载相应版本的GRUB源码包。详情请参见下载相应版本的GRUB源码包。
操作步骤
步骤一:查看GRUB版本
使用root账户登录Linux源服务器。
运行以下命令,查看原GRUB及其相关工具的路径。
which grub which grub-install which grub-mkconfig
如果任一命令提示路径不存在,说明源服务器中未安装GRUB或者文件缺失,需按照后续步骤安装GRUB。
如果能查看到文件路径,需运行以下命令为旧版本文件改名以备份,然后安装新版本GRUB覆盖当前版本。
mv /sbin/grub /sbin/grub-old mv /sbin/grub-install /sbin/grub-install-old mv /sbin/grub-mkconfig /sbin/grub-mkconfig-old
说明您可以在使用SMC迁移服务器后,恢复原名以使用原配置。
步骤二:安装依赖工具
运行以下命令,安装GRUB依赖的bison、gcc以及make工具。
CentOS/RHEL
yum install -y bison gcc make flex
Debian/Ubuntu
apt-get update && apt-get install -y bison gcc make flex
步骤三:安装flex
创建tools文件夹(若不存在)。
test -d /home/testuser/tools || mkdir -p /home/testuser/tools
进入tools文件夹,并下载flex安装包。
cd /home/testuser/tools wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz tar xzf flex-2.6.4.tar.gz
编译安装flex,并创建软连接。
cd flex-2.6.4 mkdir -p build cd build ../configure make && make install ln -s /usr/local/bin/flex /usr/bin/flex
步骤四:安装GRUB
下载并解压GRUB 2.02安装包。
cd /home/testuser/tools wget https://alpha.gnu.org/gnu/grub/grub-2.02~rc1.tar.gz tar xzf grub-2.02~rc1.tar.gz
编译安装GRUB,并创建软连接。
cd grub-2.02~rc1 mkdir -p build cd build ../configure # 若出现-Werror报错,则修改Makefile去除-Werror选项 sed -i -e "s/-Werror//" ./grub-core/Makefile sed -i -e "s/-Werror//" ./Makefile make && make install ln -s /usr/local/sbin/grub-install /sbin/grub-install ln -s /usr/local/sbin/grub-mkconfig /sbin/grub-mkconfig
步骤五:验证安装
运行以下命令,检查是否已成功安装或更新至GRUB 2.02版本。
grub-install --version
后续步骤
成功安装新版本系统引导程序GRUB后,您可以使用SMC迁移服务器至阿里云。具体操作,请参见迁移指引。
(可选)迁云成功后,如果您需要使用旧版本的GRUB,可以运行以下命令将GRUB恢复为旧版本。
rm /sbin/grub-install rm /sbin/grub-mkconfig rm /boot/grub/grub.cfg mv /sbin/grub-old /sbin/grub mv /sbin/grub-install-old /sbin/grub-install