grub2が実際にMBRがインストールされているドライブを確認する方法は?

grub2が実際にMBRがインストールされているドライブを確認する方法は?

私はSqueezeアップグレードの一部としてgrub2にアップグレードされたDebian / Squeezeシステム(最小のWoodyまでさかのぼる)を使用しています。すべてがうまくいきますが、ディスク構成はめちゃくちゃになります。

現在、システムはRAID1が適用された/、/home、および/bootパーティションを持つ2つの80GBドライブを実行しています。スワップについて疑問に思う人がいる場合に備えて、RAID1が適用された「/data」を持つドライブペアと2つのスワップ領域もあります。エリア)、しかし私はそれらに触れません)。

2 台の 130 GB SSD を追加し、少なくとも 80 GB ドライブのパーティションと同じくらい大きくパーティション化し、RAID1 を含めるように RAID1 を増やし、同期を待ってから削除してアレイの新しい SSD ドライブに切り替える予定です。したがって、SSDのみが残ります(これによりファイルシステムが大きくなります)。しかし、mdadm / ext3の議論はこの質問のポイントではありません...

これにより、コンピュータから取り外したい2つの古い80GB(IDE)ドライブが残ります。削除すると重要なMBRが消えるかと心配です。コンピュータが起動可能な状態であることを確認するにはどうすればよいですか?

だけでなく:

  • Squeezeアップグレードを実行したときに、grub2をどのドライブにインストールする必要があるかについていくつかの選択肢があったことを覚えています(デフォルトはすべてのドライブを選択しました)。しかし、当時はシステムにSSDはありませんでした。 SSD MBRにgrubをインストールするためにこのコマンドを再実行する方法は? (これはいくつかのパッケージのdpkg再構成のようです)。

  • grub2がどのドライブにインストールされていると思うかはどうすればわかりますか?マブソサ、最近/boot/grub/の下にはほぼ200個のファイルがあります!どこで見ることができますか?また、/boot/grub/device.map.autoには現在3つのドライブ(80GBのうち2つ、他のドライブのペアの1つだけが表示され、SSDはありません)のみが表示されますが、これは少し奇妙です。最新情報はどのように入手できますか? (修正する:赤ニシンです。 device.map.autoは数年前の遺物のようです。 grub-mkdevicemap アップデートでは、device.map が合理的に見えます。私の考えでは、この部分の編集証は、GRUBで見ることができるデバイスの順序を勝手に変える古いマザーボードのBIOSから来たようです。

結果:すべてが順調に進んでおり、2つの既存の80GB IDEドライブがすぐに動作し、RAID1 SSD上で実行される高速ブートシステムがあり、すべてのファイルシステムのサイズが新しいパーティションサイズに調整されました。私が探しているもう一つの「Grubパズルの欠落した部分」は、dpkg-reconfigure grub-pcMBRメンテナンスが必要なディスクのヒントです。 Aaronの答えは、実際にこれが期待どおりに機能していることを最も確信させてくれたので、この答えを受け入れました。

答え1

MBRは512バイトなので、GRUBがあるかどうかをすばやく確認できます。

dd if=/dev/sda bs=512 count=1 | xxd

これによりMBRがダンプされ、バイト0x17F = 383に「GRUB」が表示されます。

dd if=/dev/sda bs=1 count=4 skip=383

これにより、 " GRUB"が印刷され、dd出力が印刷されます。

より多くのドライブを拡張するために、bashループまたは他のものにラップすることができますfor。この操作を手動で実行したくない場合。

編集:終了10年後、ちょうどこの項目が再投票されたという通知を受け取りました。すごい!しかし、私は正直知らないGRUBは最新のGPTパーティションドライブの「保護MBR」に独自にインストールされるため、この回答のみを検討してください。潜在的なより現代的なUEFIブート方法です。

答え2

起動プロセスにはいくつかの手順があります(既存のPC BIOSについて説明します)。

  1. BIOSは起動ディスクの最初のセクタ(512バイト)を読み取ります。
  2. 最初のセクターのコードは、BIOSインターフェースを介して固定された場所からより多くのデータとコードを読み取ります。このBIOSインターフェイスは2つのハードドライブのみを表示します。ディスク 0 は最初のセクタを読み取る場所であり、ディスク 1 が 2 つ以上ある場合、予測しにくい別のディスクです。ブートセクタには、追加データを含むハードディスクを表すバイトが含まれています/boot/grub
  3. 前の手順でロードされたコードは、パーティション、ファイルシステム、その他の高度な概念を理解します。このデータには、(hd0)/boot/grub検索する場所grub.cfgと他のGrubモジュールを決定するために使用されるファイルシステムの場所(つまり同様の文字列)が含まれています。
  4. grub.cfg通常、メニューを表示してオペレーティングシステムを起動するために実行されます。

ブートセクタはgrub-setup通常呼び出しによって生成されますgrub-install。ブートセクタは、grub-installまたはコマンドライン(Linux構文で)grub-setupで指定されたディスクで終了します。を実行して、ディスクにブートセクタがあることを確認できますfile -s /dev/sda。新しいディスクを追加してそのディスクから起動しようとしているので、grub-install新しいディスクで実行する必要があります。grub-install同じディスクで何度も実行しても何の害もありません。

難しい部分は上記の2段階です。可能であれば、BIOSブートディスクにGrub(ディレクトリなど/boot/grub)を挿入します(または別の方向からアクセスするには、BIOSに同じディスクからブートするように指示します/boot/grub)。これがdevice.map働くところです。(hd0)含まれているディスクがマッピングされていることを確認してから、/boot/grubそのgrub-installディスクから実行してください。

ソフトウェアRAID-1構成に両方のディスクがある場合は、同じブートセクタを持つことになります。これは理想的な動作です。 BIOSブートディスクである1つのディスクに障害が発生した場合、別のディスクからブートしても問題はありません(同じ相対位置に同じバイトが含まれているため)。一部のパーティションのみがミラーリングされている場合は、ブートセクタをインストールするとディスクの1つにのみ影響します。 2番目のミラーコピーを含むディスクに関連付けるように変更した後、grub-install2番目のディスクで再実行する必要があります。device.map(hd0)/boot/grub

ステップ3はかなり複雑ですが、通常はすぐに実行されます。ステップ4では、GrubはUUIDでファイルシステムを検索したり、名前付きファイルを見つけたりするので、ディスクを指定するさまざまな方法について心配する必要はありません。

関連情報