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


46
error: file '/grub/i386-pc/normal.mod' not found.
grub rescue>

私に何ができる?私はただ座って見つめています。

約4年間使用していない古いネットブック(Dell Inspiron 1010)を見つけました。Windows XPをUbuntu 12.10に置き換えました。起動可能なUSBドライブを使用しました。インストールして再起動しました。normal.mod見つからないメッセージを受け取りました。

私は何をすべきか?タイプexitrebootまたはquit?再インストールする必要がありますか?


1
以下の回答は機能しません。これは機能します:OSを再インストールし、「何か他のことをする」に進み、パーティションテーブルを作成しますuse your windows partition as your primary boot device。その最後のステップは不可欠です。/ bootは使用しないでください。別の解決策があるかもしれません:起動中にブートデバイスを手動で変更してみてください。しかし、私はそれがうまくいくとは思わない。これは、17.10を含むUbuntuで持続している長年の問題です。ありがとうございました。
ウルフパック

これらの指示はどれもうまくいきませんでした。実際、さまざまな回復ツールを使用すると、問題が悪化しました。GRUBを再インストールすることはできましたが、lvm2を使用しているため、カーネルを起動できませんでした。何らかの目的でlvm2を使用している場合、この問題が発生すると、OSを再インストールする必要があります。私が知る限り、失敗したカーネル更新+ grub + lvm2の組み合わせからの回復はありません。lvm2は、ある時点でUbuntu Server LTSにプッシュされましたが、公式のサポートはほとんどありません。データをバックアップし、OSを再インストールしていますが、lvm2に再度アクセスすることはありません。私のレッスンを学びました。
CubicleSoft

1
私はすでにlvm2から切り替えて以来、問題はゼロになっています。私のインフラストラクチャのどれももうそれを使用しません。デフォルトのシステムレスキューソリューション(グラフィカルとCLIの両方)は、LVMを認識していないか、ほとんど認識していないため、LVMを使用しない十分な理由です。あなたの指示に従ってシステムを回復し、それらが機能したとしても、おそらく問題は将来再び起こるでしょう。OSの再インストールとLVMの廃止は、私にとって最良かつ最速のオプションでした。
CubicleSoft

1
私の場合、@ Wolfpackの問題は、normal.modを設定しないと、ubuntuを再インストールできない可能性があることです。lgoinは機能しません。私に何ができる?
HoCo_

1
@ Wolfpack'08ソリューションを回答として再投稿してください。ソリューションをコメントとして投稿すると、サイトの原則が回避されます。また「以下の回答は機能しません」というものもあります。
メレビウス

回答:


40

Grubには、ブート時にロードされる小さなコアイメージがあります。コアイメージは、さらなる機能を提供するモジュールを動的にロードします。i386-pc/normal.mod not foundgrubはnormal.modをロードできないことを示します。これは、通常のコマンドを提供するgrubモジュールです。normal.modをロードするには、grubにその場所を伝える必要があります。これを行うには、grubコマンドライン(別名Rescue Console)を使用できます。起動に問題がある場合、Grubはコマンドラインを起動します。または、grubの起動時にShiftキーを押したままにして(grubメニューを強制的に表示)、「c」キーを押して手動で起動できます。

grubを使用して、ドライブ、パーティション、およびファイルシステムを探索できます。必要がある:

  • lsまたはsearch.fileを使用してgrubインストールを見つけます
  • grub変数$ prefixおよび$ rootを設定します
  • 通常のモジュールをロードして実行します

以下は単なる例です。ローカルドライブとパーティションのセットアップに合わせて調整する必要があります。

normal.modはどこにありますか?いくつかの可能性のある場所を見てください

grub> search.file /i386-pc/normal.mod
error: no such device: /i386-pc/normal.mod

grub> search.file /grub/i386-pc/normal.mod
error: no such device: /grub/i386-pc/normal.mod

grub> search.file /boot/grub/i386-pc/normal.mod
hd0,msdos1

これを取得した場合"Unknown command 'search.file'"、search.fileコマンドが使用できないことを意味します。これはおそらく、grub rescue>プロンプトが表示されており、プロンプトが表示されていないためですgrub>。この場合でも、lsコマンドを実行してパーティションレイアウトの知識を使用してを見つけることができますnormal.mod

(hd0、msdos1)で見つけた

grub> ls (hd0,msdos1)/boot/grub/i386-pc/normal.mod
normal.mod

なぜグラブはそれを見つけられなかったのですか?
check $ prefix-grubディレクトリの絶対位置
(これはgrubがgrub-installによってインストールされるときに設定されます)

grub> echo $prefix
(hd0,msdos2)/boot/grub

check $ root-デバイス
grubを含まないパスのデフォルトデバイスは、最初にこれを$ prefixからデバイスに設定します

grub> echo $root
hd0,msdos2

ルートとプレフィックスが間違ったパーティション(hd0、msdos2)を指しているので、
$ rootと$ prefixをnormal.mod(hd0、msdos1)が見つかったパーティションに設定します

grub> set root=(hd0,msdos1)
grub> set prefix=(hd0,msdos1)/boot/grub

通常のモジュールをロードして実行する

grub> insmod normal
grub> normal

役に立つかもしれないいくつかの他のコマンド

lsはすべてのデバイスとパーティションをリストします

grub> ls
(hd0) (hd0,msdos5) (hd0,msdos1)

lsパーティション

grub> ls (hd0,msdos1)
        Partition hd0,msdos1: Filesystem type ext* - Last modification time
2014-05-08 15:56:38 Thursday, UUID c864cbdd-a2ba-43a4-83a3-66e305adb1b6 -
Partition start at 1024KiB - Total size 6290432Kib

lsファイルシステム(注/最後に)

grub> ls (hd0,msdos1)/
lost+found/ etc/ media/ bin/ boot/ dev/ home/ lib/ lib64/ mnt/ opt/ proc/
root/ run/ sbin/ srv/ sys/ tmp/ usr/ var/ vmlinuz initrd.img cdrom/

/ boot / grubの内部を見て
、i386-pcディレクトリが
存在することは、これがBIOSインストールであることを意味し、x86_64-efiディレクトリが存在すると、EFIインストールを示します。

grub> ls (hd0,msdos1)/boot/grub
i386-pc/ locale/ fonts/ grubenv grub.cfg


+1これらの手順に従ってubuntuのインストールを起動した後、実行しsudo grub-install /dev/sdXてgrubをインストールしました。LVMのインストールは、どうやら私のgrubを混乱させたと思います。
DavidG 14

「不明なコマンド 'search-file'を取得した場合は、あきらめる時間です。WindowsリカバリDVDを使用せずにUbuntuをインストールすることは決してしないでください。 。。十分ではない、それが台無し場合、彼らは本当に怒っされますので、グラブは、台無しにし、また、他の誰かのWindowsコンピュータ上のUbuntuをインストールすることはありません到達したら
スクーター

@Scooter ライブCD / USBを起動してGrubを再インストールする手順については、この回答を参照してください。
ベイン14年

@bain返信いただきありがとうございます。私の場合、Ubuntu isoディスクから再インストールしました。Ubuntuは、grubが台無しにされているか、または単に自動的に上書きされることを発見しましたが、Windowsを再び起動できるように戻ったところまでやり直しました。
スクーター14年

Grubレスキューシェルは、これらのコマンドのいずれもサポートしていないようです。「不明なコマンド 'search.file'」
Cerin

30

今日の午後、マシンでこれを解決しました。この問題の原因の1つは、インストーラーがEFIセキュアブートを持っていると考えているために、そうでない場合に誤ったGRUBファイルをロードしているためと思われます。

GRUB 2をインストールする必要があります。これを行うには、ライブインスタンスを起動し、ルートパーティションをマウントしてインストールする必要があります。

ライブインスタンスから、ルートパーティションがロードされているパーティションを見つけます。GPartedがこれを教えてくれます

sudo fdisk -l

ubuntuがインストールされているパーティションを探します。

パーティションを作成したら、マウントする必要があります。ルートパーティションが/ dev / sda5にあると仮定すると、次のようになります。

sudo mount /dev/sda5 /mnt

次にGRUB 2をインストールします

sudo grub-install /dev/sda --root-directory=/mnt [正しくする必要があるスペースがあるので、このコピーと貼り付けを使用してください。]

これが問題であると仮定すると、再起動するだけですべてが正常に動作するはずです。

このための元のソリューションはここからでした:http : //ubuntujournal.blogspot.com/2012/11/fix-new-install-of-ubuntu-1210-wont-boot.html


1
私のために働かなかった。私は同じ問題を抱えていて、まだ解決策を探しています。
ExpatEgghead

3
--root-directorygrub2の--boot-directoryになりました
bain

1
私のために働いた別の簡単な修正は、/ etc / grub.d / backupにあるgrupバックアップを/ boot / grubにコピーすることです。適切なフォルダーとパスについては、添付のreadmeを確認してください。
jhexp

私の場合、問題は2つのハードドライブがあり、BIOSシーケンスが最初に間違ったドライブを探していたことでした。そのドライブには、古い破損したgrubインストールがありました。
エウスブラシレイロ

あなたがFDISKから正しいものである言うカント場合は、このSOは(それは私が上だったデバイス/メディア/ Ubuntuの/いくつかの名を見つける助け)を助けることができるunix.stackexchange.com/questions/11311/...
マイケル・

2

私はフォーラムでその情報を見つけられなかったので、この質問はずっと前に尋ねられたという事実にもかかわらず、いくつかの情報を共有したいと思います。

Ubuntuがインストールされた大きな(たとえば1TB)パーティションがあり、/ boot /に追加のパーティションを割り当てなかった場合、そのようなエラーの原因である可能性があります。GRUBが起動すると、biosdiskドライバーを使用して/ boot / grub /ディレクトリから通常のドライバーを読み取ります。場合によっては、このディレクトリは、バイオディスクセクターでサポートされている最大数より後のどこかに物理的にハードドライブ上に配置されることがあります。この問題は、たとえばシステムのアップグレード後に発生する可能性があります。また、Ubuntu 13.10の新規インストール後、常にこの問題に直面していますが、マザーボード/ BIOSに依存するため、異なる可能性があります。

grubリカバリを使用して確認できます-正しいPREFIXとROOTを設定した後、ls / bootを試してください-何も表示されないが、ライブcd /フラッシュドライブから起動したときにそこにファイルが表示される場合-上記の問題がある場合。

システムをブート可能にするためにさまざまなことを行うことができますが、将来(dist-upgradesの間)その問題を回避する唯一の方法は、/ bootディレクトリを別の小さなパーティションに置くことです。


1

grub-rescueプロンプトが表示されたり、構成がLVMを使用している場合、他のソリューションは機能しない可能性があります。

レスキューディスクで起動します(ヒント:バックアップUSBディスクの専用パーティションに小さなディストリビューションを保持します)。

LVMを使用する場合は、lvdisplayまたは別のLVM関連のコマンドを使用して、ボリュームグループの名前を見つけます。それをアクティブにします(そうしないmount: special drive /dev/volumegroupname/partition does not existと、マウントしようとしたときにエラーが発生します):

vgchange -a y volumegroupname

次に、通常の/パーティションをマウントします。例/mnt :

mount /dev/volumegroupname/partition /mnt

いくつかの特別なデバイスもマウントします(/boot別のパーティションに配置する場合も同様です)。

mount -t proc none /mnt/proc
mount -o bind /dev /mnt/dev
mount -t sysfs /sys /mnt/sys

次にchroot、通常のディストリビューションに:

chroot /mnt

最後に、GRUB2を再インストールします—コマンドはディストリビューションによって異なる場合があります。これはSlackwareで動作します(ドライブがの場合/dev/sda):

grub-install /dev/sda
grub2-mkconfig -o /boot/grub2/grub.cfg

再起動すると完了です。


0

!選択した回答は機能しません。

これは機能します:

  1. OSを再インストールし、何か他のことをする」に進み、パーティションテーブルを作成し、
  2. Windowsパーティションをプライマリブートデバイスとして使用します

2番目のステップは不可欠です。

使用しないでください/boot

別の解決策があるかもしれません:起動中にブートデバイスを手動で変更してみてください。しかし、私はそれがうまくいくとは思わず、まだテストしていません。

これは、17.10を含むUbuntuで持続している長年の問題です。

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