web-dev-qa-db-ja.com

Windows 8は、起動するたびにGRUB2を変更します!

Windows 8とUbuntu 12.10の両方をUEFIスタイルでインストールしました(win8を最初に、次にubuntu)。 GRUB2はUbuntuとWin8の両方のエントリーを表示します。

Ubuntuを起動しても問題ありません。 GRUB2が変更されていないといつでも再起動できます。

Win8を起動するとストーリーが変わります。 GRUB2を使用してWin8を起動すると、Windowsブートマネージャー(Windows 8エントリのみ)に移動します。 Windowsを押すと、うまく起動します。再起動すると、GRUB2もWinローダーもありません。ブートローダーはありません。

LiveCDをブートし、ブート修復をダウンロードしましたが、すべてが戻ってきました。それは終わりのないサイクルです。

GRUB2はWinブートローダーをロードすることになっていますか?修正するにはどうすればよいですか?

詳しくは:

USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.efi"`

-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi
-rwxr-xr-x 1 root root 1350896 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgr.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/Microsoft/Boot/bootx64.efi
-rwxr-xr-x 1 root root 1263856 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/memtest.efi
-rwxr-xr-x 1 root root  897400 Dec  9 21:41 /boot/efi/EFI/ubuntu/grubx64.efi
-rwxr-xr-x 1 root root 1357480 Dec  9 21:41 /boot/efi/EFI/ubuntu/shimx64.efi

USER@MACHINE:~$ ls -l `find /boot/efi -iname "*\.bkp"`

-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Boot/bootx64.efi.bkp
-rwxr-xr-x 1 root root 1354480 Jul 25 20:57 /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi.bkp

USER@MACHINE:~$ Sudo parted /dev/sda print

Model: ATA ST31000524AS (scsi)
Disk /dev/sda: 1000GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt

Number  Start   End     Size    File system     Name                          Flags
 1      1049kB  316MB   315MB   ntfs            Basic data partition          hidden, diag
 2      316MB   420MB   105MB   fat32           EFI system partition          boot
 3      420MB   555MB   134MB                   Microsoft reserved partition  msftres
 4      555MB   751GB   750GB   ntfs            Basic data partition
 5      751GB   998GB   248GB   ext4
 6      998GB   1000GB  2000MB  linux-swap(v1)
7
yxd

Linuxを起動し、シェルに次の3つのコマンドを入力して、出力をここに投稿します。

ls -l `find /boot/efi -iname "*\.efi"`
ls -l `find /boot/efi -iname "*\.bkp"`
Sudo parted /dev/sda print

これらは、findコマンドを囲むバックティック(ほとんどのキーボードの「1」キーの左側)であることに注意してください。

結果は、通常の名前とブート修復によって作成された名前を変更したバージョンの両方を含む、ESP上のすべてのブートローダーのリストになります。ディスク上のすべてのパーティションのリスト。

また、どのようなコンピューターを使用していますか? (ブランドとモデル。)Windows 8に付属していましたか、それとも自分でインストールしましたか?

残念ながら、一部のメーカーは、プリロードされたWindows 8コンピューターでブートローダーを使用して非常に迷惑なゲームをプレイしています。私見、それらのインストールを吹き飛ばし、ゼロから始めることは、ますます良いソリューションのように見えます。


指定された新しい情報の編集/回答:

出力には奇妙なものや予期しないものは何もないので、Windowsの何かが独自の「壊れた」ブートローダーと見なされるものを「修復」しているように見えます。これには、詳細が必要です。これは、何が起こっているかを理解するのに役立ちます。

EFI(またはEFI 2.xのみのUEFI)の実装では、NVRAMエントリをチェックして、ブート時に実行するブートローダー(.efi拡張子を持つファイル)を決定します。ただし、一部の実装は壊れており、EFI/BOOT/bootx64.efiまたはEFI/Microsoft/Boot/bootmgfw.efiブートローダーのみを起動します。他のユーザーは、「Windows Boot Manager」または「Red Hat Enterprise Linux」という名前を持っている場合にのみ、他のブートローダーを起動します。

このタイプのバグを回避するために、Ubuntuブート修復ツールは、バイパスするバグと少なくとも同じくらいくて混乱する修正を実装します。これらの2つのデフォルトブートローダーの名前を.bkp拡張子に変更し、GRUB代わりにGRUBを調整して、新しい名前を使用してWindowsブートローダーを起動します。これはGRUBブートを取得しますが、Windowsが認識せず、それ自体を「修正」しようとする可能性があります。私はこれが起こっていることだと思う-Windowsが起動するとき、そのブートローダーが別のものによって上書きされているのを見ているので、問題を修正しようとします。

以下を試してみることをお勧めします。

  1. 製造元のWebサイトで、ファームウェアの更新があるかどうかを確認してください。存在する場合、このタイプのブートバグのバグ修正がある場合に備えて、ファームウェアを最新バージョンに更新します。
  2. Windowsを起動して再起動し、再起動するとWindowsに直接アクセスできることを確認します。ブート修復が設定する方法よりも標準的であるため、この点から始めたいと思います。
  3. Linux緊急ディスクをEFIモードで起動します。 (Ubuntuインストールディスクは、このために正常に機能するはずです。)
  4. 必要に応じて、efibootmgrユーティリティをインストールします。 UbuntuライブCDでは、Sudo apt-get install efibootmgrと入力してこれを行います。
  5. Sudo efibootmgr -c -l \\EFI\\ubuntu\\shimx64.efi -L "Windows Boot Manager" -p 2と入力します。指定されたとおりに、このコマンドexactlyを入力するように注意してください。ディレクトリパスの区切り文字として二重になったバックスラッシュも含まれます。これは、デフォルトのブートローダーとして起動するようにGRUBを設定し、バグがある場合に備えてファームウェアラベル「Windows Boot Manager」を与える必要があります。 (あなたはそれほど欺de的な名前ではなく、動作するほとんどのシステムで試すことができますが、あなたのためではないかもしれません。)セキュアブートを使用している場合notgrubx64.efishimx64.efiに置き換えることができますこのコマンドでは、システムにshimx64.efiが存在する場合、セキュアブートを使用していると思われます。
  6. 再起動してテストします。

この時点で動作する場合は、素晴らしいです。 GRUBで起動するが、GRUBがWindowsを起動できない場合は、EFI/Microsoft/Boot/bootmgfw.efiではなくEFI/Microsoft/Boot/bootmgfw.efi.bkpを参照するようにGRUB構成を調整する必要があります。

この方法でシステムを起動できないGRUBの場合、非常に脳が損傷したファームウェアが、Windowsの何かと組み合わされ、ブートごとに自動的に「損傷した」ブートローダーを「修正」する可能性があります、あなたの最善の(しかしい)修理の道を閉める。その場合、さらにいくつかの提案があります。

  • コンピューターが十分に新しい場合は、ストアに戻して新しいコンピューターを入手してください。返品する理由を、店舗とメーカーの両方に明確に伝えてください。
  • Windowsでブートローダーをチェックして「修復」しているものを探し、それを無効にします。その後、Ubuntuのブート修復を使用するか、手動で同様の操作を行って、すべてを機能させる必要があります。
  • 2番目のESPを作成し、Microsoftの名前を使用してGRUB(または別のLinuxブートローダー)をインストールします。パーティションID番号をジャグリングすることにより(たとえば、gdiskを使用する-エキスパートメニューのtオプションを使用する)、Windowsに独自のブートローダーを表示させながら、ファームウェアに希望のブートローダーを使用させることができます。ブートローダー。ただし、これは投機的高度です。まったく機能しない可能性があります。
  • rEFIndブートマネージャーを使用してUSBフラッシュドライブを作成します。 それをコンピューターに挿入し、USBデバイスからブートしてrEFIndを取得します。 WindowsおよびGRUBのいずれかを起動するオプションを提供します。少し追加の再構成を行うことで、Linuxを直接起動することができます。デフォルトでUSBデバイスから起動するようにファームウェアを設定できる場合、永続的なソリューションのためにUSBドライブを永続的に接続したままにしておくことができます。
  • WindowsからrEFIndまたはGRUBをインストールします。これにはあまり向いていませんが、Windowsからブートローダーをインストールする場合(rEFIndのWebサイトで説明) Windowsがブートローダーをジャグリングしているものは何でもバイパスするため、デフォルトのブートローダーを実行できます。

REFIndを含むソリューションを使用する場合は、 Secure Boot を使用してセットアップする必要がある場合があることに注意してください。 (この状況はやがて改善されますが、今のところまだ少し厄介です。)あるいは、ファームウェアでセキュアブートを無効にすることもできます。

これがお役に立てば幸いです!

5
Rod Smith

高速再起動機能を有効にしたWindows 8は、シャットダウン時にEFIブートローダーを含む一部のデータを「回復」します。したがって、デュアルブート環境のセットアップを完了してWindows 8を1回ブートすると、次回のブートでデュアルブート設定が失われます。そのため、高速再起動機能をオフにする必要があります。

管理者としてcmd.exeを起動し、次を入力します。

powercfg /h off

設定を確認します。

powercfg /a

0
alfioalex

推奨される修復の代わりに、これを試してください:

  1. ブート修復を実行->詳細オプション-> Backup and rename EFI filesを選択解除-> Restore EFI backupsを選択->適用。
  2. PCを再起動します
  3. Windowsを直接起動する場合は、UEFIファームウェア(〜BIOS)をセットアップしてUbuntuエントリを起動し、再起動します。
0
LovinBuntu

Microsoftはいつものように嫌いです。彼らは別のOSを必要としないため、ブートマネージャーを上書きするだけです。 Windows 8でbcdeditを探してください。今までそれを変更する方法を知りませんでした。

Windows 8がデフォルトのbootmgrを上書きしないようにする

0
Kouros