Ubuntu9.10がinvalid environment blockエラーで起動できない場合の対処法
インストールから間もないUbuntu Studio 9.10ですが早速エラー爆発です!!
PCを起動したら「error: invalid environment block」とエラーを吐いて起動不能になりました。
ブートローダー(Grub2)のOS選択画面までは行くのですが、そこから先は同じエラーの繰り返しになってしまいます。
ググりまくっても日本語の情報はまったくHITせず、結局海外サイトの情報に流れ着きました。
こういうとき「ちゃんと英語勉強しておけば...」と毎度後悔するんですよね...
ちなみにキチンと結論が出た内容じゃないので、最後まで読んでから対処法を実効してください。
※速攻結論が知りたい方は最後の「2009年04月11日追記」を見てください。
invalid environment blockエラーの対処その1
検索の結果Launchpad.netのBug trackingに行き着きました。外人サンもやっぱり困ってましたw
Bug #439784 in grub2 (Ubuntu): "invalid: environment block"Binary package hint: grub2
grub gave this error invalid: environment block when after an unclean shutdown.
I ended up deleting grubenv and that worked to get me booting again but next time unclean shutdown it boots up and runs fsck? shows some inode stuff and next boot i get the message again.Looking at grubenv: it is showing it to be 0 bytes , when this problem occurs.
I also have copied grubenv a read only file from a good computer really has same effect as deleting it.
Reinstall grub still same problem.Running x64 karmic all updates
In anycase this errormessege while may show there's some bigger issue should not stop me from booting, should it?
どうも自分の場合と同じ様子です。
ブートローダー(Grub2)の設定ファイル?の「grubenv」が0バイトでまっさらになってます的な事書いてるのかな?
で、この件に関しての対処法があげられていました。
Comment #11 : Bug #439784 : Bugs : "grub2" package : UbuntuYes the comments above give you a workable way to recover your system.
You need to be able load a live linux operating system that can write your your filesystem.
I used a live-usb drive. You can use the ubuntu install cd for this purpose.
After booting into the live cd based environment, you need to mount the partition on your main system that contains /boot.
Then you can make the necessary modifications to grubenv as per comments above.
cd /boot/grub
rm grubenv
grub-editenv grubenv create
grub-editenv grubenv set default=0
grub-editenv grubenv list
default=0This should give a bootable system.
I assume this problem is related to the instabilities in ext4?
どうもLive CDでUbuntuを起動させて、起動しないUbuntuのHDDをマウントしてコマンドラインで /boot/grub/grubenv を削除して云々と書いてあるみたいです。
試しにgrubenvをgeditで開いたら
# GRUB Environment Block #####################################
これしか書いてありませんでした...0バイトというコトでしょうか?
invalid environment blockエラーの対処その2
ズバリそのものではないのですが、次にUbuntu日本語フォーラムでみつけたのがこの記事です。Ubuntu日本語フォーラム / Latitude D610へ9.10インストール後、起動しない早速、試してみたところ、結果は良好です。
私のような初心者でもできるよう、手順を明記しておきます。
1 LIVE CDで起動時する際、F6でオプションを選択し、Escキーを押します。
2 起動オプション file=/cdrom/preseed/ubuntu.seed boot=casper initrd=/casper/initrd.gz の'boot=casper'を'root=/dev/sda1'に
書き換えてEnterキーを押すとHDDから起動し、Ubuntuが立ち上がります。
3 端末を立ち上げます。
4 sudo nautilusと打ち込みEnterを押します。(パスワードを求められるので入力して下さい。)
5 メニューバーの'場所'からコンピュータ/ファイルシステムを開きます。
6 'boot' フォルダを開き、その中の'grub' フォルダを開きます。
7 その中から 'grub.cfg' を探し、「右クリック」「プロパティ」を選択します。
8 プロパティから「アクセス権」タブを選択して所有者:rootのアクセスを「読み込み専用」から「読み書き」に変更し、閉じます。
9 'grub.cfg' を右クリックし「geditで開く」を選択してファイルを開きます。
10 内容を確認し、以下の部分を探して下さい。
### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-14-generic" {
recordfail=1
if [ -n ${have_grubenv} ]; then save_env recordfail; fi
set quiet=1
insmod ext2
set root=(hd0,1)
search --no-floppy --fs-uuid --set ba123456-7890-abcd-efghijklmnop
linux /boot/vmlinuz-2.6.31-14-generic root=UUID=ba123456-7890-abcd-efghijklmnop ro quiet splash
initrd /boot/initrd.img-2.6.31-14-generic
}11 上の内容の4行目から6行目及び8行目を削除し、以下の内容に書き換えます。
### BEGIN /etc/grub.d/10_linux ###
menuentry "Ubuntu, Linux 2.6.31-15-generic" {
set root=(hd0,1)
linux /boot/vmlinuz-2.6.31-15-generic root=UUID=ba123456-7890-abcd-efghijklmnop ro quiet splash
initrd /boot/initrd.img-2.6.31-15-generic
}
12 内容を確認したら「保存」を行い、項目7・8の方法でアクセス権を「読み込み専用」に戻します。
13 再起動すると'hd0,1'(本体HDD=sda1)からブートし、Ubuntu 9.10 が立ち上がります。(解決)
invalid environment blockエラーの対処その?
前述の2つの方法を中途半端に実行したらナゼかエラーが解決しましたwその1の方を実際「grubenvの削除」まで実行したのですが、そこまでやってから他の説明がLinuxコマンドに存在しないコトに気づきました...
そのまま再起動かけて様子をみようと思ったらLive CDを抜くのを忘れて無意味に起動!
面倒くさくなってそのままその2の方法も自分流に実行して「とりあえず再起動してみるか」という気軽な気持ちで再起動かけたら普通に起動してしまいましたwww
という事でエラーの再現も不可能なので、どちらの方法で解決できたのか結論が出ていません。
その1の回答にあった「I assume this problem is related to the instabilities in ext4?(この問題はext4の不安定さに関連しているのではないか?)」というコメントを考えると、grubenvのファイルが破損して読込みエラーになったのが原因かもしれません。
削除したハズのgrubenvが削除前とまったく同じ内容で勝手に出来上がっていたので、ひょっとするとgrubenvを削除するだけでいいのかも?
もし同じエラーが発生してgrubenvの削除で対処できなかったら、その2も試してみてください。
2009年04月11日追記
再現性が無いとか言いつつまた発生してしまいましたwやはりgrubenvの削除だけでOKのようです。
以下に手順をまとめておきます。
- Live CDからUbuntuを起動
- 「メニュー>場所」から該当するUbuntuシステムの入ったHDDをマウント
- 「メニュー>アクセサリ>端末」からコマンドライン端末を起動
- 端末から「$ sudo rm /media/disk/boot/grub/grubenv」を実行
- Live CDを抜いて再起動
以上でgrubenvが削除されますが、再起動後に勝手に生成されるので問題ないみたいです。
root権限でパーミッションかかってるのでファイルブラウザからの削除はできないようなので、端末からsudoコマンドで削除しないとダメです。
grubenvのディレクトリは自分の環境の場合です。ファイルブラウザで該当HDDのgrubenvのプロパティで実際のディレクトリを確認してから実行してください。
HDDのディレクトリ異常なのかext4のファイルシステムのバグなのか分かりませんが、grubenvのファイルが原因なのは間違いないようです。
