GRUBエラー:ファイル '/grub/i386-pc/normal.mod'が見つかりませんか?


17

最近、私のマシンにarchをインストールします(うまくいけば成功します)。しかし、再起動すると問題が発生しました。と言ってテキストで黒い画面を得た

Grub loading.
Welcome to GRUB!
error: file '/grub/i386-pc/normal.mod' not found.
Entering rescue mode...
grub rescue>

それ以来、私はグーグルで答えを探しています。ここで見つけでUbuntuフォーラムが、それが間違っていると言ったコメントを見ました。別の答えもありますが、物事を台無しにすることを恐れて、ライブCDからインストールしたいかどうかはわかりません。

パーティション分割、コマンド、チュートリアル、およびシステムの問題に絶えず遭遇した後も、この設定に7時間を費やした場合、私の恐怖を理解するでしょう。なんて嬉しい。

grubを動作させる簡単な解決策を知っている人はいますか?


2番目の提案(liveCDとchrootを使用)は、おそらく試してみる価値があります。または、そのバリエーション:私はarchユーザーではありませんが、以前にインストールしたことがあります。覚えていることから、chrootを含むいくつかのarchインストールの段階に関連して、その提案を熟考することができます。前の手順に戻ってarch CDをブートし、インストールにマウントしてchrootできる場合は、を試すことができますgrub-install。手順を繰り返す必要はありません。それらをガイドとして使用して、liveCDからchrootするだけです。
goldilocks

私は今コンピュータにいませんが、私はgrubのインストールを試みましたがうまくいかなかったと信じています。--
グリフィン

@Griffin「grub-install」が失敗したように動作しなかった、または問題を修正しなかった?
デロバート

@derobert grub-installは有効なコマンドではなかった\
グリフィン

@goldilocks 2番目も機能していません
グリフィン

回答:


9

本当に迷惑なこと...

どうやらディレクトリ/ boot / grub / i386-pcが存在しなかったため、最終的に/ usr / lib / grub / i386-pc全体を/ boot / grubにコピーすることで問題を解決しました。それで全部です。

cp -r /usr/lib/grub/i386-pc /boot/grub

それも行方不明だったので、私はそれをしました。残念ながら、それはそれを修正しませんでした。
Wolfpack'08

8

私は同様の問題の真っ最中です(偶然にもアーチにも)

Grubは誤った「プレフィックス」を使用しているため、このファイルを見つけて実行できません。

これがあなたのすることです。GRUBレスキューモードで起動し、起動する方法を見つけます。

最初にsetを実行すると、変数がリストされます。たとえば、私のものは

cmdpath=(hd0)
prefix=(hd1,msdos3)/boot/grub
root=hd1,msdos3

現在、プレフィックスはgrubがnormal.modファイルを探す変数です。私の場合、hd1、msdos3/ dev / sdb3と同じです(同様に、hd0、msdos1は/ dev / sda1になります)有効なパーティションのリストを表示するために必要なことは、lsに入力します

さて、私の場合、再び、grubが/ dev / sdb1にインストールされました。これは、アーチパーティションに/ bootとしてマウントされていたため、正しいプレフィックスは(hd1、msdos1)/ grubになります。

したがって、ブートするには、これを行う必要があります。

set prefix=(hd1,msdos1)/grub
insmod normal
normal

あなたの場合、grubをインストールしたパーティションを覚えるか推測する必要があります。間違っていると推測できますが、害はありません。insmodコマンドは失敗するだけで、別のパーティションで再試行できます。

この後、grubが通常どおりにロードされ、ブートするものをリストから選択できます。通常、このような混乱が発生した場合、grubをmbrに再インストール(grub-installを使用)すると恒久的に修正されるため、起動するたびにこれを行う必要はありません。しかし私は多くの困難を抱えていますそれを修正するのがそれほど簡単ではない場合に何をすべきかを見つけるをています(または、あなたがすべきことを共有します)。

これが失敗した場合のみ(例えば、プレフィックスは正しいが起動できない場合)、CDをライブまたはレスキューに頼って問題を回避する必要があります(それを避けるのが最善です)


これは少し古い質問かもしれませんが、誰かがライブCDやUSBを使って物事を修正するのではなく、実際にgrubレスキューを使用する方法に答えなければならないことがわかりました。私たちは常に私たちを助けるライブメディアを手元に置いているわけではありません。たとえそうだとしても、私たちの好みの環境で仕事をする方が通常は良いです。
セスタリアン

素晴らしい説明!(特に「間違った推測は何も傷つけない」というメモ)。Windowsパーティションを削除してもUbuntuに影響がないと誤って考えた後、デュアルブートウィンドウ+ Ubuntuシステムで同じ問題に遭遇しました。とにかく、この投稿はエラーの修正方法を理解するのに本当に役立ちました。どのパーティションにgrubが含まれているか思い出せなかったため、すべてをlsでリストアップし、正しい組み合わせになるまで1つずつ試しました:
リー

@リーはそれが誰かを助けてくれてうれしいです:)
セスタリアン

1
何かを修正することは常に良いことですが、修正方法を理解することはさらに良いことです:-)乾杯。
リー

あなたは天才です
アシシュDoneriya

5

Mint 15の新規インストール後、今日この問題が発生しました。

インストーラーは/boot/grub/x86_64-efiモジュールを作成しましたが、通常の/boot/grub/i386-pcモジュールは作成しませんでした。

Live CDからGrubを再インストールすると、問題が修正されました。

/ dev / sda/ dev / sda1をブートデバイスとブートパーティションに置き換え、Live CDから次のコマンドを実行します。

sudo mount /dev/sda1 /mnt
sudo grub-install --boot-directory=/mnt /dev/sda
sudo reboot

1

投稿いただきありがとうございます。Windows Vistaを搭載した古いDell OptiplexコンピューターにLinux CentOS 5.11を新規インストールした後、デュアルを作成するために、ほぼ同じエラーメッセージ「ファイル '/grub2/i386-pc/normal.mod'が見つかりません」を解決しました-ブートシステム。

私の状況を複雑にしたのは、GRUB(LEGACY)の代わりにGRUB2を使用する新しいFedora 20ディストリビューションをFEDORAデフォルトパーティションにインストールしようとして失敗したことです。次に、その上にCentOSを直接インストールして、Windowsパーティションを維持し、FEDORAパーティションを上書きしようとしました。

CentOSのインストール中に、最初の(Windows)パーティションだけを残して(hd0,0)、2番目の(ブート)パーティション(hd0,1)に/ bootディレクトリを作成しました。次に、その時点でMBRを変更しないことを選択し、代わりに他のオプション(別のパーティションのブートローダー)を選択しました。

インストールが成功したように見えた後、上記のエラーで再起動しました。

最初のパーティションのブート情報がGRUB2の場所を指し続けていると思われます。おそらく以前に作成されたFEDORA00パーティションが削除されたため、CPUはnormal.modを見つけることができませんでした。

私の手順は次のとおりです。

  1. Centos 5インストールCDからレスキューモード(「Linuxレスキュー」)で起動します。

  2. ローカルドライブをマウントします:chroot / mnt / sysimage

  3. シングルユーザーモードに切り替えます:su

  4. CentOSインストールの更新:yum update

  5. emacsエディターを使用して、「Microsoft Windows Vista」をgrub.confファイルに追加します:emacs /boot/grub/grub.conf、VistaをデフォルトOSにします。

    注: www.cyberciti.biz/faq/grubconf-for-windows-vista-or-xp-dual-boot/およびhttps://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/htmlを参照してください/Installation_Guide/sn-medialess-editing-grub-conf.html。)

  6. MBRの更新を試みます:grub-install / dev / hda

  7. 「GRUB」を表示した後にCPUがハングする、不明なGRUBエラーで再起動します。

  8. 元のWindows Vistaインストールディスク(または他のWindowsリカバリディスク)から再起動し、ディスクを修復するオプションを選択します。MBRが修復されたというメッセージを受け取ります。

  9. Windows Vistaを正しく再起動します。

よりエレガントなソリューションが存在すると確信していますが、これは私にとってはうまくいきました。また、http://help.ubuntu.com/community/Grub2/Upgradingで説明されているように、以下を試してGRUBからGRUB2への移行パッケージをダウンロードしようとしました。

$ yum install grub-pc

しかし、パッケージが見つかりませんでした。たぶん私はちょうど試してみるべきだったyum install grub


0

フリッターマウスに追加しています...

USBから起動し、i386フォルダーがある場合は、壊れたパーティションのi386フォルダーをルートとして開き、作業中のi386フォルダーをusbからコピーできます。


0

CentOS 6.7システムには2段階でアクセスできました。最初に、上記のflittermiceからのアドバイスに従い、ライブCDから起動し、/ dev / sda2を/ mntとしてマウントし、i386-pcフォルダーを/ mnt / usr / ...からコピーしました(どこにあるかがわかります)沿ってfind /|grep i386 / boot / grubに移動して再起動します。

これにより、grub rescue>ではなくgrub>が得られました;-)。

次に、こちらのガイドに従ってください[ https://www.linux.com/learn/tutorials/776643-how-to-rescue-a-non-booting-grub-2-on-linux/]検索して起動しました。私のパーティション。(hd0,1)はスワップによって取得されたため、(hd0,2)でした。

後で、おそらく/ bootがinodeサイズ256のext4上にあり、古いgrub1には128が必要であるため、このブートを「自動」にすることは不可能であることがわかりました。 kb.kristianreese.com/index.php?View=entry&EntryID=113]を使用して、インストール前にパーティションを準備します。


0

Ubuntuを再インストールします。「何か他のことをする」に進みます。Windowsインストールパーティションを、ブートローダーをインストールする場所として選択します。

既存のWindowsインストールがある場合、同じパーティションにgrubをインストールする必要があります。そうしないと、質問で問題が発生します。

これは、14、15、16、17 Ubuntuのすべてのバージョンとおそらく以前のバージョンに関連しています。ブートローダーをインストールする場所を尋ねられたら、/ bootパーティションを作成して選択しないでください。代わりに、Windowsパーティションを使用してください。

ありがとうございました。


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