Grubには、ブート時にロードされる小さなコアイメージがあります。コアイメージは、さらなる機能を提供するモジュールを動的にロードします。i386-pc/normal.mod not found
grubは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
use your windows partition as your primary boot device
。その最後のステップは不可欠です。/ bootは使用しないでください。別の解決策があるかもしれません:起動中にブートデバイスを手動で変更してみてください。しかし、私はそれがうまくいくとは思わない。これは、17.10を含むUbuntuで持続している長年の問題です。ありがとうございました。