通過Server Migration Center遷移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源碼包。詳情請參見下載相應版本的GRUB源碼包。
操作步驟
登入Linux原始伺服器。
依次運行以下命令,查看原grub、grub-install以及grub-mkconfig的路徑。
which grub which grub-install which 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 /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
解壓flex安裝包。
tar xzf flex-2.6.4.tar.gz
進入安裝包並建立build檔案夾。
cd flex-2.6.4 mkdir -p build
進入build檔案夾,編譯安裝flex。
cd build ../configure
make && make install
建立軟串連。
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 /home/testuser/tools || mkdir -p /home/testuser/tools
進入tools檔案夾,並下載GRUB 2.02安裝包。
cd /home/testuser/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。
cd build ../configure
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-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