13.10から14.04にアップグレードするとGrubが壊れました


11

UEFIシステムでデュアルブートUbuntu + Windows 8を使用しています。13.10からUbuntu 14.04にアップグレードするまで、すべて問題ありませんでした。

PCを起動すると、次のようなgrubレスキュー画面が表示されます。

Failed to open \EFI\Microsoft\Boot\grubx64.efi - 800000000000000E
Failed to load image
Failed to open \EFI\Microsoft\Boot\MokManager.efi.efi - 800000000000000E
Failed to load image
Welcome to GRUB!

error: symbol 'grub_term_highlight_color' not found.
grub rescue> 

ライブCD(13.10または14.10)からブート修復を使用すると、エラーが発生したことがレポートされ、このレポートが作成されます:http : //paste2.org/Y8mDwa0M

(ブート修復は、Ubuntu 13.10からパッケージをインストールすると言います)

しかし、何も変わりません。

ブート時にf12を押すと、HDD、USB、DVDリーダーから選択できるBIOS画面(ブートメニュー)が表示され、HDDをクリックすると3つの選択肢が表示されます。

起動するデバイスを選択します。

Windows Boot Manager 
ubuntu
Ubuntu

Windowsオプションを選択すると、grubのレスキューに戻ります。

他の2つのオプションでは、grubメニューが表示され、Ubuntuを起動できますが、ウィンドウオプションは機能しません。

私はもう何をすべきか分からない

更新

回答のおかげで、私は実際にすべてを試しました(USBスティック上のUbuntuの異なるバージョンからgrubを5回以上再インストールし、何度もブート修復を使用しましたが、何も機能しませんでした)

最後に、rEFInd(http://www.rodsbooks.com/refind/getting.html)を使用しています。これにより、grubを使用してUbuntuを起動できます(ただし、windowsは起動できません)。 rEFIndメニューを使用します。

しかし、もちろんそれは理想的な解決策ではありません

アップデート2:

ディスクが1つしかない:

ここに画像の説明を入力してください

アップデート3:

これは、grubのインストールまたはgrub-installの実行時に表示されるエラーです。

Installing for i386-pc platform. 
grub-install: Warning: This GPT partition label has no BIOS Boot Partition, the embed is not possible. 
grub-install: Warning: This embed is not possible. GRUB can only be installed in this configuration using blocklist. The blocklist however, are not reliable and it is not recommended to use ..
Installation completed, no errors reported.
Generating grub configuration file ... 
Found linux image: / boot/vmlinuz-3.13.0-24-generic 
Found initrd image: / boot/initrd.img-3.13.0-24-generic 
Found linux image: / boot/vmlinuz-3.11.0-19-generic 
Found initrd image: / boot/initrd.img-3.11.0-19-generic 
Found linux image: / boot/vmlinuz-3.11.0-7-generic 
Found initrd image: / boot/initrd.img-3.11.0-7-generic 
Found linux image: / boot/vmlinuz-3.11.0-5-generic 
Found initrd image: / boot/initrd.img-3.11.0-5-generic 
Found linux image: / boot/vmlinuz-3.11.0-4-generic 
Found initrd image: / boot/initrd.img-3.11.0-4-generic 
Found linux image: / boot/vmlinuz-3.11.0-3-generic 
Found initrd image: / boot/initrd.img-3.11.0-3-generic 
Found linux image: / boot/vmlinuz-3.11.0-2-generic 
Found initrd image: / boot/initrd.img-3.11.0-2-generic 
Found Windows Boot Manager on / dev/sda2 @ / EFI / Microsoft / Boot / Bootmgfw.efi 
Adding boot menu entry for the EFI firmware configuration 
done

(イタリア語からの翻訳)



これらのコマンドを試してみましたが、chrootにとらわれています。「chroot環境:私はエラーを取得します/ binに/ bashの' `runコマンドに失敗しました:Execの形式エラー

14.04に行く同じエラーを得た、これは私を助け:wiki.ubuntuusers.de/GRUB_2/Reparatur、freeseekの答えとほぼ同じ

1
@Larry以下の投稿を参照してください。方法3#1が問題です。32ビット変更ルートを使用して64ビットシステムを修復することはできません。
eyoung100 14

回答:


7

14.04では壊れたgrubでこれをテストしませんでしたが、これらの指示を使用しても問題が発生することはありませんでした:https :
//wiki.ubuntu.com/Grub2#Recover

まず、システムをライブcdまたはusbから起動する必要があります。それから

方法3-CHROOT

このインストール方法では、chrootコマンドを使用して、破損したシステムのファイルにアクセスします。chrootコマンドが発行されると、LiveCDは壊れたシステムの/を独自のものとして扱います。chroot環境で実行されるコマンドは、LiveCDのファイルシステムではなく、破損したシステムファイルシステムに影響します。

1) LiveCDデスクトップ(Ubuntu 9.10以降)を起動します。Live CDは修正するシステムと同じでなければならないことに注意してください-32ビットまたは64ビット(そうでない場合、chrootは失敗します)。

2)ターミナルを開きます([アプリケーション]> [アクセサリ]> [ターミナル])。

3)通常のシステムパーティションを決定します-(スイッチは小文字の「L」です)

sudo fdisk -l

わからない場合は、実行してください

df -Th  

正しいディスクサイズとext3またはext4フォーマットを探します。

4)通常のシステムパーティションをマウントします。

正しいパーティションを置き換えます:sda1、sdb5など。

sudo mount /dev/sdXX /mnt  

例:sudo mount / dev / sda1 / mnt

5)別のブートパーティションがある場合のみ:sdYYは/ bootパーティションの指定です(たとえば、sdb3)

sudo mount / dev / sdYY / mnt / boot 
6) 重要な仮想ファイルシステムをマウントします。
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 
7) 通常のシステムデバイスにChrootします:

sudo chroot / mnt 

8) /boot/grub/grub.cfgがないか正しくない場合は、/ boot / grub / grub.cfgを使用して作成します

update-grub 

9) GRUB 2を再インストールします:

正しいデバイスに置き換えます-sda、sdbなど。パーティション番号を指定しないでください。

grub-install / dev / sdX 

10)インストールを確認します(sdaなどの正しいデバイスを使用します。パーティションを指定しないでください):

sudo grub-install --recheck / dev / sdX 

11) chrootの終了:キーボードのCTRL-D

12) 仮想ファイルシステムのマウント解除:

sudo umount / mnt / dev / pts
sudo umount / mnt / dev
sudo umount / mnt / proc
sudo umount / mnt / sys 

13) 別の/ bootパーティションをマウントした場合:

sudo umount / mnt / boot 

14) LiveCDの/ usrディレクトリをアンマウントします。

sudo umount / mnt / usr 

15) 最後のデバイスのマウント解除:

sudo umount / mnt 

16) 再起動します。

sudo reboot 

GRUBを修復する他の方法もあります:GRUBを修復するにはどうすればよいですか?(Windowsをインストールした後にUbuntuを元に戻す方法は?)


1
ステップ3,4、および9が私の仕事をしました。ありがとう
ezdazuzena

1
ブート修復が悲惨に失敗しました-しかし、これは私にとって完璧に働いた
ジョンSkarpeteig 14

2

同じエラー「シンボル 'grub_term_highlight_color'が見つかりません」が、Grubのレスキューで止まりました。ブート修復(推奨オプション)を試しましたが、機能しませんでした!

解決策:起動可能なboot-repair.iso(http://sourceforge.net/projects/boot-repair-cd/)をダウンロードし、起動可能なusbディスクを作成しました。それから起動し、インターネットに接続し、「推奨される修復」を開始し、いくつかの手順で指示に従いました(grubを削除/アンインストールしてから新しいバージョンを再インストールしました)。あなたの場合、grubをアンインストールしてから、sdb1ではなくsda8に再インストールする必要があると思います。


これは私のために動作します:ブート修復CDイメージをダウンロードしました-Ubuntuのインストールはx64なので、x64を使用しました。次に、unetbootinを介してISOをインストールしました。定期修理とヴィオラを実施しました!
メタ

13.10から14.04にアップグレードした後、ブート修復付きのブート可能ディスク(64ビット14.04デスクトップバージョン)も機能しました。私の場合、ここの指示(2番目のオプション)に従い、ツールの[推奨される修復]をクリックすると、突然グラブが再び機能しました。
クレレボレ

2

私も同じ問題を抱えています。私の推測では、2つのハードドライブがあるため、システムは古いバージョンのGRUBがインストールされている間違ったドライブから起動しようとしています。私の解決策は、USBスティックでUbuntuを起動することでした(バージョンは関係ありません)。起動すると、次のコマンドが実行され、rootとして実行されます。

mkdir /tmp/drive
sudo mount /dev/sdX1 /tmp/drive
sudo mount --bind /dev /tmp/drive/dev
sudo mount --bind /proc /tmp/drive/proc
sudo mount --bind /sys /tmp/drive/sys
sudo chroot /tmp/drive
dpkg-reconfigure grub-pc

ここで、sdX1はシステムがインストールされているドライブでなければなりません。最後のコマンドを実行するときは、sdXドライブを選択する必要がありますが、複数回実行すると、各ドライブに新しいバージョンのgrubがインストールされ、ある程度の安心感が得られると思います。


私はマウントGET:マウントポイントを/ tmp /ドライブ/ devの存在しない
alemur

1
@Akmurは--bindを忘れたか、間違ったドライブをマウントしましたか?--bindは、usbのドライブ内のファイルシステムを取得し、/ dex / sdX1 / devをusedevice / devに置き換えます
eyoung100 14

@Akmurは、おそらく間違ったパーティションをマウントしました。sdX1に言及したとき、これは、dev、proc、sysディレクトリがすでに含まれているブートパーティションを参照する必要があります。これらが存在しない場合は、おそらく間違ったパーティションをマウントしている可能性があります。適切なパーティションをマウントしたと思われる場合は、mkdirを使用して、不足しているディレクトリを作成してください。
freeseek

1

13.10から14.04にアップグレードするときに同じエラーが発生しました。これらの指示は、私にとって少し気難しいものに見えました。

Super Grub Diskを搭載した起動可能なUSBドライブを作成することになりました。 http://www.supergrubdisk.org/

それから起動しました。起動時に、インストールされたOSを検出するように指示しました。Ubuntu 14.04のインストールが見つかったため、起動するように指示しました。問題なく起動しました。

システムにすでにブート修復がインストールされています。 https://sourceforge.net/p/boot-repair

それを実行し、デフォルトの変更を受け入れました。

シャットダウン。USBドライブをスロットから取り出し、電源を押し、息を止めて待機しました。

システムが正常に起動しました!問題が解決しました。


OPは、ブート修復が機能しないと述べたため、おそらく答えではありません。
mikewhatever 14

1

私の推測では、EFIパーティションに古いEFIファイルがあります。EFIの状況に固有のランチパッドのバグがあり、これがあなたのケースに対処していると思われます。他のすべての提案がうまくいかなかったので、私にとってはうまくいきました。修正は、EFIファイルを手動で更新することです。以下はウォークスルーです。の代わりにEFIパーティションを置き換える必要があることに注意してください/dev/sda1

  1. ライブCDから起動
  2. xtermを開く
  3. partedを使用してEFIパーティションを決定しますsudo parted -l(次のステップで/ dev / sda1を置き換えます)
  4. EFIパーティションをマウントします。 sudo mount /dev/sda1 /mnt
  5. ブートEFIファイルを更新します。 sudo cp /mnt/EFI/ubuntu/grubx64.efi /mnt/EFI/Boot/bootx64.efi

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.