GRUB(GRand Unified Bootloader)是Linux系統的預設引導程式。當系統引導檔案損壞或需要修複啟動菜單時,需要手動安裝或修複GRUB以恢複系統引導功能。
背景資訊
在通過阿里雲Server Migration Center遷移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 flexDebian/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