新しいドライブにGRUBをインストールする方法は?

新しいドライブにGRUBをインストールする方法は?

CentOSを実行している仮想マシンがあります。

既存のCentOS VMに新しい仮想ディスクを接続し、新しく接続されたこのディスクにGRUBをインストールしようとしています。

後で新しく準備された起動可能なハードドライブとカスタムルートファイルシステムとカーネルを使用して、2番目の仮想マシンを起動します。

次の手順を試しました。

  • 既存の稼働中のCentOSマシンに新しい仮想ディスクを接続します。
  • 新しいパーティションが作成されますfdisk /dev/sdb。パーティションを分割する場合、オプションのデフォルトパーティションとパーティション番号1などのデフォルトオプションを選択しました。
  • ディスクフォーマットを使用してくださいmkfs.ext3 /dev/sdb1
  • ディスクをにマウントします/media/new_drive
  • GRUBがインストールされましたgrub-install /dev/sdb1 --root-directory=/media/new_drive/

その後、新しく準備されたハードドライブを持つ2番目の仮想マシンは起動しません。エラーが発生しますcould not read from the boot medium。 MBRが更新されていないようですが、新しいドライブにgrub-installGRUBがインストールされていることがわかります。/boot/grub

しかし、何よりも最悪のことは、既存のCentOS GRUBが破損していることです。 CentOS VMがハングし、黒い画面が表示され、唯一のテキストはGRUB

grub-install /dev/sdb1sdb1のMBRを変更しないのはなぜですか?これが新しいドライブにGRUBをインストールする正しい方法ではありませんか?

ベストアンサー1

私はgrub2の専門家ではありません(申し訳ありません)。しかし、grub-install行に追加すると、grubプロンプトで起動できるファイルが生成されるのを--skip-fs-probe防ぐことができることがわかりました。/boot/grub/device.mapこのパラメータがないと、grub-installはユーザーが言うようには実行しませんが、自分がユーザーよりもスマートで他のタスクを実行できると思います。

もう1つは、正しいgrubインストールを使用していることを確認することです(つまり、元のgrubではなくgrub2の場合)。 Centosの内部では問題ありませんが、SystemRecoveryCDを使用すると両方のバージョンが利用可能になりますgrub2-install

@wurtelが指摘したように、パーティションではなくドライブを指定する必要があります。 Grub2はディスクドライブ全体のセクタ0にインストールされます。この「スタブ」は起動時に実行されますが、次の起動手順のためにファイルをインストールするにはディスクの場所を知る必要があります。これがパラメータです。--root-directoryのための。 (私の考えでは。)

私は読んで、インターネット検索を介してgrub2バージョン1.99 ++では実際には機能しないman grub-installことがわかりました--root-directory。しかし、私の経験ではうまくいきました。実際のブートディレクトリを使用し--boot-directoryて参照する必要があるため、以下が提供されます。

grub-install /dev/sdb --skip-fs-probe --boot-directory=/media/new_drive/boot

おすすめ記事