grubrescueを使用して移動した.modファイルを復元する


33

私は愚かなことをしました... Ubuntu 10.04(Lucid Lynx)がGRUB  2に切り替えたことを忘れてしまいました。GRUB2は大量の* .modファイル(カーネルモジュール)をに置きます/boot/grub。私はそれらが誤ってそこに置かれたサウンドトラックファイルであると思い、それらを移動しました。言うまでもなく、次の再起動はトラウマでした。私は今まで見たことのない何かを見せられました...「grub rescue>」プロンプト。

しかし、GRUBエラー修正:「エラー:不明なファイルシステム」の助けを借りて、回復することができました...

  • GRUBレスキューには、「cd」、「cp」、または「ls」のバリエーションを除く他のファイルシステムコマンドがないことがわかりました。
  • だから、最初にファイルと他のブートイメージファイル/bootを含むディレクトリを持つパーティションを見つける必要がありましたvmlinuz... (失敗した試行のメモリからの概算、および明確にするための空白行、docsalvageによって2014-07-10を追加しました)

    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 
    
  • パーティション上/bootvmlinuzファイルを含むディレクトリを見つけました。vmlinuz-2.6.32-33-generic(hd0,2)

  • 次に、「grub rescue>」プロンプトから手動で起動しました。次のコマンドは...

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

  • 次に、*。modファイルを/boot/grubディレクトリに戻しました...

    busybox>  cd /boot  
    busybox>  mv mod/* grub
    busybox>  reboot
    
  • 再起動は成功しましたが、それは大変な作業でした。

もっと簡単な方法はありますか?


1
私の意見では、ブート修復はずっと簡単だろう。使用の詳細については、Boot-Repairの複数の回答の 1つをご覧ください。
サーチャーロ

1
「最も簡単な」方法が常に最良の方法とは限りません。Live CDの使用を示唆するすべてのコメントに強く反対します。CD / DVDリーダーを持たないシステムでLive CDから起動することは非常に困難です。
シモン

/ bootディレクトリでパーティションを見つけることができません。lsコマンドのすべてのパーティションで、不明なファイルシステム出力が生成されます。
Rafedノール

1
あなたの投稿はカーネルとinitrdを手動で起動するのに非常に役立ちましたが、私のシステムはdev、sysまたはproc、etc / fstabまたはsbin / initを見つけることができませんでした。それは別のものに私を導いた後のカーネルをロードし、中に手動ブート方向で説明するようにルートを設定することを示唆し、GRUBのドキュメント:例えば grub> linux (hd0,X)/boot/vmlinuz-a.b.c-d-generic root=/dev/sdaXXとのパーティションで/boota.b.c-dカーネルのバージョンです。その後、システムが正常に起動しました!ありがとう!
マークミコフスキー14

1
[Fixing GRUB error:“ error:unknown filesystem” [duplicate]](askubuntu.com/q/142300/36961)これらの手順をカバーするもう1つの素晴らしいリンクは、Linux非ブートGRUB 2をレスキューする方法です。grub 2マニュアルも非常に便利です
マークミコフスキー14

回答:


5

いいえ。grubrescueを使用してシステムの状態から回復する最も簡単な方法を見つけたと思います。これは、システムを起動するのに十分な機能を提供する非常に最小限のシステムです。

ところで、私はあなたが見つけていなければならないと考えてい.modたファイルを実行し、insmod linuxまたはlinux、コマンドが失敗しただろう。

前述したように、他の唯一の方法は、Live CDを起動し、「壊れた」システムにchrootした後にgrub2を再インストールすることです。


あなたは絶対に正しいです!私はそれをやったことを忘れていました。将来の参考のために上記の元の投稿に追加されました。これらの状況では、注意を払うことについて、より規律を保つ必要があります。さらに編集が必要な場合はお知らせください。
DocSalvager

私はまたのようにカーネルをロードする際のルートを指定する必要がありましたgrubのドキュメント たとえば grub> linux (hd0,2)/boot/vmlinuz-2.6.32-33-generic root=/dev/sda2
マークMikofski

また、ノート、あなたは.modファイルを見つけた場合、あなたはフル機能GRUBに「GRUBの救出」を復元することができます。 # Inspect the current prefix (and other preset variables): set # Find out which devices are available: ls # Set to the correct value, which might be something like this: set prefix=(hd0,1)/grub set root=(hd0,1) insmod normal normal 出典:gnu.org/software/grub/manual/html_node/...
MegaBrutal

7

以下に、ブートエラーを支援する一般的および基本的な手順を示しますGRUB loading stage 1.5 error 15 (たとえば、Windowsを別のディスクドライブにインストールした後)。

  1. LiveDVD(Ubuntuデスクトップディスクなど)で起動します。

  2. ターミナルを開き、次のコマンドを使用してgrub設定を書き直します。

    • sudo mount /dev/sdXY /mnt
    • sudo grub-install --root-directory=/mnt /dev/sdX

どこ/dev/sdXにUbuntuがインストールされ/dev/sdXYているディスクがあり、Ubuntuがインストールされているディスク上のパーティションです。つまり、/dev/sdXYcontains /bootなどです。

fdisk -lUbuntuのインストール場所を確認するために使用します。


動作しませんでした。おそらく、指示がより具体的であれば、うまくいったはずです。
ティムスチュワート

CDドライブのないマシンでgrub2の問題が発生した場合、Gparted Live USBメモリスティックドライブを使用して回復できました。Gpartedをライブで起動しました。次に、ターミナルを起動してfdisk -l(1番ではなくellという文字)と入力しました。その出力から、ルートパーティションがあるパーティションを識別でき、そこから上記の優れた指示に従って、すぐに再びデュアルブートしました。 。
ヴィック

4
  1. ライブCDを起動します

  2. ターミナルを開く(CTRL + ALT + T)

  3. 次のコマンドを入力します。

sudo fdisk -l

Ubuntuパーティションを見つけます(最初のパーティションの場合は/ dev / sda1になります)

sudo mount /dev/sda1 /mnt

sudo mount --bind /sys /mnt/sys

sudo mount --bind /proc /mnt/proc

sudo mount --bind /dev /mnt/dev

sudo chroot /mnt

Grub2を再インストールします

sudo apt-get install --reinstall grub2

2
これはsudo mount /dev/sda1 /mntand よりも良い方法sudo grub-install --root-directory=/mnt/ /dev/sda && sudo update-grubですか?

4

システムをアップグレードしたときに同じ問題が発生しました。

次の簡単な手順をお勧めします。

  1. UbuntuのライブCDまたはライブUSBでシステムを起動します。
  2. ターミナルを開き、コマンドsudo add-apt-repository ppa:yannubuntu / boot-repair && sudo apt-get updateを実行します
  3. 次に、コマンドsudo apt-get install -y boot-repair && boot-repairを実行してブート修復をインストールします

  4. インストール後にブート修復を起動します。たとえば、メニューからSystem->Administration->Boot-Repair (Ubuntu 10.04のみ)を使用し、指示に従います。

    問題を把握して修正するには、15〜20分かかる場合があります。

さらにヘルプが必要な場合は、リンクhttps://help.ubuntu.com/community/Boot-Repairにアクセスしてください


0

ライブCDを起動し、ハードドライブをマウントし、rootとしてnautilusを開き、それらのファイルを/ bootにコピーできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.