全部產品
Search
文件中心

Elastic Compute Service:如何為Linux伺服器安裝GRUB?

更新時間:Feb 28, 2024

通過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源碼包

操作步驟

  1. 登入Linux原始伺服器。

  2. 依次運行以下命令,查看原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遷移伺服器後,恢複原名以使用原配置。

  3. 運行以下命令,安裝GRUB依賴的bison、gcc以及make工具。

    yum install -y bison gcc make
  4. 依次運行以下命令,安裝flex。

    1. 判斷是否存在檔案夾tools,如果不存在則建立。

      test -d /home/testuser/tools || mkdir -p /home/testuser/tools
    2. 進入tools檔案夾,並下載flex安裝包。

      cd /home/testuser/tools
      wget https://github.com/westes/flex/releases/download/v2.6.4/flex-2.6.4.tar.gz
    3. 解壓flex安裝包。

      tar xzf flex-2.6.4.tar.gz
    4. 進入安裝包並建立build檔案夾。

      cd flex-2.6.4
      mkdir -p build
    5. 進入build檔案夾,編譯安裝flex。

      cd build
      ../configure
      make && make install
    6. 建立軟串連。

      ln -s /usr/local/bin/flex /usr/bin/flex
  5. 依次運行以下命令,安裝GRUB。

    CentOS 5、Red Hat Enterprise Linux 5、Debian 7、Amazon Linux或Oracle Linux等低版本作業系統,更新GRUB至2.02及以上版本。

    1. 判斷是否存在檔案夾tools,如果不存在則建立。

      test -d /home/testuser/tools || mkdir -p /home/testuser/tools
    2. 進入tools檔案夾,並下載GRUB 2.02安裝包。

      cd /home/testuser/tools
      wget https://alpha.gnu.org/gnu/grub/grub-2.02~rc1.tar.gz
    3. 解壓GRUB 2.02安裝包。

      tar xzf grub-2.02~rc1.tar.gz
    4. 進入安裝包並建立build檔案夾。

      cd grub-2.02~rc1
      mkdir -p build
    5. 進入build檔案夾,編譯安裝GRUB。

      cd build
      ../configure
      sed -i -e "s/-Werror//" ./grub-core/Makefile
      sed -i -e "s/-Werror//" ./Makefile
      make && make install
    6. 建立軟串連。

      ln -s /usr/local/sbin/grub-install /sbin/grub-install
      ln -s /usr/local/sbin/grub-mkconfig /sbin/grub-mkconfig
    說明

    若編譯過程中出現了-Werror報錯,您可以定位到編譯對象的編譯檔案makefile中,去掉-Werror選項重新編譯。

  6. 運行以下命令,檢查是否已成功安裝或更新至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