web-dev-qa-db-ja.com

デバイスにgrubがインストールされているかどうかを確認するにはどうすればよいですか?

ディスクにgrubがインストールされているかどうか、およびgrubの設定(特に、rootパラメーターの設定)であるかどうかを確認するにはどうすればよいですか?

ソフトウェアRAID1アレイの多くのディスクをチェックして、両方のディスクにgrubがインストールされていることを確認する必要があります。各ディスクのgrubには適切なルート値があります。

39
DrStalker

更新:

この回答は2009年のものであり、grub2ではなくgrub-legacyに適用されます。

fileを使用して、MBRでGRUB=を識別できます。

# file -s /dev/sda
/dev/sda: x86 boot sector; GRand Unified Bootloader, stage1 version 0x3
, stage2 address 0x2000, stage2 segment 0x200; partition 1:
ID=0xfd, starthead 1, startsector 63, 1044162 sectors; partition
2: ID=0x82, starthead 0, startsector 1044225, 1028160 sectors;
partition 3: ID=0xfd, starthead 0, startsector 2072385,
1951447680 sectors, code offset 0x48

root=パラメータはMBRには保存されません。これは、GRUBのmenu.lstファイルに保存されます。このファイルは、ファイルシステム(通常はルートfsの/ boot/grubディレクトリまたはのgrubディレクトリ)に保存されます。/bootファイルシステム-常にではありませんが、どこにあってもかまいません)。

上記のファイルの出力を解析し、menu.lstファイルが存在するディスク/パーティションを特定し、マウントして、読み込んで解析する必要があります。また、grub/defaultファイルを読み込んで、どのgrubメニューエントリがデフォルトであるかを確認することもできます。これは、おそらく最も関心のあるroot =パラメータを持つものだからです。

28
cas

代替方法

file -sは、Ubuntu Lucidでは動作しませんでした。fileコマンドのマジックファイルが古くなっているためです。マジックファイルがGRUBの変更に追いついていない場合にこれを行う別の方法は、次のようにddコマンドを使用してデバイスの最初の512バイトを調べることです:

user@Host:~$ Sudo dd bs=512 count=1 if=/dev/sda 2>/dev/null | strings
ZRr=
`|f
\|f1
GRUB
Geom
Hard Disk
Read
 Error

これにより、ddコマンドの出力がstringsコマンドを介して送信され、印刷できない文字が削除されます(転送統計は/dev/nullに破棄されます)。

エラーが発生したときにGRUB=と表示されるメッセージが表示された場合は、grubがインストールされています。

このパスワード保護された投稿で回答するためのubuntuforums.orgのlouibへの帽子のヒント: http://ubuntuforums.org/showthread.php?t=363372

好奇心が強い人のために、これはfile -sから得たものです。

user@Host:~$ Sudo file -s /dev/sda
/dev/sda: x86 boot sector; partition 1: ID=0x83, active, starthead 32, startsector 20
48, 337211392 sectors; partition 2: ID=0x5, starthead 254, startsector 337215486, 1434214
6 sectors, code offset 0x63

特にGRUBについては何もありません。

53
benrifkah

grub-emu を使用して、マシンが次に再起動したときにgrubが表示するメニューを表示できます。

$ Sudo apt-get install grub-emu
$ Sudo grub-emu

デスクトップマシンではメニューが期待どおりに表示されましたが、実際にカーネルをブートするふりをすると、「そのようなデバイスはありません」というエラーが表示されました。私はそれが予想される行動だと思います。

私のDigitalOcean VPSでは、サーバーは実際には正常に再起動しましたが、grubメニューにエントリが表示されませんでした。 (これは2013 VPSであるため、走行距離は異なる場合があります。)

grub-emuを実行する際の注意事項:

  • X-windowsでgrubを操作したい場合は、キーボードフォーカスを端末上でにする必要がありますポップアップしたウィンドウではなく、grub-emuを実行した場所。
  • cを押してからexitと入力すると、エミュレータを終了できます。
  • 終了後、ターミナルエミュレータの状態が悪い可能性があります(例:Enterは新しい行に表示されません)。 resetと入力して修正します。 (マシンが再起動しないことを心配しないでください。ターミナルをクリーンアップするだけです。)
7
joeytwiddle