VistaとWindows8をそれぞれプライマリパーティションにインストールし、Grubをブートマネージャーとして使用しています。問題は、Windows 8のインストール後にGrubがVistaを直接起動できなくなることです。これは、Windows 8がVistaブートマネージャーを独自のもので上書きするためです。これには、Vistaに入る前に追加の再起動が必要になるという厄介な習慣があります(つまり、Grub -> WindowsBoot->再起動->再度Grub-> Vista)。 Vistaのブートマネージャーを復元するのは難しいことではありませんが、Windows 8パーティション自体はそれ自体では起動できないため、役に立ちません。
Windowsブートマネージャーを使用せずにGrubからVistaとWindows8を直接起動できるように構成するにはどうすればよいですか?
編集:少し明確にするために、私が欲しいのは単純です:VistaパーティションのVista bootmgr、Windows8パーティションのWindows8 bootmgr、MBRのGrubで起動するものを選択します。
Edit2:部分的な答えは次の場所にあります:
それで、私はなんとか機能する構成を得ることができました(c:\ bootをドライブe:にコピーし、bcdedit.exe
をいじって、いくつかのドライブをc:からe:に設定しました)。 Vistaがブートメニューを自動的にスキップすることを拒否したり、VistaがWindows 8 BCDから起動したり、その逆など、何らかの理由でまだ問題が残っています。
最初のステップとして、通常どおりVista、Windows 8、およびLinuxをインストールします。 Windows 8はそのブートマネージャーをVistaパーティションにインストールするため、Vistaブートローダーが破壊されます。
2番目のステップでは、C:\Boot\
ディレクトリをVistaからWindows8パーティションにコピーして、Windows8ブートローダーが属するようにします。 Windowsは一部のファイルをロックしているため、これはLinuxまたはWindows回復コンソール内から実行する必要がある場合があります。
3番目のステップでは、bcdeditを使用して、Windows8ブートマネージャーがVistaではなくWindows8パーティションを指すようにします。
bcdedit.exe /store E:\boot\bcd /set {bootmgr} device partition=E:
これは、リカバリモードのWindowsインストールディスクから実行する必要がある場合があります。
4番目のステップでは、Windowsリカバリディスクを使用して起動し、Windows Vistaの起動を修復するか、次の手順で手動で実行します。
bootrec /fixboot
これで、WindowsVistaおよびWindows8のブートローダーは、それぞれが属する独自のパーティションに配置されます。
ブートメニューを削除するには、VistaBCDからWindows8メニューエントリを削除し、Windows 8BCDからVistaエントリを削除する必要があります。timeout 0
とdisplaybootmenu No
は機能していないようです。自分の。これはEasyBCDで簡単に行うことができます。
もう1つ覚えておくべきことは、ほとんどのWindowsブート修正ツールは、ブートフラグが設定されたパーティションでのみ機能し、別のパーティションでの操作を許可しないことです。したがって、cfdisk
を使用して、適切なパーティションにブートフラグが設定されていることを確認する必要があります。 EasyBCDのようなツールでさえ常に間違ったドライブで動作しようとするため、これはプロセスの混乱のほとんどを引き起こしました(つまり、Windows 8パーティションは起動可能とマークされ、最初のパーティションにリセットする必要がありました)。
すべてが完了すると、update-grub
は両方のWindowsパーティションを適切に検出し、Windowsのブートメニューなしでそれぞれを直接起動できるようになります。