「grub rescue>」クラッシュからの回復[終了]


25

もともとAskUbuntu.comに投稿された...

AskUbuntuは、 EOL(End Of Life)バージョンに関する質問を終了するポリシーを採用しています。同様にそれらを削除するためにボーカルの条件があります。この一般的な質問(これまでの342335ビュー)が失われる可能性を防ぐため、ここに改訂版を配置しています。--- docsalvager

「クラシック」システム...

  • Ubuntu 10.04(Lucid Lynx)ベースのPuppy Linux 5.2.8(Lucid)
  • GRUB 2ブートローダー

GRUB 2は、いくつかの*.modファイル(カーネルモジュール)をに配置し/boot/grubます。これらのファイルを削除すると(サウンドファイルが誤って配置されたと思われる)、再起動とプロンプトでエラーが発生しましたgrub rescue>

この状況で回復する方法は?


1
愚かな質問のように見えます。明らかに、削除されたファイルをバックアップから復元するか、grubを再インストールします(すでにそれを行う方法についてはたくさんの質問があります)
psusi 14

過去の視聴統計の絶対値は、昨日の新聞の統計とほぼ同じです。
アントン14

過去の新聞は数え切れないほどの犯罪を解決し、世界をより良い場所にした多くの問題解決に責任を負っています。
DocSalvager 14

DVDからレスキューモードで起動し、そこからgrubを再インストールするのがおそらく理想的だと思います。前述のデータ損失はパッケージ内のファイルに制限されるため、ほとんどの人にとってはおそらくはるかに簡単です。
ブラッチリー14

initrdから特定のファイルを取り出すことは賢くないとは思わないということではありません。私はそれが助けることであるように人々を混乱させる可能性が高いと思います。より一般的な手順は、レスキュー/リカバリモードでの起動です。
ブラッチリー14

回答:


43

この答えは、DocSalvagerの答えが役に立たない他の人々のためのものです。

  1. DocSalvagerの使用に従ってls、正しいハードドライブパーティションを見つけました。私の場合はそうでした(hd0,msdos5)
  2. 次に、次のコマンドを実行して、通常のgrubブートローダー画面に戻ります。

    grub rescue>  set boot=(hd0,msdos5)
    grub rescue>  set prefix=(hd0,msdos5)/boot/grub
    grub rescue>  insmod normal  
    grub rescue>  normal  
    
  3. Ubuntuを起動した後、端末から次のコマンドを使用してgrubブートローダーを修復しました。

    sudo grub-install /dev/sda 
    

このプロセスの視覚的なウォークスルーについては、このソースを参照しください。


6
これがクローズされる前に投稿してくれてうれしいです
-smac89

2
完璧-起動に必要なまさにその助け!パーティションレイアウトが変更されたため、sudo update-grub前にも実行しgrub-installました。
mwfearnley

insmod normalコマンドにはどれくらい時間がかかりますか?Enterキーを押すと、ubuntuがハングします。確かに、Oracle VirtualBoxのVMとして「実行中」です。
スナーク

1
更新:やがて戻ってきたerror: failure reading sector 0x8019a4 from 'hd0'ので、かなりの端末だと思います!
スナーク

伝説の答え!
ザック

28

GRUBレスキュークラッシュからの回復...

  • grub rescue>サポートされていないcdcpまたは、独自のバリエーションを除いて、他のファイルシステムコマンドlsは本当にの一種であるfindコマンド。
  • そのため、最初に、および他のブートイメージファイル/bootを含むディレクトリを持つパーティションを見つける必要がありましたvmlinuz...

    grub rescue>  ls  
    (hd0,4) (hd0,3) (hd0,2) (hd0,1)  
    
    grub rescue>  ls (hd0,4)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,3)/boot
    ... some kind of 'not found' message
    
    grub rescue>  ls (hd0,2)/boot
    ... grub ... initrd.img-2.6.32-33-generic ... vmlinuz-2.6.32-33-generic 
    
    • ls 引数なしでは、このシステムの4つのパーティションが返されます。
    • ls (hd0,4)/boot/bootpartitionにディレクトリが見つかりません(hd0,4)
    • ls (hd0,3)/boot/bootpartitionにディレクトリが見つかりません(hd0,3)
    • ls (hd0,2)/boot/bootパーティション上のディレクトリを検索し、必要な他のブートイメージファイル(hd0,2)が含まれていvmlinuzます。
  • grub rescue>プロンプトから手動で起動するには...

    grub rescue>  set root=(hd0,2)/boot  
    grub rescue>  insmod linux  
    grub rescue>  linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic  
    grub rescue>  initrd (hd0,2)/boot/initrd.img-2.6.32-33-generic  
    grub rescue>  boot  
    
    • パーティション上root/bootディレクトリを使用するように設定します(hd0,2)
    • grubモジュールをロードしますlinux
    • カーネルイメージを使用するようにそのモジュールを設定しますvmlinuz-2.6.32-33-generic
    • イメージを使用するようにinitrd(ini​​t RAM disk)を設定しますinitrd.img-2.6.32-33-generic
    • Linuxを起動します。
  • これにより、すべての基本的なファイルシステムコマンド(およびいくつか!)を含むBusyBoxコマンドラインプロンプトが起動します。

  • 次に、*.modファイルを/boot/grubディレクトリに戻すことができます...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • 再起動に成功しました!

も参照してください...


私は、BusyBoxの中に、ルートレベルでのbootフォルダを見つけることができません
souparno majumder

1
探しているvmlinuz、...ブートイメージはトップレベルのルートファイルシステムにある可能性があるため、スラッシュだけを使用してみてください。また、最上位のディレクトリも表示されます。ブートイメージが最上位のルートにない場合は、最も有望なディレクトリを見つけるまで試してみることができます。たとえば、次のようにls (hd0,1)/ls (hd0,2)/ls (hd0,2)/initramfs/、など。
DocSalvager

私の場合、実行後ls (hd0,7)/boot、が表示されますattempt to read or write outside of disk 'hd0'
デイジー

ドライブhd0のパーティションが7つ未満です。また、ドライブにパーティションの一部ではない未割り当て領域がある可能性もあります。
DocSalvager

1
insmod linuxの実行を許可する前に、プレフィックスを/ boot / grubに設定する必要がありました。
エミール
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.