2017/07/24

Ubuntu  14.04にUpgeade後に Error : file not found

Upgrade 後の起動時に Error message


Ubuntu 12.04のサポートが2017年4月末で終了するのでその前に Upgrade した。Upgrade自体はとくにエラーもなく1時間ほどで終了。Upgrade を反映させるために再起動をすると Grub が立ち上がるところで以下のエラーメッセージがでた。

Error : file not found
Error : file not found
Error : file not found

Press Any Key to Continue

ここで何かキーを押すとUbuntu 14.04 が起動し、特に不都合なし。しかし、このメッセージは毎回起動時に出てくる。



このエラーを解決するには


Terminal(端末) を起動して以下のコマンドを一行ずつ実行する。

  sudo grub-install /dev/sdX  (Xには a,b,c などのアルファベット文字が入る。*)
  sudo update-grub 
  sudo reboot


* Ubuntu では HDD や SSD などのドライブは sd と認識され、順番にそれぞれアルファベット文字と組み合わせて sda, sdb, sdc, ... と名前がつけられる。したがって、ここではOSがインストールされているドライブが sda と認識されているなら /dev/sda, sdb と認識されているなら /dev/sdb と入力すればよい。


エラーの原因


/boot/grub/grub.cfg の以下の部分をみるとその理由がわかる。
function load_video {
  if [ x$feature_all_video_module = xy ]; then
    insmod all_video
  else
    insmod efi_gop
    insmod efi_uga
    insmod ieee1275_fb
    insmod vbe
    insmod vga
    insmod video_bochs
    insmod video_cirrus
  fi
}
ここでは変数 feature_all_video_modul にnull以外の値が代入されていれば all_video.mod を、そうでないときには efi_gop.mod、efi_uga.mod、ieee1275_fb.mod、vbe.mod、vga.mod、video_bochs.mod、video_cirrus.mod をロードするように書かれている。つまり、
  • EFI system partition** がなく
  • feature_all_video_modul の値が null または値が代入されていないとき
上記の3つのエラーメッセージがでてくる。ieee1275_fb.mod 以外は /boot/grub/i386-pc フォルダ内に存在している。(参照:1,2)

** EFI system partition とはのパーティションの一つで、UEFIに準拠するコンピュータで使われる。UEFIとはOSとPCの各パーツのファームウェアとの接点の役割を記した仕様書であり、BIOS の役割を強化したソフトウェアまたはファームウェアといえる。(参照:5,6)


備考

 google で検索すると、Ubuntu 12.04 以降の Upgrade の後に起こる例が報告されている。正確は、上記の理由でBIOS を採用しているPCでUpgradeしたときにこのエラーメッセージがでる場合があるということだろう。しかし、現在 UEFI を採用するPCがほとんどだろうし、エラーメッセージが出ても何かきーを押せば通常どおりに起動するので、エラーは修正されないままだろう。


参照

  1. Grub errors: "File Not Found" repeated three times
  2. Where is documentation for [ x$feature_… = xy ] in grub.cfg? 
  3. "Error: file not found" when booting, then boots up anyway 
  4. Error while Booting Ubuntu 14.04
  5. EFIシステムパーティション
  6.  Unified Extensible Firmware Interfac