Ubuntuアップグレード後にgrub_term_highlight_color not found

Ubuntu13.10をUbuntu14.04にアップグレードしたところ、
‘grub_term_highlight_color’ not found
とGrub Rescue画面が出て起動できなくなりました。

デュアルブートのWindowsも起動できません・・・
Grubが駄目になっているのですから当然です。

一応、既知のバグとなっているようですね。
https://bugs.launchpad.net/ubuntu/+source/grub2/+bug/1289977

この中に解決として以下の文章があります。
To fix the problem I had to boot to my persisting Ubuntu installation (e.g. using Super Grub Disk) and had to reinstall grub on my boot partition: “sudo grub-install –recheck /dev/sdx”
つまり・・・

sudo grub-install --recheck /dev/sdx

このコマンドが核心のようです。

で、無事起動した手順を記述します
(以下の海外サイトにあった手順を参考にしています)
http://askubuntu.com/questions/449680/upgrading-from-13-10-to-14-04-broke-grub

1:LiveCDで起動
まず何にしてもシステムを起動して中のファイルにアクセスしないといけません。
私はUbuntu13.10(64bit)のCDが手元にあったのでそれを使用しました。
起動できるならUSBなりなんでもいいです。

2:インストール済みのパーティションを把握
Live版で起動したら、インストール済みのUbuntuのパーティションを調べます。
lsコマンドで/media内のファイルを見ると楽かと思います。
私の環境では/media/ubuntu/199~という名称になっていました。
その後dfコマンドで一覧を表示し、/media内のファイルがどのデバイスに関連付られているかを見ます。
自分の環境では
/dev/sda5でした。

3:デバイスのマウント

sudo mount /dev/sda5 /mnt

/dev/sda5は手順2で見つけたデバイス名に置換えてください。

4:その他重要なファイルシステムのマウント

sudo mount --bind /dev /mnt/dev
sudo mount --bind /dev/pts /mnt/dev/pts
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys

5:chrootコマンドを実行し、起点のディレクトリを変更

sudo chroot /mnt

以下、rootユーザで実行されます。

6:GRUBを更新

update-grub

参考にしたサイトには「/boot/grub/grub.cfg」がない場合に行うとありますが、とりあえず実行しました。

7:GRUBの再インストール

grub-install /dev/sda

/dev/sdaは環境により書き換えてください。 番号は付けないようにします。
(つまり「/dev/sda5」なら「/dev/sda」となる。)

8:GRUBのチェック

grub-install --recheck /dev/sda

いよいよ核心のコマンドです。 手順7と同じく/dev/sdaは環境により書き換えてください。

9:chroot終了~再起動
CTRL+Dを入力し、chrootを終了します。
その後システムを再起動してください。

上記手順で、見事にGrubが起動しました。
めでたし めでたし。

ubuntu12.10をインストール後にgrub rescue

※‘grub_term_highlight_color’ not foundと表示されている状況でのgrub rescueはこちら

やや旧型のノートPCにWindowsXPとubuntuを同居させていました。

ubuntuは12.04を12.10にアップグレードして使用していたのだけれど、
ubuntuのパーテーションをまっさらにしてubuntu12.10を再インストールしてみました。
ようするに、WindowsXPはそのまま。ubuntuが入っていたパーテーションをきれいにして
12.10をクリーンインストールした形です。

インストール自体はすんなりと終了。
ところが!再起動後にgrub rescueの画面が・・・

とりあえず初体験の事なので、いろいろ調べながらやってみた時のメモです。

まずlsコマンドで、パーテーションの一覧を表示させます。

grub rescue> ls

表示は (hd0,msdos6) (hd0,msdos5) (hd0,msdos3) (hd0,msdos2) といった感じで表示されます。

次に、それぞれのパーテーションの中を同じくlsコマンドで見ていきます。
そして「boot/」ディレクトリがあるパーテーションを見つけます。

grub rescue> ls (hd0, msdos5)/

※ちなみに日本語キーボードの配列になっていないので注意
「(」 = shift+9
「)」 = shift+0
「=」 = ^

bootディレクトリの場所が分かったら以下のset prefixコマンドを入力します。

grub rescue>set prefix=(hd0,msdos5)/boot/grub

続いてinsmodコマンドを入力します。

grub rescue>insmod (hd0,msdos5)/boot/grub/i386-pc/normal.mod

上記のようにnormal.modというファイルに対してこのコマンドを行うのだけれど、
自分の環境だけなのか、12.10からこうなのか解らないのですが、
調べた時に出てきたのはboot/grub直下にnormal.modファイルがあるような記述でしたが
i386-pcディレクトリの中にありました。ここは環境とかで変わるのかもしれないので、
もし、上記のコマンドで駄目な場合はlsコマンドで、事前に調べたほうがよろしいでしょう。

次のコマンドでGRUBが起動されるはずです。

grub rescue>normal

さて、無事に起動したら端末上で以下のコマンドを実行します。
これをしないと、再起動後にまた上の手順をやるはめになります。

sudo grub-install /dev/sda

これで、無事に起動できるようになりました。
めでたし、めでたし。