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-install
GRUBがインストールされていることがわかります。/boot/grub
しかし、何よりも最悪のことは、既存のCentOS GRUBが破損していることです。 CentOS VMがハングし、黒い画面が表示され、唯一のテキストはGRUB
。
grub-install /dev/sdb1
sdb1の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