 
 
		
		
			 
		
		
			通过服务器迁移中心SMC迁移Linux源服务器时,若Linux源服务器未安装GRUB、系统版本较低(如CentOS 5和Debian 7)、自带的系统引导程序GRUB( GRand Unified Bootloader)版本低于2.02,日志文件提示Do Grub Failed时,您需要安装GRUB的2.02及以上版本。
		
		
			
				背景信息
			
		
本文以GRUB 2.02版本为例,介绍在Linux服务器上安装系统引导程序GRUB的操作步骤。安装其他版本的操作步骤与此相同,主要差异在于安装过程中需下载相应版本的GRUB源码包。 
		
			
				操作步骤
			
		
		
			- 
				登录Linux源服务器。 
			
- 
				依次运行以下命令查看原grub、grub-install以及grub-mkconfig的路径。 
				
				
					
						- 
							如果任一命令提示路径不存在,说明源服务器中未安装GRUB或者文件缺失。您需要参见下文的操作步骤安装GRUB。
						
- 
							如果能够查看到文件路径,则需要运行以下命令为旧版本grub、grub-install以及grub-mkconfig改名以备份文件,然后参见下文的操作步骤安装新版本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工具。 
				
					
						
							
						 yum install -y bison gcc make
 
 
 
- 
				依次运行以下命令安装flex。 
				
					
						- 
							判断是否存在文件夹tools,如果不存在则创建。
							
								
									
								 test -d /root/tools || mkdir -p /root/tools
 
 
- 
							进入tools文件夹,并下载flex安装包。
							
								
									
								 cd /root/tools
wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
 
 
- 
							解压flex安装包。
							
								
									
								 tar xzf flex-2.6.4.tar.gz
 
 
- 
							进入安装包并创建build文件夹。
							
								
									
								 cd flex-2.6.4 mkdir -p build
 
 
- 
							进入build文件夹,编译安装flex。
							
							
						
- 
							创建软连接。
							
								
									
								 ln -s /usr/local/bin/flex /usr/bin/flex
 
 
 
 
- 
				依次运行以下命令安装GRUB。 
				
					CentOS 5、Red Hat Enterprise Linux 5、Debian 7、Amazon Linux或Oracle Linux等低版本操作系统,更新GRUB至2.02及以上版本。
					 
						- 
							判断是否存在文件夹tools,如果不存在则创建。
							
								
									
								 test -d /root/tools || mkdir -p /root/tools
 
 
- 
							进入tools文件夹,并下载GRUB 2.02安装包。
							
								
									
								 cd /root/tools
wget https://alpha.gnu.org/gnu/grub/grub-2.02~rc1.tar.gz
 
 
- 
							解压GRUB 2.02安装包。
							
								
									
								 tar xzf grub-2.02~rc1.tar.gz
 
 
- 
							进入安装包并创建build文件夹。
							
								
									
								 cd grub-2.02~rc1
mkdir -p build
 
 
- 
							进入build文件夹,编译安装GRUB。
							
							
								
									
								 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
 
 
 
						
							
						 
							说明 若编译过程中出现了-Werror报错,您可以定位到编译对象的编译文件makefile中,去掉-Werror选项重新编译。
 
 
- 
				运行以下命令,检查是否已成功安装或更新至GRUB 2.02版本。 
				
			
			
				后续步骤
			
		
		
			- 
				成功安装新版本系统引导程序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
 如果您有其他问题,可以联系北京志远天成阿里云代理商,为您提供一对一专业全面的技术服务,同时新老阿里云会员,均可享受我公司代理商价格,欢迎咨询!  
 
- 
				
			
 
我有话说: