web-dev-qa-db-ja.com

Ubuntu後にWindows8UEFIをインストール/更新-復元GRUB

そのため、GPTパーティションを使用したUEFI構成でWindows 8OEMコピーがインストールされたラップトップがありました。少し前にUbuntu13.xx(最新のもの)を一緒にインストールし、GRUB幸いにもWindowsを検出し、今まではすべて問題ありませんでした。

昨日、Windows 8.1にアップデートしたところ、ブートローダーが書き直されたようで、当然、Ubuntuを起動できません。それは私を直接Windowsに連れて行ってくれます。

GRUBを修復するにはどうすればよいですか?ヘルプページ/記事のほとんどは、UEFI + GPTAFAIKとはまったく異なるケースであるMBRパーティショニングについて説明しています。そして、UEFIについて話している記事は、Linuxをインストールした後に起動できないWindowsのインストールを修正することについてですが、私の場合はそうではありません。

Ubuntuを再び立ち上げるために試行錯誤された方法はありますか?

PS:あなたがそれを推薦する前に、いいえ。 WindowsがUEFIとともにインストールされている場合、EasyBCDまたは同様のツールはLinuxをWindowsブートローダーに追加できません。

3
tumchaaditya

MariusMatutiaeが示唆しているように、ブート修復を使用すると機能する場合があります。ただし、そのプログラムは賢明なこと以上のことをすることがあるので、私はそれを避けたいと思います。少なくとも3つのそれほど急進的でない解決策があります:

解決策1:ファームウェアを使用する

多くのEFIには、起動順序を調整できる組み込みの起動マネージャーが用意されています。 Ubuntu/GRUBエントリはおそらくまだ存在しているので、ファームウェアを使用して起動順序を調整するだけです。このアプローチの問題点は、EFIセットアップユーティリティが非常に多様であるため、これを行う方法について普遍的に適用可能な指示を提供することが不可能なことです。ただし、ファームウェアがこの機能をサポートしている場合は、オプションを取得する方法を理解したら、それを行う最も簡単な方法である可能性があります。

解決策2:Windowsでbcdeditを使用する

Windows bcdeditツールは、Windows以外のブートローダーをブートリストに追加できます。秘訣は、ファイルが何であるかを理解することです。あなたはこのようにそれを行うことができます:

  1. Windowsを起動する
  2. Administratorコマンドプロンプトウィンドウを開きます。 (これにもサードパーティのシェルを使用しないでください。bcdeditが一部のシェルで正しく機能しないという報告を目にしました。)
  3. mountvol S: /Sと入力してESPをS:としてマウントします(必要に応じてS:を別のものに変更できます)。
  4. コマンドプロンプトを使用して、S:をチェックしてUbuntuブートローダーを見つけます。おそらくS:\EFI\ubuntu\grubx64.efiまたはS:\ubuntu\shimx64.efiのいずれかです。後者が表示された場合は、安全に使用できるはずであり、使用する必要があるかもしれません。shimはUbuntuがセキュアブート(SB)を処理する方法ですが、SB以外のコンピューターではほとんど効果がありません。セキュアブートが非アクティブの場合、shimがインストールされている場合とされていない場合があるため、grubx64.efiを直接参照する必要がある場合があります。
  5. bcdedit /set {bootmgr} path \EFI\ubuntu\shimx64.efiと入力し、shimx64.efiが存在しない場合はgrubx64.efishimx64.efiに変更します。それが何か他のものである場合は、パスを変更します。
  6. 必要に応じて、bcdedit /set {bootmgr} description "Ubuntu"と入力して、EFI自体のブートマネージャーリストに表示される名前を設定します。 Ubuntuを好きなように変更します。

ブートローダーのファイル名がわかっている場合は、手順3と4をスキップできます。 (この方法でbcdeditを使用するために、ESPをマウントする必要はありません。)

この方法には、Windowsが起動順序を混乱させないという利点があります。Windowsが起動順序を無制限に調整しようとする場合があります。ただし、Windows 8.1以降にアップグレードした場合に、この問題の繰り返しを防ぐことができるかどうかはわかりません。

解決策3:Linuxを起動し、efibootmgrを使用する

Linuxは、ファームウェア独自のブートマネージャーを使用して起動できます。ブートマネージャーは、コンピューターごとに異なりますが、起動時にEscキーまたはファンクションキーを押すことでほとんどのコンピューターにアクセスできます。または、USBフラッシュドライブまたはCD-Rのブートマネージャーが不十分な場合は、 rEFInd を使用できる場合があります。 LinuxライブCDまたは緊急ディスクを使用して起動することもできますが、必ずEFIモードで起動してください。BIOSモードでの起動では不十分です。 Linuxに入ると、efibootmgrを使用して起動順序を調整できます。

  1. ターミナルウィンドウを開きます。
  2. Sudo efibootmgr -vと入力して、ブートプログラムのリストを取得します。 1つはLinux用で、shimまたはGRUBのいずれかを起動します。 BootOrderリストに注意してください。 Windowsエントリが最初になり、Ubuntuエントリがリストの後半に来る可能性があります。一部のエントリは混乱を招く可能性があります。それらを無視してください。 Ubuntuエントリを見つけてその番号を特定することに焦点を当てます(行の先頭のBoot####エントリ内)。
  3. Sudo efibootmgr -o {list}をUbuntu用、{list}がWindows用の場合、Sudo efibootmgr -o 5,0のように、Boot0005と入力し、Boot0000をブート番号のコンマ区切りリストに変更します。必要に応じてエントリを追加できますが、最初のエントリが最初に起動されるため、最初のエントリが最も重要です。

Ubuntuエントリが存在しない存在しない場合は、次のようにefibootmgrを使用して作成できます。

efibootmgr -c -d /dev/sda -p 1 -l '\EFI\ubuntu\shimx64.efi' -L "Ubuntu"

-d /dev/sdaを変更してディスク全体のデバイスをポイントし、-c 1を変更してパーティション番号を指定します。 (実際、/dev/sda1がデフォルトであるため、ESPが/dev/sda1でない場合にのみ、これらが本当に必要になります。)

9
Rod Smith

これには多くの異なる解決策があります。ソリューションの1つのセットでは、たとえばUbuntuのようなLinuxライブディストリビューションを使用する必要があります。 UbuntuイメージをUSBスティックに書き込み、そこから起動してインストールせずにUbuntuを試してください...、ターミナルを開いてから、インストールして使用してください Boot-Repair 、Ubuntuの公式ドキュメントに属するWebページの指示に従います。これは通常、ほとんどの起動の問題を修正するのに十分です。

または、Boot-Repairをダウンロードする代わりに、端末からHDDディスクをマウントすることもできます。

   Sudo mount /dev/sdaX /mnt

ここで、XはUbuntuの/を配置したパーティションの番号です。よくわからない場合は、上記のコマンドの前に、

   Sudo fdisk -l

どのパーティションがどれであるかを教えてくれます。次に、次のコマンドを発行します。

   cd /mnt
   Sudo chroot .
   Sudo update-grub

そして、これが行われると、Ctrl + D。

0
MariusMatutiae