« ワットチェッカー的なものを自作する (その3) | トップページ | ワットチェッカー的なものを自作する (その4) »

2014年8月13日 (水)

Ubuntuアップグレード (12.04 → 14.04.1) でgrubトラブル

何台かあるデスクトップPCの内の1台でUbuntu 12.04 LTSを動かしていたのだが、7月末近くに14.04.1 LTSがリリースされアップデート・マネージャーを使った自動アップグレードが可能になった。半月程経ち、大きな問題は無さそうなのでアップグレードを行ったが、タイトルの様にトラブルに見舞われてしまった。

/*-----------  -----------*/

Ubuntu LTSのアップグレード・スケジュール

今動かしているのが非LTSの場合、新しいリリースが利用可能になり次第自動アップグレードできるようになる。つまり13.10を使っているなら14.04がリリースされ次第アップグレード可能になるわけだ。しかし今使っているのがLTSだと、新しいリリースのマイナーバージョンが1つ上がって14.04.1にならないと自動アップグレードは可能にならない。安定性重視、と言うことだ。

Ubuntu 14.04.1 LTSは7月24日リリース予定だったが、特に遅れなくリリースされた模様である。

 

アップグレードの準備

最悪Ubuntuは再構築しても良かったので、念のためデータの入っている/homeパーティションだけバックアップしてアップグレードを開始した。

 

トラブル

アップグレードは大した問題もなく完了し、再起動までこぎつけた。しかし!再起動したら見慣れない画面で止まってしまった。

grub rescue> _

起動環境に何か問題があることは分かる。しかしお初にお目にかかる画面でどうしていいのか皆目見当がつかない。こういう時はGoogle先生頼みだ。

パーティションの切直しなどしていないのでgrubの何かが壊れた可能性が高い。とりあえず起動できるようにしてgrub-installすれば直るはずである。検索でヒットしたページを参考に起動を試みたが、何かおかしい。

grub rescue > set prefix=(hd0,msdos1)/boot/grub
grub rescue > insmod (hd0,msdos1)/boot/grub/i386-pc/normal.mod

error: file '/boot/grub/i386-pc/normal.mod' not found

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

error: not a directory

lsはnormal.modが在ると言っているのだがinsmodでは見つからない。ナンデ??

日本語の答えは見つからなかった。こういう時は英語で探し直すしかない。ナルホド、こういうことなの?

(MorrisseyJの答えの冒頭)

It seems that one cause of this problem is the installer thinking that you have EFI secure boot, when you don't and therefore loading the incorrect GRUB files.

この問題の原因の一つは、インストーラーが本当はそうじゃないのにEFIのセキュアブートになっていると考えて間違ったGRUBファイルをインストールしてしまう事らしい。

私の場合、問題になっているPCのCPUはNorthwoodコアのPentium4だ。10年以上使っている。もちろんUEFIなんかじゃあない。言うのが遅くなったがUbuntuは32ビット版だ。またハードディスクの区画はsda1=/、sda2=SWAP、sda3=/homeである。grubはsda1の/bootディレクトリー下にインストールされているはずだ。

もしかすると本当の原因は別にあるのかもしれないが、「grub rescue>」でどんなに頑張ってもダメな場合があると分かった。さっさとDVDかUSBメモリーからUbuntuを起動してgrub-installするのが吉である。手元に14.04の起動メディアが無かったので12.04のものを使った。ハードディスクのUbuntuが起動してからgrub-installをやり直せばよいから、とりあえず起動させるにはgrubのバージョンなどはあまり関係ない。起動メディアからUbuntuが立ち上がったら、

$ sudo mount /dev/sda1 /mnt

$ sudo grub-install /dev/sda --root-directory=/mnt
 

これで再起動。「file not found」が3行出てヒヤッとした。grub-installした時と環境が違っているからだろうか。しかし最終的にハードディスクからUbuntu 14.04.1が起動した。こうなればこっちのものだ。

$ sudo grub-install /dev/sda
 

これで再起動。「file not found」はもう出ない。dmesgなど確認しても問題なし。これにて一件落着。

 

今回のまとめ

自動アップグレードだったから問題が起こったのか、クリーンインストールでも同じ問題が起こり得るのか、定かではない。いずれにせよ古いハードウエアでUbuntuをアップグレードする際の要注意点である。

|

« ワットチェッカー的なものを自作する (その3) | トップページ | ワットチェッカー的なものを自作する (その4) »

パソコン・インターネット」カテゴリの記事

コメント

た、助かりました!!ありがとうございますーヽ(´▽`)/

投稿: | 2014年9月18日 (木) 14時53分

どういたしまして ´ω`)ノドモ

投稿: エンジニア | 2014年9月18日 (木) 17時53分

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: Ubuntuアップグレード (12.04 → 14.04.1) でgrubトラブル:

« ワットチェッカー的なものを自作する (その3) | トップページ | ワットチェッカー的なものを自作する (その4) »