すべてのプロダクト
Search
ドキュメントセンター

Elastic Compute Service:LinuxサーバーにGRUBをインストールする

最終更新日:Aug 26, 2024

server Migration Center (SMC) を使用してサーバーをAlibaba Cloudに移行するときに、GRand Unified Bootloader (GRUB) システムブートプログラムがLinuxサーバーにインストールされていない場合は、サーバーにGRUB v2.02以降をインストールする必要があります。 サーバーがCentOS 5やDebian 7などの初期のLinuxディストリビューションを実行している場合、GRUBバージョンが2.02より前であるか、ログファイルに「Do Grub Failed」というエラーメッセージが表示され、GRUBをv2.02以降にアップグレードします。

背景情報

このトピックでは、LinuxサーバーにGRUBをインストールする方法について説明します。 この例では、GRUB v2.02が使用されます。 異なるGRUBバージョンをインストールする手順は同じです。 ただし、ソースコードパッケージはGRUBのバージョンによって異なる場合があります。 詳細については、Index of /gnu/grubをご覧ください。

手順

  1. Linuxサーバーにログオンします。

  2. 次のコマンドを順番に実行して、現在のgrubバージョンのgrub、grub-install、GRUB-mkconfigファイルのパスを確認します

    which grub
    which grub-install
    which grub-mkconfig
    • 上記のコマンドの出力が、1つ以上のファイルパスが存在しないことを示す場合、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. 次のコマンドを実行して、bison、gcc、makeなどのGRUB依存関係をインストールします。

    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. flexインストールパッケージが解凍されているディレクトリに移動し、buildという名前のフォルダを作成します。

      cd flex-2.6.4
      mkdir -p build
    5. buildフォルダーに移動し、flexをコンパイルしてインストールします。

      cd build
      ../configure

      する

    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などのLinuxオペレーティングシステムの以前のディストリビューションには、GRUB v2.02以降を使用します。

    1. toolsフォルダが存在するかどうかを確認します。 フォルダが存在しない場合は、フォルダを作成します。

      test -d /home/testuser/tools | | mkdir -p /home/testuser/tools
    2. toolsフォルダーに移動し、GRUB v2.02インストールパッケージをダウンロードします。

      cd /home/testuser/tools
      wget https://alpha.gnu.org/gnu/grub/grub-2.02~rc1.tar.gz 
    3. GRUB v2.02インストールパッケージを解凍します。

      tar xzf grub-2.02 ~ rc1.tar.gz
    4. GRUB v2.02インストールパッケージが解凍されているディレクトリに移動し、buildという名前のフォルダを作成します。

      cd grub-2.02~rc1
      mkdir -p build
    5. ビルドフォルダーに移動し、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オプションを削除してから、GRUBを再コンパイルします。

  6. 次のコマンドを実行して、GRUB v2.02がインストールされているか、GRUBがv2.02にアップグレードされているかを確認します

    grub-install -- version

次のステップ

  • GRUB v2.02がインストールされている場合、またはGRUBがv2.02にアップグレードされている場合は、Server Migration Center (SMC) を使用してサーバーをAlibaba Cloudに移行します。 詳細については、「移行プロセス」をご参照ください。

  • (オプション) サーバーの移行後にサーバーで以前のバージョンの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